<?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>219641</bug_id>
          
          <creation_ts>2020-12-08 06:48:35 -0800</creation_ts>
          <short_desc>WebGL GPU process IPC should use shared memory for asynchronous messages</short_desc>
          <delta_ts>2021-02-22 09:37:40 -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>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222274</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222275</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>220519</dependson>
    
    <dependson>221396</dependson>
    
    <dependson>221488</dependson>
    
    <dependson>221560</dependson>
          <blocked>217211</blocked>
    
    <blocked>218184</blocked>
    
    <blocked>220974</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonlee</cc>
    
    <cc>jsbell</cc>
    
    <cc>koivisto</cc>
    
    <cc>mkwst</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1712776</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-08 06:48:35 -0800</bug_when>
    <thetext>WebGL GPU process IPC should be faster than current WebKit IPC

Most likely design involves putting the remote graphics context method calls into a shared memory until a synchronisation point such as synchronised method call is invoked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712782</commentid>
    <comment_count>1</comment_count>
      <attachid>415640</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-08 07:02:44 -0800</bug_when>
    <thetext>Created attachment 415640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712784</commentid>
    <comment_count>2</comment_count>
      <attachid>415641</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-08 07:07:24 -0800</bug_when>
    <thetext>Created attachment 415641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713643</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-10 11:51:24 -0800</bug_when>
    <thetext>Seems like this is trying to solve a very similar problem to the problem Wenson is solving for DisplayList IPC. Rather than having two divergent implementations it would be much better to unify on a single set of primitives. 

(Even more ideally, if it turns out we can improve all IPC using a different model than we currently use, we should look into that, but it may be that for most uses the ergonomics of the existing approach make more sense).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713900</commentid>
    <comment_count>4</comment_count>
      <attachid>415993</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-11 07:17:14 -0800</bug_when>
    <thetext>Created attachment 415993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713944</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-11 10:22:12 -0800</bug_when>
    <thetext>&gt; Rather than having two divergent
&gt; implementations it would be much better to unify on a single set of
&gt; primitives. 

What, specifically, do you think is the single set of primitives that would be much better?

How, specifically, do you think we should evaluate whether that set of primitives is, in fact, much better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713994</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-12-11 11:35:03 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #5)
&gt; &gt; Rather than having two divergent
&gt; &gt; implementations it would be much better to unify on a single set of
&gt; &gt; primitives. 
&gt; 
&gt; What, specifically, do you think is the single set of primitives that would
&gt; be much better?

That&apos;s a really tough question, and one I am not able to answer. I am raising a concern here that what I see looks like a lot of code that is duplicating logic that is particularly tricky to get to right, and that feels worth bringing up.

Given this seems to be about WebGL, which has relatively similar characteristics to a 2d graphics context, I think a good starting point would be trying to generalize Wenson and others&apos; shared memory display list work.


&gt; How, specifically, do you think we should evaluate whether that set of
&gt; primitives is, in fact, much better?

This is would be subjective, but in my experience, reducing the number of ways to do similar things, and breaking them down into manageable re-usable components makes for an easier time building new things on top of them. And when it seems like we are duplicating things, taking a step back, and seeing if there is a collaboration that can be done can be useful.

There are of course times when multiple similar data structures or approaches are the right decision, whether for specialized memory or performance or compatibility reasons, but those, again in my experience, tend to be the exception and not the rule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714043</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-11 12:37:30 -0800</bug_when>
    <thetext>&gt; &gt; What, specifically, do you think is the single set of primitives that would
&gt; &gt; be much better?
&gt; 
&gt; That&apos;s a really tough question, and one I am not able to answer. I am
&gt; raising a concern here that what I see looks like a lot of code that is
&gt; duplicating logic that is particularly tricky to get to right, and that
&gt; feels worth bringing up.

What, specifically, has been duplicated?

How, specifically, should it be de-duplicated?

&gt; Given this seems to be about WebGL, which has relatively similar
&gt; characteristics to a 2d graphics context, I think a good starting point
&gt; would be trying to generalize Wenson and others&apos; shared memory display list
&gt; work.

&apos;staring point&apos; seems to imply that nothing else comes before it. That would mean setting aside this patch.

A few problems with that proposal:

(1) Setting aside (mostly) working WebGL code has the concrete downside that it moves progress backwards on WebGL.

(2) The shared memory display list is currently a performance regression. This bug report is about getting a speedup. Standardizing on a regression is not a good way to get a speedup.

(3) MessageStreamReceiver, being lower level and more generic, is more likely in my opinion than the shared memory display list to be a reusable abstraction. So, the proposal may defeat its own goal statement.

(4) The proposal is not falsifiable. It does not include any condition under which we could change course and choose not to share code, nor any test for such a condition. In my experience, software and software engineering practices are more successful when they are tested.

(5) Sharing does not include any stated upside. &quot;easier time building new things on top of them&quot; comes close, but doesn&apos;t specify what else we need to build on top, or why it matters. The obvious counter-argument is YAGNI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714573</commentid>
    <comment_count>8</comment_count>
      <attachid>415993</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-14 14:09:05 -0800</bug_when>
    <thetext>Comment on attachment 415993
Patch

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

&gt; Source/WebKit/ChangeLog:28
&gt; +        stream andm processing will continue once the out-of-line

and

&gt; Source/WebKit/ChangeLog:36
&gt; +         - Simple things work
&gt; +         - Buggy in certain conditions (asserts/crashes)

Seems like this is not ready to land yet? I&apos;ll mark it r- for now to indicate it is not ready.

&gt; Source/WebKit/ChangeLog:48
&gt; +        No new tests, tested by existing tests.

Do we have preliminary perf data from this patch?

&gt; Source/WebKit/Platform/IPC/Decoder.cpp:195
&gt; -    
&gt; +

Whitespace change

&gt; Source/WebKit/Platform/IPC/Decoder.h:58
&gt; +    static constexpr size_t streamMessageAlignment = alignof(uint64_t);

What are we trying to achieve with this alignment setting? Is the goal to enforce a minimum alignment sufficient to read any type?

&gt; Source/WebKit/Platform/IPC/Decoder.h:59
&gt; +    static constexpr size_t outOfLineStreamMessageSize = sizeof(uint64_t) * 2;

Why 2?

&gt; Source/WebKit/Platform/IPC/Decoder.h:161
&gt; -    
&gt; +

Whitespace change

&gt; Source/WebKit/Platform/IPC/DestinationStream.h:39
&gt; +class DestinationStreamBase {

I think this might read more clearly as a data member named DestinationStream (or just Stream), rather than a base clase. A stream reader/writer has a stream to read/write, but is not itself a stream.

&gt; Source/WebKit/Platform/IPC/DestinationStream.h:51
&gt; +        uint64_t cacheLinePadding[2];
&gt; +        Atomic&lt;size_t&gt; writeOffset;

I think you can use alignas instead of cacheLinePadding.

&gt; Source/WebKit/Platform/IPC/DestinationStream.h:57
&gt; +    size_t adjustOffset(size_t offset) {

This function could use a more specific name. I think the adjustment being performed here is wrapping, right?

&gt; Source/WebKit/Platform/IPC/DestinationStream.h:71
&gt; +    static constexpr size_t kReadLimitSleepTag = 1 &lt;&lt; 31;

I think this indicates that the reader is sleeping, so I would call it kReaderIsSleepingTag instead.

But also: commitWrite() doesn&apos;t seem to consult this tag. Is that a bug?

&gt; Source/WebKit/Platform/IPC/DestinationStream.h:107
&gt; +    void write(uint8_t*&amp; ptr, size_t&amp; capacity)
&gt; +    {
&gt; +        size_t writeLimit = std::min(header().readOffset.load(std::memory_order_acquire), m_dataSize);
&gt; +        alignedSpan(ptr, capacity, m_writeOffset, writeLimit);
&gt; +    }
&gt; +    void writep(uint8_t*&amp; ptr, size_t&amp; capacity)
&gt; +    {
&gt; +        size_t writeLimit = std::min(header().readOffset.load(std::memory_order_acquire), m_dataSize);
&gt; +        alignedSpan(ptr, capacity, m_writeOffset, writeLimit);
&gt; +    }

What&apos;s the difference between these two functions?

&gt; Source/WebKit/Platform/IPC/DestinationStream.h:120
&gt; +        if (readLimit != expectedReadLimit)
&gt; +            return WakeUpReader::Yes;
&gt; +        return WakeUpReader::No;

Should we check kReadLimitSleepTag here?

&gt; Source/WebKit/Platform/IPC/Encoder.h:148
&gt; -    
&gt; +

Whitespace change

&gt; Source/WebKit/Platform/IPC/MessageStreamReceiver.h:51
&gt; +            ASSERT(decoder.isValid());

Probably need a stronger check here.

&gt; Source/WebKit/Platform/IPC/MessageStreamSender.h:52
&gt; +            Thread::yield();

This is probably OK for now, but I think we should switch to using a semaphore (for both reading and writing). See discussion in https://bugs.webkit.org/show_bug.cgi?id=219586.

&gt; Source/WebKit/Platform/IPC/MessageStreamSender.h:64
&gt; +            auto wakeupResult = m_stream.commitWrite(Encoder::outOfLineStreamMessageSize);

Since the StreamMessageOutOfLine message is a flag, why does it need size at all? Are we trying to overload the read operation in some way? If so, can we do something more explicit instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714722</commentid>
    <comment_count>9</comment_count>
      <attachid>416239</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-15 06:18:07 -0800</bug_when>
    <thetext>Created attachment 416239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714726</commentid>
    <comment_count>10</comment_count>
      <attachid>416240</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-15 06:45:22 -0800</bug_when>
    <thetext>Created attachment 416240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714730</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-15 06:49:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/72340651&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714731</commentid>
    <comment_count>12</comment_count>
      <attachid>416239</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-12-15 06:54:09 -0800</bug_when>
    <thetext>Comment on attachment 416239
Patch

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

Very cool

&gt; Source/WebKit/Platform/IPC/DestinationStream.h:50
&gt; +// DestinationStreamSender and DestinationStremaReceiver use StreamBuffer to communicate.

typo &apos;DestinationStremaReceiver&apos;

&gt; Source/WebKit/Platform/IPC/DestinationStream.h:214
&gt; +    size_t len(size_t offset, size_t limit)

WebKit generally prefers full words, length instead len

&gt; Source/WebKit/Platform/IPC/DestinationStream.h:299
&gt; +    size_t len(size_t offset, size_t limit)

here too

&gt; Source/WebKit/Platform/IPC/Encoder.cpp:225
&gt; -
&gt; -    std::memset(m_buffer + m_bufferSize, 0, alignedSize - m_bufferSize);
&gt; -
&gt; +#if 0
&gt; +    if (m_bufferSize &lt; alignedSize)
&gt; +        std::memset(m_buffer + m_bufferSize, 0, alignedSize - m_bufferSize);
&gt; +#endif

some disabled code here

&gt; Source/WebKit/Platform/IPC/MessageStreamSender.h:61
&gt; +            encoder = makeUnique&lt;Encoder&gt;(Messages::RemoteGraphicsContextGL::StreamWakeUp::name(), destinationID);

I guess RemoteGraphicsContextGL here should be something more generic in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714733</commentid>
    <comment_count>13</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-15 07:02:29 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #8)
&gt; &gt; Source/WebKit/ChangeLog:48
&gt; &gt; +        No new tests, tested by existing tests.
&gt; 
&gt; Do we have preliminary perf data from this patch?

I added couple of examples. IIRC current ToT MotionMark for me is 800 pts, and this new one is 4500pts and non-pup is 8800 pts.

 
&gt; &gt; Source/WebKit/Platform/IPC/Decoder.h:58
&gt; &gt; +    static constexpr size_t streamMessageAlignment = alignof(uint64_t);
&gt; 
&gt; What are we trying to achieve with this alignment setting? Is the goal to
&gt; enforce a minimum alignment sufficient to read any type?

That&apos;s the sort-of-goal of the Encoder/Decoder when encoding a normal message.
A stream message must be encoded with similar restrictions, since if the message does not fit to the stream, it must be sent out of line.
The current Encoder is not able to &quot;stop&quot;, so we must convert it on-the-fly to encode a normal message.
The current &quot;coders&quot; e.g. the code using Encoder, are not polymorphic, so we cannot create a StreamEncoder and &quot;normal&quot; Encoder.

It&apos;s not ideal.

Added this as a hand-wavy comment in Encoder.h

&gt; &gt; Source/WebKit/Platform/IPC/Decoder.h:59
&gt; &gt; +    static constexpr size_t outOfLineStreamMessageSize = sizeof(uint64_t) * 2;
&gt; 
&gt; Why 2?

This is the message header size. Added this as a comment in the Encoder.h



&gt; &gt; Source/WebKit/Platform/IPC/MessageStreamSender.h:64
&gt; &gt; +            auto wakeupResult = m_stream.commitWrite(Encoder::outOfLineStreamMessageSize);
&gt; 
&gt; Since the StreamMessageOutOfLine message is a flag, why does it need size at
&gt; all? Are we trying to overload the read operation in some way? If so, can we
&gt; do something more explicit instead?

Items in the normal message are:
[message header][message data]

So items in the stream buffer are:
[message header][message data]

&quot;Out of line message&quot; in the stream buffer is:
[message header with OOL bit on]

The reason for the stream message having the message header encoded is explained above: it&apos;s not easy currently to encode the message so that the format would be different in stream message than in normal message.

The encoding part is a bit bad, so indeed that might be something to refine.
 
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/Decoder.h:161
&gt; &gt; -    
&gt; &gt; +
&gt; 
&gt; Whitespace change
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/DestinationStream.h:39
&gt; &gt; +class DestinationStreamBase {
&gt; 
&gt; I think this might read more clearly as a data member named
&gt; DestinationStream (or just Stream), rather than a base clase. A stream
&gt; reader/writer has a stream to read/write, but is not itself a stream.

Done. (It makes it a bit clunkier in some ways, but might be remedied if the implementation is changed to a different circular buffer scheme, see the FIXME.)


&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/DestinationStream.h:51
&gt; &gt; +        uint64_t cacheLinePadding[2];
&gt; &gt; +        Atomic&lt;size_t&gt; writeOffset;
&gt; 
&gt; I think you can use alignas instead of cacheLinePadding.

So the idea is not to align, if that was what you thought the idea was?
(The idea was that if the two variables are adjacent in memory, they may fall into same cache line. 
I seem to recall this may create (a very slight?) bottleneck: even if the variables are distinct, they are shared from the processors perspective)
or did you mean I could use something like &quot;alignas(uint64_t[2])&quot; ? I did not think of that, I&apos;ll see if that can be used..

&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/DestinationStream.h:57
&gt; &gt; +    size_t adjustOffset(size_t offset) {
&gt; 
&gt; This function could use a more specific name. I think the adjustment being
&gt; performed here is wrapping, right?

Changed to wrapOffset.

&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/DestinationStream.h:71
&gt; &gt; +    static constexpr size_t kReadLimitSleepTag = 1 &lt;&lt; 31;
&gt; 
&gt; I think this indicates that the reader is sleeping, so I would call it
&gt; kReaderIsSleepingTag instead.
&gt; 
&gt; But also: commitWrite() doesn&apos;t seem to consult this tag. Is that a bug?

It does, but in a bit subtle way. The sender knows what it wrote, so it just checks if the value is still there.
I added an comment.

&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/DestinationStream.h:107
&gt; &gt; +    void write(uint8_t*&amp; ptr, size_t&amp; capacity)
&gt; &gt; +    void writep(uint8_t*&amp; ptr, size_t&amp; capacity)

&gt; 
&gt; What&apos;s the difference between these two functions?

Debugging leftover, sorry. Removed.

&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/DestinationStream.h:120
&gt; &gt; +        if (readLimit != expectedReadLimit)
&gt; &gt; +            return WakeUpReader::Yes;
&gt; &gt; +        return WakeUpReader::No;
&gt; 
&gt; Should we check kReadLimitSleepTag here?

So it&apos;s the &quot;if readLimit is different than what I wrote there previously&quot;.
 
&gt; &gt; Source/WebKit/Platform/IPC/MessageStreamReceiver.h:51
&gt; &gt; +            ASSERT(decoder.isValid());
&gt; 
&gt; Probably need a stronger check here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714735</commentid>
    <comment_count>14</comment_count>
      <attachid>416242</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-15 07:10:23 -0800</bug_when>
    <thetext>Created attachment 416242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715766</commentid>
    <comment_count>15</comment_count>
      <attachid>416533</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-18 11:21:37 -0800</bug_when>
    <thetext>Created attachment 416533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715795</commentid>
    <comment_count>16</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-12-18 13:15:51 -0800</bug_when>
    <thetext>FYI, as of https://trac.webkit.org/changeset/270938/webkit, you can now use wtf/cocoa/MachSemaphore.h to establish a cross-process semaphore.

I think this means that the sender shouldn&apos;t have to live-yield anymore.

Also, maybe the receiver can wait for more data by using a semaphore instead of requiring a new IPC to wake it up (at least in the common case).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715996</commentid>
    <comment_count>17</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-21 04:40:26 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #16)
&gt; FYI, as of https://trac.webkit.org/changeset/270938/webkit, you can now use
&gt; wtf/cocoa/MachSemaphore.h to establish a cross-process semaphore.
&gt; 
&gt; I think this means that the sender shouldn&apos;t have to live-yield anymore.
&gt; 
&gt; Also, maybe the receiver can wait for more data by using a semaphore instead
&gt; of requiring a new IPC to wake it up (at least in the common case).

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722481</commentid>
    <comment_count>18</comment_count>
      <attachid>418406</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-26 06:01:00 -0800</bug_when>
    <thetext>Created attachment 418406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724379</commentid>
    <comment_count>19</comment_count>
      <attachid>418915</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-01 13:06:16 -0800</bug_when>
    <thetext>Created attachment 418915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724380</commentid>
    <comment_count>20</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-01 13:08:30 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #16)
&gt; FYI, as of https://trac.webkit.org/changeset/270938/webkit, you can now use
&gt; wtf/cocoa/MachSemaphore.h to establish a cross-process semaphore.
&gt; 
&gt; I think this means that the sender shouldn&apos;t have to live-yield anymore.
&gt; 
&gt; Also, maybe the receiver can wait for more data by using a semaphore instead
&gt; of requiring a new IPC to wake it up (at least in the common case).

The new patch addresses this. Unfortunately the ChangeLog is a bit lacking, but I&apos;ll work on it more. Just uploading this in case there&apos;s interest in giving feedback on the code part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724381</commentid>
    <comment_count>21</comment_count>
      <attachid>418916</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-01 13:12:04 -0800</bug_when>
    <thetext>Created attachment 418916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725301</commentid>
    <comment_count>22</comment_count>
      <attachid>418916</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-02-03 12:59:45 -0800</bug_when>
    <thetext>Comment on attachment 418916
Patch

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

&gt; Source/WebKit/Platform/IPC/ArgumentCoders.cpp:-114
&gt; -

Some stray whitespace changes in this file.

&gt; Source/WebKit/Platform/IPC/Connection.cpp:389
&gt; +    auto messageFilterLocker = holdLock(m_messageFiltersLock);
&gt; +    m_messageFilters.addFilter(messageFilter, receiverName, destinationID);

Would be good to add the message ordering comment here too.

&gt; Source/WebKit/Platform/IPC/Connection.cpp:390
&gt; +    auto locker = holdLock(m_incomingMessagesMutex);

What is the case where we intend to hold m_incomingMessagesMutex without holding m_messageFiltersLock, or vice versa? Maybe we can reduce to just one lock?

&gt; Source/WebKit/Platform/IPC/Connection.cpp:396
&gt; +            m_incomingMessages.remove(it);
&gt; +            end = m_incomingMessages.end();

I think this is a bug. remove() invalidates &apos;it&apos;, so re-reading end() here is not sufficient.

Also, it&apos;s kind of expensive to do O(n) removal each time through the loop.

Also, I think it would be better to use an explicit return value to indicate message consumption, rather than testing for null. C++ does not require that moved-from values be null.

&gt; Source/WebKit/Platform/IPC/Connection.cpp:447
&gt; -    
&gt; +

Some whitespace changes in this file.

&gt; Source/WebKit/Platform/IPC/Connection.cpp:1154
&gt; +    // FIXME: This has a message ordering bug where the early messages dispatched here would arrive
&gt; +    // later than later messages that get dispatched by the message processing queue. This should be fixed by making WorkQueueReceiver
&gt; +    // a message filter.

Do we need to fix this before landing? (Seems like probably?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725701</commentid>
    <comment_count>23</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-04 11:10:55 -0800</bug_when>
    <thetext>Thanks for the review.

I&apos;ll fix the whitespace and move some commits away from the patch.


(In reply to Geoffrey Garen from comment #22)
&gt; Comment on attachment 418916 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418916&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/ArgumentCoders.cpp:-114
&gt; &gt; -
&gt; 
&gt; Some stray whitespace changes in this file.
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/Connection.cpp:389
&gt; &gt; +    auto messageFilterLocker = holdLock(m_messageFiltersLock);
&gt; &gt; +    m_messageFilters.addFilter(messageFilter, receiverName, destinationID);
&gt; 
&gt; Would be good to add the message ordering comment here too.
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/Connection.cpp:390
&gt; &gt; +    auto locker = holdLock(m_incomingMessagesMutex);
&gt; 
&gt; What is the case where we intend to hold m_incomingMessagesMutex without
&gt; holding m_messageFiltersLock, or vice versa? Maybe we can reduce to just one
&gt; lock?
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/Connection.cpp:396
&gt; &gt; +            m_incomingMessages.remove(it);
&gt; &gt; +            end = m_incomingMessages.end();
&gt; 
&gt; I think this is a bug. remove() invalidates &apos;it&apos;, so re-reading end() here
&gt; is not sufficient.

Right, I&apos;ll do it another way. As far as I understood looking at the implementation it didn&apos;t invalidate the iterator but yes, it&apos;s sketchy.

&gt; Also, it&apos;s kind of expensive to do O(n) removal each time through the loop.
 
Right, I&apos;ll do it another way.

&gt; Also, I think it would be better to use an explicit return value to indicate
&gt; message consumption, rather than testing for null. C++ does not require that
&gt; moved-from values be null.

Sure. I&apos;ll change the contract..
FWIW, C++ does require moved-away unique_ptr to be null, which is being used here.

https://en.cppreference.com/w/cpp/memory/unique_ptr/unique_ptr

  unique_ptr( unique_ptr&amp;&amp; u ) noexcept; (5)

  5) Constructs a unique_ptr by transferring ownership from u to *this and stores the.  null pointer in u. 


&gt; &gt; Source/WebKit/Platform/IPC/Connection.cpp:447
&gt; &gt; -    
&gt; &gt; +
&gt; 
&gt; Some whitespace changes in this file.
&gt; 
&gt; &gt; Source/WebKit/Platform/IPC/Connection.cpp:1154
&gt; &gt; +    // FIXME: This has a message ordering bug where the early messages dispatched here would arrive
&gt; &gt; +    // later than later messages that get dispatched by the message processing queue. This should be fixed by making WorkQueueReceiver
&gt; &gt; +    // a message filter.
&gt; 
&gt; Do we need to fix this before landing? (Seems like probably?)

I can do the fix when moving the code you commented to another patch, but it&apos;s a bit peripheral. For this patch it&apos;s not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726157</commentid>
    <comment_count>24</comment_count>
      <attachid>419427</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-05 10:29:20 -0800</bug_when>
    <thetext>Created attachment 419427
rebased to tot, not fully split</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727020</commentid>
    <comment_count>25</comment_count>
      <attachid>419705</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-09 05:44:59 -0800</bug_when>
    <thetext>Created attachment 419705
removed ipc message receive queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727021</commentid>
    <comment_count>26</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-09 05:51:04 -0800</bug_when>
    <thetext>Moved the code commented below into bug 221560.

(In reply to Geoffrey Garen from comment #22)
&gt; Some stray whitespace changes in this file.

Done.

&gt; What is the case where we intend to hold m_incomingMessagesMutex without
&gt; holding m_messageFiltersLock, or vice versa? Maybe we can reduce to just one
&gt; lock?

Done in other patch, uses m_incomingMessagesMutex.
 
&gt; I think this is a bug. remove() invalidates &apos;it&apos;, so re-reading end() here
&gt; is not sufficient.
&gt; Also, it&apos;s kind of expensive to do O(n) removal each time through the loop.
 
Done in the other patch. It willl construct a new list with the remaining items and swap.

 
&gt; Also, I think it would be better to use an explicit return value to indicate
&gt; message consumption, rather than testing for null.

Done in other patch. The API now always transfers the decoder to the client, no programmatic opt out.

&gt; Some whitespace changes in this file.

Done

&gt; Do we need to fix this before landing? (Seems like probably?)

Done in the other patch. Only few examples, not all call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727028</commentid>
    <comment_count>27</comment_count>
      <attachid>419710</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-09 06:33:06 -0800</bug_when>
    <thetext>Created attachment 419710
ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728579</commentid>
    <comment_count>28</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-02-12 09:04:53 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #26)
&gt; Moved the code commented below into bug 221560.
&gt; 
&gt; (In reply to Geoffrey Garen from comment #22)
&gt; &gt; Some stray whitespace changes in this file.
&gt; 
&gt; Done.

Comments like these are fine, but not necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730189</commentid>
    <comment_count>29</comment_count>
      <attachid>420612</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-17 01:01:34 -0800</bug_when>
    <thetext>Created attachment 420612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730211</commentid>
    <comment_count>30</comment_count>
      <attachid>420623</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-17 02:27:53 -0800</bug_when>
    <thetext>Created attachment 420623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730218</commentid>
    <comment_count>31</comment_count>
      <attachid>420625</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-17 03:34:02 -0800</bug_when>
    <thetext>Created attachment 420625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730221</commentid>
    <comment_count>32</comment_count>
      <attachid>420627</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-17 03:47:47 -0800</bug_when>
    <thetext>Created attachment 420627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730391</commentid>
    <comment_count>33</comment_count>
      <attachid>420671</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-17 10:59:01 -0800</bug_when>
    <thetext>Created attachment 420671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730407</commentid>
    <comment_count>34</comment_count>
      <attachid>420677</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-17 11:14:49 -0800</bug_when>
    <thetext>Created attachment 420677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730417</commentid>
    <comment_count>35</comment_count>
      <attachid>420684</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-17 11:26:37 -0800</bug_when>
    <thetext>Created attachment 420684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730423</commentid>
    <comment_count>36</comment_count>
      <attachid>420687</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-17 11:46:09 -0800</bug_when>
    <thetext>Created attachment 420687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730761</commentid>
    <comment_count>37</comment_count>
      <attachid>420802</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-18 00:11:16 -0800</bug_when>
    <thetext>Created attachment 420802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730828</commentid>
    <comment_count>38</comment_count>
      <attachid>420824</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-18 06:00:12 -0800</bug_when>
    <thetext>Created attachment 420824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731088</commentid>
    <comment_count>39</comment_count>
      <attachid>420824</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-02-18 16:34:05 -0800</bug_when>
    <thetext>Comment on attachment 420824
Patch

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

r=me

I wasn&apos;t able to review the synchronization details as thoroughly as I&apos;d like, but I guess we can refine more once this is in-tree.

EWS failures seem like they were caused by an unrelated transient bug in media streams. Still, I&apos;d suggest re-uploading and hitting cq+ to make sure this lands cleanly.

&gt; Source/WebKit/Platform/IPC/StreamClientConnection.h:167
&gt; +    // Not notifying on wake up since the out-of-stream message will do that.
&gt; +    (void) release(encoder.size());

WebKit style is to use the UNUSED_VARIABLE macro here.

&gt; Source/WebKit/Platform/IPC/StreamClientConnection.h:193
&gt; +    return WTF::nullopt;

Are there any valid conditions under which we would receive some data, but not enough data to be a valid message? If so, let&apos;s document them here. If not, let&apos;s ASSERT.

&gt; Source/WebKit/Platform/IPC/StreamClientConnection.h:205
&gt; +    if (receiverLimit != expectedReceiverLimit)
&gt; +        return WakeUpReceiver::Yes;

I think this would be clearer as &quot;if (receiverLimit &amp; senderOffsetReceiverIsSleepingTag)&quot;. Maybe also add an ASSERT that (receiverLimit &amp; ~senderOffsetReceiverIsSleepingTag) == expectedReceiverLimit.

&gt; Source/WebKit/Platform/IPC/StreamServerConnection.cpp:89
&gt; +    size_t oldReceiverOffset = sharedReceiverOffset().exchange(receiverOffset, std::memory_order_acq_rel);
&gt; +    // If the sender wrote over receiverOffset, it means the sender is waiting.
&gt; +    if (oldReceiverOffset != m_receiverOffset)

I think this would be clearer as &quot;if (oldReceiverOffset &amp; receiverOffsetSenderIsWaitingTag)&quot;. Same comment about adding an assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731090</commentid>
    <comment_count>40</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-02-18 16:34:55 -0800</bug_when>
    <thetext>&gt; Still, I&apos;d suggest re-uploading and hitting cq+ to make sure this lands cleanly.

... since that will get the benefit of an up-to-date EWS run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731275</commentid>
    <comment_count>41</comment_count>
      <attachid>420941</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-19 01:40:35 -0800</bug_when>
    <thetext>Created attachment 420941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731307</commentid>
    <comment_count>42</comment_count>
      <attachid>420956</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-19 04:41:13 -0800</bug_when>
    <thetext>Created attachment 420956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731312</commentid>
    <comment_count>43</comment_count>
      <attachid>420959</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-19 06:01:59 -0800</bug_when>
    <thetext>Created attachment 420959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731757</commentid>
    <comment_count>44</comment_count>
      <attachid>421080</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-19 22:22:47 -0800</bug_when>
    <thetext>Created attachment 421080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731824</commentid>
    <comment_count>45</comment_count>
      <attachid>421097</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-20 12:20:10 -0800</bug_when>
    <thetext>Created attachment 421097
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731834</commentid>
    <comment_count>46</comment_count>
      <attachid>421097</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-20 12:35:23 -0800</bug_when>
    <thetext>Comment on attachment 421097
Patch for landing

Clearing flags on attachment: 421097

Committed r273204 (234390@main): &lt;https://commits.webkit.org/234390@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731835</commentid>
    <comment_count>47</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-20 12:35:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415640</attachid>
            <date>2020-12-08 07:02:44 -0800</date>
            <delta_ts>2020-12-08 07:07:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20201208170241.patch</filename>
            <type>text/plain</type>
            <size>175526</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI2ZGQ5YmI4MzI0NjA0ZjU5
YjllMjQwMTE1NTQ0Nzc2NTMzN2RjZTUuLjAzOTVhMTFiNjliZTM2NzljMGVkMzAxOGU2MmEyOGMx
MzAxNjhjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQwIEBACisyMDIwLTEyLTA4ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBjdXJyZW50IFdlYktpdCBJUEMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50YXRp
b24gaXMgYSBiYWNrZ3JvdW5kIGluZm8gaW4gdGhlIG1lZXRpbmcgYWJvdXQKKyAgICAgICAgc3Bl
ZWRpbmcgdXAgV2ViR0wgaW1wbGVtZXRhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnQgYSBjb25j
ZXB0IG9mIGRlc3RpbmF0aW9uIG1lc3NhZ2Ugc3RyZWFtLiBJUEMgbWVzc2FnZXMgY2FuCisgICAg
ICAgIGJlIHNlbnQgZGlyZWN0bHkgdG8gdGhlIHJlY2VpdmluZyBkZXN0aW5hdGlvbiB3aXRoIE1l
c3NhZ2VTdHJlYW1TZW5kZXIKKyAgICAgICAgYW5kIHJlY2VpdmVkIHdpdGggTWVzc2FnZVN0cmVh
bVJlY2VpdmVyLgorCisgICAgICAgIEltcGxlbWVudGVkIGFzIGZvbGxvd3M6CisgICAgICAgIFNl
bmRlciBzaGFyZXMgdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSB3aXRoIHRoZSBkZXN0aW5hdGlvbiB3
aGVuIGNyZWF0aW5nCisgICAgICAgIHRoZSBkZXN0aW5hdGlvbi4KKworICAgICAgICBJZiB0aGUg
bWVzc2FnZSBmaXRzIHRvIHRoZSBzdHJlYW0gc2hhcmVkIG1lbW9yeSBhcmVhLCB3cml0ZSBpdCB0
aGVyZS4KKyAgICAgICAgT3RoZXJ3aXNlIHNlbmQgaXQgdmlhIG5vcm1hbCBJUEMgYXMgb3V0IG9m
IGxpbmUgbWVzc2FnZS4KKworICAgICAgICBSZWNlaXZlciB3YWl0cyBmb3Igbm9ybWFsIElQQyBt
ZXNzYWdlcywgaXQgZG9lcyBub3QgZG8gYW55dGhpbmcgb3V0IG9mIG9yZGluYXJ5CisgICAgICAg
IHVudGlsIGEgd2FrZXVwIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuIFRoZW4gcmVjZWl2ZXIgd2lsbCBw
cm9jZXNzIHRoZSBzdHJlYW0KKyAgICAgICAgdW50aWwgc3RyZWFtIGhhcyBubyBtb3JlIG1lc3Nh
Z2VzIG9yIHVudGlsIG91dCBvdXQgb2YgbGluZSBtZXNzYWdlIG1hcmtlciBpcyByZWFjaGVkLgor
CisgICAgICAgIE1lc3NhZ2VzIHRvIHRoZSBkZXN0aW5hdGlvbiBhcnJpdmUgYXMgYmVmb3JlLCBp
biBvcmRlci4gRm9yIGVhY2ggb3V0IG9mIGxpbmUKKyAgICAgICAgbWVzc2FnZSwgYW4gZW50cnkg
aXMgcHVzaGVkIHRvIHRoZSBzdHJlYW0uIFJlY2VpdmVyIHdpbGwgc3RvcCBwcm9jZXNzaW5nIHRo
ZQorICAgICAgICBzdHJlYW0gYW5kbSBwcm9jZXNzaW5nIHdpbGwgY29udGludWUgb25jZSB0aGUg
b3V0LW9mLWxpbmUKKyAgICAgICAgbWVzc2FnZSBoYXMgYmVlbiBwcm9jZXNzZWQuCisKKyAgICAg
ICAgU2VuZGVyIGNhbiB3cml0ZSBtZXNzYWdlcyB0byB0aGUgc3RyZWFtIHNpbXVsdGFuZW91cyB0
byB0aGUgcmVjZWl2ZXIgcmVhZGluZworICAgICAgICB0aGUgbWVzc2FnZXMuIFRoaXMgaXMgaW1w
bGVtZW50ZWQgYXMgYSByaW5nIGJ1ZmZlciB3aXRoIGF0b21pYyB3cml0ZSBhbmQgcmVhZCBwb2lu
dGVycy4KKworICAgICAgICBXSVA6CisgICAgICAgICAtIFNpbXBsZSB0aGluZ3Mgd29yaworICAg
ICAgICAgLSBCdWdneSBpbiBjZXJ0YWluIGNvbmRpdGlvbnMgKGFzc2VydHMvY3Jhc2hlcykKKyAg
ICAgICAgICAgRklYTUU6IGZpeCB0aGUgYnVncworICAgICAgICAgLSBVbnRydXN0ZWQgaW5wdXQg
aXMgbm90IGNoZWNrZWQgaW4gZXhhY3RseSBhbGwgcGxhY2VzLgorICAgICAgICAgICBGSVhNRTog
Y2hlY2sgdW50cnVzdGVkIGlucHV0IGFuZCBjbG9zZSB0aGUgY29ubmVjdGlvbiBvbiBrbm93biB2
aW9sYXRpb25zLgorICAgICAgICAgLSBBdG9taWMgb3BzIGFyZSB0aGUgbW9zdCByZXN0cmljdGVk
CisgICAgICAgICAgIEZJWE1FOiByZWxheCB0aGUgY29uZGl0aW9ucyBpZiBwb3NzaWJsZQorICAg
ICAgICAgLSBTdHJlYW0gd2FrZXVwIG1lc3NhZ2UgaXMgc3BlY2lmaWMgdG8gV2ViR0wKKyAgICAg
ICAgICAgRklYTUU6IG1vdmUgdG8gbWVzc2FnZXMucHkgYW5kIGdlbmVyYWxpemUuCisKKworCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgdGVzdGVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6aXNPdXRP
ZkxpbmVTdHJlYW1NZXNzYWdlIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZXN0aW5hdGlvblN0cmVhbS5oOiBBZGRlZC4K
KyAgICAgICAgKElQQzo6RGVzdGluYXRpb25TdHJlYW1CYXNlOjpEZXN0aW5hdGlvblN0cmVhbUJh
c2UpOgorICAgICAgICAoSVBDOjpEZXN0aW5hdGlvblN0cmVhbUJhc2U6OmhlYWRlclNpemUpOgor
ICAgICAgICAoSVBDOjpEZXN0aW5hdGlvblN0cmVhbUJhc2U6OmhlYWRlciBjb25zdCk6CisgICAg
ICAgIChJUEM6OkRlc3RpbmF0aW9uU3RyZWFtQmFzZTo6ZGF0YSBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjpFbmNvZGVy
KToKKyAgICAgICAgKElQQzo6RW5jb2Rlcjo6cmVzZXJ2ZSk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL0VuY29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZUZsYWdzLmg6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1SZWNlaXZlci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaC4KKyAgICAgICAgKElQ
Qzo6TWVzc2FnZVN0cmVhbVJlY2VpdmVyOjpNZXNzYWdlU3RyZWFtUmVjZWl2ZXIpOgorICAgICAg
ICAoSVBDOjpNZXNzYWdlU3RyZWFtUmVjZWl2ZXI6OnN0cmVhbVdha2VVcCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1TZW5kZXIuaDogQWRkZWQuCisgICAgICAgIChJUEM6
Ok1lc3NhZ2VTdHJlYW1TZW5kZXI6Ok1lc3NhZ2VTdHJlYW1TZW5kZXIpOgorICAgICAgICAoSVBD
OjpNZXNzYWdlU3RyZWFtU2VuZGVyOjpzZW5kKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVN0cmVh
bVNlbmRlcjo6c2VuZFN5bmMpOgorICAgICAgICAoSVBDOjpNZXNzYWdlU3RyZWFtU2VuZGVyOjpk
ZXN0aW5hdGlvblN0cmVhbUhhbmRsZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlz
cGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmluZFRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyRGVwdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpjb2xvck1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2spOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJs
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmZyb250RmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
QnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJp
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJp
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dy
YW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Jl
bmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmlzU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bGluZVdpZHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29y
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVy
U291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c3RlbmNpbEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm00ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtNGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYjFmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dmVydGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRm
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliNGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRl
eEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWJEaXZpc29yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1
ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpibGl0RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlYWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNE
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvcHlUZXhTdWJJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9j
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMXVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTJ1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0zdWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0
cml4M3gyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtTWF0cml4Mng0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWJJNGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VF
bGVtZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJCdWZmZXJpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVy
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1
ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aXNTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2Ft
cGxlclBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmZlbmNlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2kpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNm
b3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm1JbmRpY2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
QmxvY2tCaW5kaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVy
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJy
YXlPRVMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZFZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRN
YXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwdXNoR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpwb3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KToKKwog
MjAyMC0xMi0wNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEdQVSBQcm9jZXNzIFdpbmRvd1NlcnZlciBibG9ja2luZyBwcmV2ZW50cyBDR0wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAppbmRleCA0NGI5ZjYzZTE0YzUwYjc0MTk5M2Q2ZjM1YTVhOTVmNWFmZDgwYTVhLi44YmMz
NjgxMTRmYzU5M2I4ZDY3YWQyZGYzMjVhOGMzMTk4NzdlZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0y
OTUsMTAgKzI5NSwxMCBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VS
ZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQogfQogCiAjaWYgRU5BQkxF
KFdFQkdMKQotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikK
K3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFtKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRl
KGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgICAg
ICByZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCAqdGhp
cywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBXVEZNb3ZlKHN0cmVhbSkpOwogICAgIH0p
OwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaAppbmRleCA1YWVkZmJiNGQyY2FjN2I3NjYwZmYwNzM2MDlkMzc3YzYwMTU4NGI0Li5h
ODdmZjRhMzA1MDM3ZTg4YTUwY2U1YjZkMGQxOWJkMzMzMzQ1OGMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQo
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZv
aWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFt
KTsKICAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOWQ1
NGUxNjQ1OTViMGEzNjFkZmU0Yzc1YmZmNDAxOGE4NTc1OWM4Zi4uODlhOGZlNzcxNWEwZTBjZDNm
NGJhNGZhN2NlNzYxMmQwNGVlODE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTI2LDcgKzI2LDcgQEAgbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50
c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFdlYktp
dDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIp
CiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogI2lmIEVOQUJMRShXRUJH
TCkKLSAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorICAgIHZvaWQgQ3Jl
YXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUgc3RyZWFtKQogICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNl
bmRpZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmNwcAppbmRleCBkODA0ZDFmYTk5OTRkNWZmZjMxNDM2NGQ1OWJlZjk1ZWI0OWVhOTk5Li43YTU4
YjRmZGI1MzFkNmFhMjE1MjEyMDA3YWIyODg4MDM2YmQ0NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHAKQEAgLTM5LDE1ICszOSwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQotc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3N0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIFJlZlB0cjxTaGFyZWRNZW1vcnk6OkhhbmRsZT4mJikKIHsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNlbmRpZgogCi1SZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKK1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlJiYgc3RyZWFtLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQp
CisgICAgOiBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIoV1RGTW92ZShzdHJlYW0pKQorICAgICwgbV9j
b250ZXh0KFdURk1vdmUoY29udGV4dCkpCiAgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MobWFrZVdlYWtQdHIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykpCiAgICAgLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDdkYjBjZjUxOGFiZjliYjI1YWIzMzZkZGRlMDM5OTky
NWFhMDVmMzIuLmZjMWM3OTFhYTMwMGI0ZTAyNDI5ZjkwZjFmMmMyZGVmYzE5M2VjMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCi0jaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VTdHJlYW1SZWNlaXZlci5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNp
b25zR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CkBA
IC01NywyNCArNTcsMjkgQEAgY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNz
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCiAgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVy
CiAgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgSVBDOjpN
ZXNzYWdlU3RyZWFtUmVjZWl2ZXI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+CiAgICAgLCBwcml2
YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUm
JiBzdHJlYW0pOwogICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpIG92ZXJyaWRlOwogCiAg
ICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcygp
IGNvbnN0OwogCitwdWJsaWM6CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVz
LgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5h
bDsKKworICAgIC8vIElQQzo6TWVzc2FnZVN0cmVhbVJlY2VpdmVyIHRlbXBsYXRlIGNvbnRyYWN0
LgorICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJik7CisKIHByb3RlY3RlZDoKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+KTsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSYmIHN0cmVhbSwgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Pik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgogICAgIElQQzo6Q29u
bmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKICAgICB1aW50
NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwogCi0gICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKLQogICAgIC8vIEdyYXBoaWNzQ29udGV4
dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkQ29tcG9zaXRlKCkgZmluYWw7CiAg
ICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW4KaW5kZXggYWEwMzQ3MjVmOWFhNDJmNDJiZDNjOGEwMGIwYWExODA5
MGE1OWI5YS4uYTY3ZWJlZjRmYTEwMjZkMTZjMjlmNjM1Njk0M2YwNzY5OTY3OWQ5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAog
Ly8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3Qg
ZWRpdC4KICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2Fn
ZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CittZXNzYWdlcyAt
PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgdm9p
ZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNw
bGF5QnVmZmVyKSBTeW5jaHJvbm91cwpAQCAtMzQsNiArMzQsNyBAQCBtZXNzYWdlcyAtPiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogICAgIHZvaWQgRW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQogICAgIHZvaWQgTm90aWZ5TWFy
a0NvbnRleHRDaGFuZ2VkKCkKKyAgICB2b2lkIFN0cmVhbVdha2VVcCgpIFdhbnRzQ29ubmVjdGlv
biAvLyBUT0RPOiB0aGlzIHNob3VsZCBiZSBtb3ZlZCB0byBtZXNzYWdlcy5weQogCiAgICAgdm9p
ZCBTZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKICAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9y
KHVpbnQzMl90IGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4
IGU3YzQwYzk4NWNiN2QyNzIyODY5YTVkZmY5NjkxOTQ3MDc3YWY0NmMuLjM5NDljY2RjODE3NTZj
M2QxMzcwNDdhMGYxNDc1ZmFmMWVmYTAzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7
CiBwdWJsaWM6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFtKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYSgpIGZpbmFsID0gZGVmYXVsdDsKIAogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMIG92ZXJyaWRlcy4KQEAgLTU1LDEzICs1NSwxMyBAQCBwcml2YXRlOgogCiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0cmVhbSkK
IHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPihu
ZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShhdHRyaWJ1dGVzLCBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKTsKKyAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPihuZXcgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYShhdHRyaWJ1dGVzLCBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOwogfQogCi1SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1
dGVzLCBjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3Jl
YXRlRm9yR1BVUHJvY2VzcyhhdHRyaWJ1dGVzLCB0aGlzKSkKK1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aW9uLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmll
ciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pCisgICAgOiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTChhdHRyaWJ1dGVzLCBjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHN0
cmVhbSksIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGF0dHJp
YnV0ZXMsIHRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CmluZGV4IDJjYjc5YjczMWM4ZDM1MWEyZDA1OTQ2MzYyYzVhYjhiYmFkYmRjNWUuLjQxZmUwMjAw
NzBlZTllZDQ4MDgzYThiYzA2MjMyN2YwMjE3NTU3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCkBAIC0xMTUsNiArMTE1LDEyIEBAIGJvb2wgRGVjb2Rlcjo6c2hvdWxk
VXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9t
ZXNzYWdlRmxhZ3MuY29udGFpbnMoTWVzc2FnZUZsYWdzOjpVc2VGdWxseVN5bmNocm9ub3VzTW9k
ZUZvclRlc3RpbmcpOwogfQogCitib29sIERlY29kZXI6OmlzT3V0T2ZMaW5lU3RyZWFtTWVzc2Fn
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVzc2FnZUZsYWdzLmNvbnRhaW5zKE1lc3NhZ2VG
bGFnczo6U3RyZWFtTWVzc2FnZU91dE9mTGluZSk7Cit9CisKKwogI2lmIFBMQVRGT1JNKE1BQykK
IHZvaWQgRGVjb2Rlcjo6c2V0SW1wb3J0YW5jZUFzc2VydGlvbihzdGQ6OnVuaXF1ZV9wdHI8SW1w
b3J0YW5jZUFzc2VydGlvbj4gYXNzZXJ0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVj
b2Rlci5oCmluZGV4IDM0NGNlNjg4MmZjOTA5ODRiMmZhNTdiZjljNDhiOTY1MGUwZmY3NGUuLjAz
NDBjOTVmZjY2OTk5Zjk2YjYyMTZhZmE3ZTMwMWJmNzAyNzI1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EZWNvZGVyLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNT
eW5jTWVzc2FnZSgpIGNvbnN0OwogICAgIFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5j
UmVwbHkgc2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoKSBjb25z
dDsKICAgICBib29sIHNob3VsZFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZygpIGNv
bnN0OworICAgIGJvb2wgaXNPdXRPZkxpbmVTdHJlYW1NZXNzYWdlKCkgY29uc3Q7CiAKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgdm9pZCBzZXRJbXBvcnRhbmNlQXNzZXJ0aW9uKHN0ZDo6dW5pcXVl
X3B0cjxJbXBvcnRhbmNlQXNzZXJ0aW9uPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZXN0aW5hdGlvblN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVzdGluYXRpb25TdHJlYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTliYmFjZDBlNzdjYzI5ZTE5OGJk
ZTM3Yzk1YjQzZTEyMTc1MGZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRGVzdGluYXRpb25TdHJlYW0uaApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8
d3RmL0F0b21pY3MuaD4KKworbmFtZXNwYWNlIElQQyB7CisKKy8vIFN0cmVhbSBvZiBtZXNzYWdl
cyB0byBhIHNwZWNpZmljIGRlc3RpbmF0aW9uIHJlY2VpdmVyLgorLy8gVGhlIGRlc3RpbmF0aW9u
IHJlY2VpdmVyIHdpbGwgcmVjZWl2ZSBtZXNzYWdlcyBpbiBvcmRlciBfZm9yIHRoZSBkZXN0aW5h
dGlvbiBtZXNzYWdlc18uCisvLyBUaGUgd2hvbGUgY29ubmVjdGlvbiBtZXNzYWdlIG9yZGVyIGlz
IG5vdCBwcmVzZXJ2ZWQuCisvLyBJbXBsZW1lbnRlZCBhcyBhIHNoYXJlZCBtZW1vcnkgcmluZyBi
dWZmZXIuCisvLyBTZWUgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUKK2NsYXNzIERlc3RpbmF0aW9u
U3RyZWFtQmFzZSB7Citwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgRGVzdGluYXRpb25TdHJlYW1C
YXNlKHNpemVfdCBtaW5SZWNvcmRTaXplKQorICAgICAgICA6IG1fbWluUmVjb3JkU2l6ZShtaW5S
ZWNvcmRTaXplKQorICAgIHsKKyAgICB9CisgICAgfkRlc3RpbmF0aW9uU3RyZWFtQmFzZSgpID0g
ZGVmYXVsdDsKKyAgICBzdHJ1Y3QgSGVhZGVyIHsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gd3Jp
dGVMaW1pdDsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gcmVhZExpbWl0OworICAgIH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaGVhZGVyU2l6ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gcm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2Yoc3RkOjptYXhfYWxpZ25fdCk+KHNpemVvZihI
ZWFkZXIpKTsKKyAgICB9CisgICAgSGVhZGVyJiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDxIZWFkZXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKTsgfQorICAgIHVp
bnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9zaGFy
ZWRNZW1vcnktPmRhdGEoKSkgKyBoZWFkZXJTaXplKCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBrUmVhZExpbWl0U2xlZXBUYWcgPSAxIDw8IDMxOworICAgIFJlZlB0cjxXZWJLaXQ6
OlNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CisgICAgY29uc3Qgc2l6ZV90IG1fbWluUmVj
b3JkU2l6ZTsKK307CisKK2NsYXNzIERlc3RpbmF0aW9uU3RyZWFtV3JpdGVyIGZpbmFsIDogRGVz
dGluYXRpb25TdHJlYW1CYXNlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEZXN0aW5hdGlvblN0
cmVhbVdyaXRlcihzaXplX3Qgc2l6ZSwgc2l6ZV90IG1pblJlY29yZFNpemUpCisgICAgICAgIDog
RGVzdGluYXRpb25TdHJlYW1CYXNlKG1pblJlY29yZFNpemUpCisgICAgeworICAgICAgICBtX3No
YXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplKTsKKyAgICAg
ICAgLy8gUmVhZCBzdGFydHMgZnJvbSAwIHdpdGggcmVhZGVyIHNsZWVwaW5nLgorICAgICAgICBo
ZWFkZXIoKS5yZWFkTGltaXQuc3RvcmUoa1JlYWRMaW1pdFNsZWVwVGFnKTsKKyAgICAgICAgaGVh
ZGVyKCkud3JpdGVMaW1pdC5zdG9yZSgwKTsKKyAgICB9CisgICAgV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBkZXN0aW5hdGlvblN0cmVhbUhhbmRsZSgpCisgICAgeworICAgICAgICBX
ZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV9zaGFyZWRNZW1v
cnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkV3JpdGUpOworICAgICAgICByZXR1cm4geyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXpl
KCkgfTsKKyAgICB9CisgICAgdm9pZCB3cml0ZSh1aW50OF90KiYgcHRyLCBzaXplX3QmIGNhcGFj
aXR5KQorICAgIHsKKyAgICAgICAgc2l6ZV90IHdyaXRlTGltaXQgPSBzdGQ6Om1pbihoZWFkZXIo
KS53cml0ZUxpbWl0LmxvYWQoKSwgZGF0YVNpemUoKSk7CisgICAgICAgIGlmICh3cml0ZUxpbWl0
IDw9IG1fd3JpdGVPZmZzZXQpCisgICAgICAgICAgICB3cml0ZUxpbWl0ID0gZGF0YVNpemUoKTsK
KyAgICAgICAgY2FwYWNpdHkgPSB3cml0ZUxpbWl0IC0gbV93cml0ZU9mZnNldDsKKyAgICAgICAg
cHRyID0gZGF0YSgpICsgbV93cml0ZU9mZnNldDsKKyAgICB9CisgICAgZW51bSBjbGFzcyBXYWtl
VXBSZWFkZXIgOiBib29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcworICAgIH07CisgICAg
V2FrZVVwUmVhZGVyIGNvbW1pdFdyaXRlKHNpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgc2l6
ZV90IGV4cGVjdGVkUmVhZExpbWl0ID0gbV93cml0ZU9mZnNldDsKKyAgICAgICAgbV93cml0ZU9m
ZnNldCArPSBzaXplOworICAgICAgICBBU1NFUlQobV93cml0ZU9mZnNldCA8PSBkYXRhU2l6ZSgp
KTsKKyAgICAgICAgaWYgKG1fd3JpdGVPZmZzZXQgKyBtX21pblJlY29yZFNpemUgPj0gZGF0YVNp
emUoKSkKKyAgICAgICAgICAgIG1fd3JpdGVPZmZzZXQgPSAwOworICAgICAgICBzaXplX3QgcmVh
ZExpbWl0ID0gaGVhZGVyKCkucmVhZExpbWl0LmV4Y2hhbmdlKG1fd3JpdGVPZmZzZXQpOworICAg
ICAgICBpZiAocmVhZExpbWl0ICE9IGV4cGVjdGVkUmVhZExpbWl0KQorICAgICAgICAgICAgcmV0
dXJuIFdha2VVcFJlYWRlcjo6WWVzOworICAgICAgICByZXR1cm4gV2FrZVVwUmVhZGVyOjpObzsK
KyAgICB9Citwcml2YXRlOgorICAgIHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhcmVkTWVtb3J5LT5zaXplKCkgLSBoZWFkZXJTaXplKCk7IH0KKworICAgIHNpemVfdCBtX3dy
aXRlT2Zmc2V0IHsgfTsKK307CitjbGFzcyBEZXN0aW5hdGlvblN0cmVhbVJlYWRlciBmaW5hbCA6
IERlc3RpbmF0aW9uU3RyZWFtQmFzZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRGVzdGluYXRp
b25TdHJlYW1SZWFkZXIoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0cmVhbSwg
c2l6ZV90IG1pblJlY29yZFNpemUpCisgICAgICAgIDogRGVzdGluYXRpb25TdHJlYW1CYXNlKG1p
blJlY29yZFNpemUpCisgICAgICAgICwgbV9kYXRhU2l6ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHN0
cmVhbS5kYXRhU2l6ZSkpCisgICAgeworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9IFdlYktpdDo6
U2hhcmVkTWVtb3J5OjptYXAoc3RyZWFtLmhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRXcml0ZSk7CisgICAgfQorICAgIHZvaWQgcmVhZChjb25zdCB1aW50OF90
KiYgcHRyLCBzaXplX3QmIHNpemUpCisgICAgeworICAgICAgICBzaXplX3QgcmVhZExpbWl0ID0g
aGVhZGVyKCkucmVhZExpbWl0LmxvYWQoKTsKKyAgICAgICAgcmVhZEltcGwocHRyLCBzaXplLCBy
ZWFkTGltaXQpOworICAgIH0KKyAgICB2b2lkIGNvbW1pdFJlYWQoc2l6ZV90IHJlYWRTaXplLCBj
b25zdCB1aW50OF90KiYgcHRyLCBzaXplX3QmIHNpemUpCisgICAgeworICAgICAgICBtX3JlYWRP
ZmZzZXQgKz0gcmVhZFNpemU7CisgICAgICAgIEFTU0VSVChtX3JlYWRPZmZzZXQgPD0gZGF0YVNp
emUoKSk7CisgICAgICAgIGlmIChtX3JlYWRPZmZzZXQgKyBtX21pblJlY29yZFNpemUgPj0gZGF0
YVNpemUoKSkKKyAgICAgICAgICAgIG1fcmVhZE9mZnNldCA9IDA7CisgICAgICAgIGhlYWRlcigp
LndyaXRlTGltaXQuc3RvcmUobV9yZWFkT2Zmc2V0KTsKKyAgICAgICAgc2l6ZV90IHJlYWRMaW1p
dCA9IGhlYWRlcigpLnJlYWRMaW1pdC5sb2FkKCk7CisgICAgICAgIHdoaWxlIChyZWFkTGltaXQg
PT0gbV9yZWFkT2Zmc2V0KQorICAgICAgICAgICAgcmVhZExpbWl0ID0gaGVhZGVyKCkucmVhZExp
bWl0LmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhyZWFkTGltaXQsIHJlYWRMaW1pdCB8IGtSZWFkTGlt
aXRTbGVlcFRhZywgc3RkOjptZW1vcnlfb3JkZXJfc2VxX2NzdCwgc3RkOjptZW1vcnlfb3JkZXJf
c2VxX2NzdCk7CisgICAgICAgIHJlYWRJbXBsKHB0ciwgc2l6ZSwgcmVhZExpbWl0KTsKKyAgICB9
Citwcml2YXRlOgorICAgIHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVNp
emUgLSBoZWFkZXJTaXplKCk7IH0KKworICAgIHZvaWQgcmVhZEltcGwoY29uc3QgdWludDhfdCom
IHB0ciwgc2l6ZV90JiBzaXplLCBzaXplX3QgcmVhZExpbWl0KQorICAgIHsKKyAgICAgICAgcmVh
ZExpbWl0ICY9IH5rUmVhZExpbWl0U2xlZXBUYWc7CisgICAgICAgIHJlYWRMaW1pdCA9IHN0ZDo6
bWluKHJlYWRMaW1pdCwgZGF0YVNpemUoKSk7IC8vIEZJWE1FOiBNYXJrIGludmFsaWQuCisgICAg
ICAgIGlmIChyZWFkTGltaXQgPCBtX3JlYWRPZmZzZXQpCisgICAgICAgICAgICByZWFkTGltaXQg
PSBkYXRhU2l6ZSgpOworICAgICAgICBzaXplID0gcmVhZExpbWl0IC0gbV9yZWFkT2Zmc2V0Owor
ICAgICAgICBwdHIgPSBkYXRhKCkgKyBtX3JlYWRPZmZzZXQ7CisgICAgICAgIEFTU0VSVChzaXpl
IDw9IGRhdGFTaXplKCkpOworICAgIH0KKworICAgIGNvbnN0IHNpemVfdCBtX2RhdGFTaXplOwor
ICAgIHNpemVfdCBtX3JlYWRPZmZzZXQgeyAwIH07Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCmluZGV4IGU4M2EzZTRhZmY0MmE1
NzU1MDVkYzhmMDczMTdhMWMxYWMxOWRlYWUuLmEwM2ExMDYwOTVlYWNhZDUyNmM4MjA1NzUyMTdl
MjUyMDBlMDNmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCkBAIC03
Myw2ICs3MywxOCBAQCBFbmNvZGVyOjpFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKQogICAgIGVuY29kZUhlYWRlcigpOwogfQogCitFbmNvZGVy
OjpFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
LCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1DYXBhY2l0eSkKKyAgICA6IG1fbWVzc2Fn
ZU5hbWUobWVzc2FnZU5hbWUpCisgICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25JRCkK
KyAgICAsIG1fYnVmZmVyKHN0cmVhbSkKKyAgICAsIG1fYnVmZmVyUG9pbnRlcihzdHJlYW0pCisg
ICAgLCBtX2J1ZmZlclNpemUoMCkKKyAgICAsIG1fYnVmZmVyQ2FwYWNpdHkoc3RyZWFtQ2FwYWNp
dHkpCisgICAgLCBtX2lzU3RyZWFtRW5jb2Rlcih0cnVlKQoreworICAgIGVuY29kZUhlYWRlcigp
OworfQorCiBFbmNvZGVyOjpFbmNvZGVyKENvbnN0cnVjdFdpdGhvdXRIZWFkZXJUYWcpCiAgICAg
OiBtX21lc3NhZ2VOYW1lKCkKICAgICAsIG1fZGVzdGluYXRpb25JRCgwKQpAQCAtMTYwLDYgKzE3
MiwxMSBAQCB2b2lkIEVuY29kZXI6OnJlc2VydmUoc2l6ZV90IHNpemUpCiAgICAgaWYgKHNpemUg
PD0gbV9idWZmZXJDYXBhY2l0eSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1faXNTdHJl
YW1FbmNvZGVyKSB7CisgICAgICAgIG1lc3NhZ2VGbGFncygpLmFkZChNZXNzYWdlRmxhZ3M6OlN0
cmVhbU1lc3NhZ2VPdXRPZkxpbmUpOworICAgICAgICBtX2lzU3RyZWFtRW5jb2RlciA9IGZhbHNl
OworICAgIH0KKwogICAgIHNpemVfdCBuZXdDYXBhY2l0eSA9IHJvdW5kVXBUb0FsaWdubWVudCht
X2J1ZmZlckNhcGFjaXR5ICogMiwgNDA5Nik7CiAgICAgd2hpbGUgKG5ld0NhcGFjaXR5IDwgc2l6
ZSkKICAgICAgICAgbmV3Q2FwYWNpdHkgKj0gMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0VuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29k
ZXIuaAppbmRleCBlYTYxOTY3YmUxZWJjYmQ4YjZmYmJhYThiODVhZjQxOGU4ZDUwY2NhLi44ZmE1
ZGFhZmIzMjk0NGQ2MmRkOWQ1Y2UzYzE3NGY0MjNhN2U2M2E5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRW5jb2Rlci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEVuY29kZXIgZmluYWwgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEVuY29kZXIoTWVzc2Fn
ZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIEVuY29kZXIoTWVzc2FnZU5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbUNh
cGFjaXR5KTsKICAgICB+RW5jb2RlcigpOwogCiAgICAgUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKSBjb25zdCB7IHJldHVybiByZWNlaXZlck5hbWUobV9tZXNzYWdlTmFtZSk7IH0K
QEAgLTE0Miw2ICsxNDMsOCBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX2J1ZmZlclNpemU7CiAg
ICAgc2l6ZV90IG1fYnVmZmVyQ2FwYWNpdHk7CiAKKyAgICBib29sIG1faXNTdHJlYW1FbmNvZGVy
IHsgZmFsc2UgfTsKKwogICAgIFZlY3RvcjxBdHRhY2htZW50PiBtX2F0dGFjaG1lbnRzOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZUZsYWdzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaAppbmRleCBhZDRkNDUy
ZTFlY2RlOTNhYWIxMjBkZjFiMTQ5OTZhOTA3YzMxZDFlLi5lMjcyZmE5YjkyMzU4N2JiMTk1YWFk
ZGUxZjU3MDg0NDgxZmY1MjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9NZXNzYWdlRmxhZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdl
RmxhZ3MuaApAQCAtMzIsNiArMzIsNyBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4
X3QgewogICAgIERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5ID0gMSA8PCAx
LAogICAgIERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5ID0g
MSA8PCAyLAogICAgIFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZyA9IDEgPDwgMywK
KyAgICBTdHJlYW1NZXNzYWdlT3V0T2ZMaW5lID0gMSA8PCA0LAogfTsKIAogZW51bSBjbGFzcyBT
aG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogdWludDhfdCB7CkBAIC01MCw3
ICs1MSw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8SVBDOjpNZXNzYWdlRmxhZ3M+
IHsKICAgICAgICAgSVBDOjpNZXNzYWdlRmxhZ3M6OlN5bmNNZXNzYWdlLAogICAgICAgICBJUEM6
Ok1lc3NhZ2VGbGFnczo6RGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHksCiAg
ICAgICAgIElQQzo6TWVzc2FnZUZsYWdzOjpEaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclVu
Ym91bmRlZFN5bmNSZXBseSwKLSAgICAgICAgSVBDOjpNZXNzYWdlRmxhZ3M6OlVzZUZ1bGx5U3lu
Y2hyb25vdXNNb2RlRm9yVGVzdGluZworICAgICAgICBJUEM6Ok1lc3NhZ2VGbGFnczo6VXNlRnVs
bHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nLAorICAgICAgICBJUEM6Ok1lc3NhZ2VGbGFnczo6
U3RyZWFtTWVzc2FnZU91dE9mTGluZQogICAgID47CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1SZWNlaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNGQw
NmZmODdmZWM1MjA0OTJkZjNhYWQ4MTZlNmZiNTQwZjE0YTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaApAQCAtMCww
ICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvblN0cmVhbS5oIgorI2luY2x1ZGUgIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFNlbGY+CitjbGFzcyBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIgIHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3RyZWFtSGVhZGVyU2l6ZSA9IDE2OyAvLyBGSVhN
RTogbW92ZSB0byBFbmNvZGVyLgorcHVibGljOgorICAgIE1lc3NhZ2VTdHJlYW1SZWNlaXZlcihX
ZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFtKQorICAgICAgICA6IG1fc3Ry
ZWFtKFdURk1vdmUoc3RyZWFtKSwga1N0cmVhbUhlYWRlclNpemUpCisgICAgeyB9CisgICAgfk1l
c3NhZ2VTdHJlYW1SZWNlaXZlcigpID0gZGVmYXVsdDsKKworICAgIHZvaWQgc3RyZWFtV2FrZVVw
KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCisgICAgeworICAgICAgICBjb25zdCB1aW50OF90KiBi
dWZmZXIgeyBudWxscHRyIH07CisgICAgICAgIHNpemVfdCBidWZmZXJTaXplIHsgMCB9OworICAg
ICAgICBtX3N0cmVhbS5yZWFkKGJ1ZmZlciwgYnVmZmVyU2l6ZSk7CisgICAgICAgIHdoaWxlIChi
dWZmZXJTaXplID49IGtTdHJlYW1IZWFkZXJTaXplKSB7CisgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpEZWNvZGVyPiBkZWNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkRlY29kZXI+KGJ1
ZmZlciwgYnVmZmVyU2l6ZSwgbnVsbHB0ciwgVmVjdG9yPElQQzo6QXR0YWNobWVudD4geyB9KTsK
KyAgICAgICAgICAgIEFTU0VSVChkZWNvZGVyLT5pc1ZhbGlkKCkpOworICAgICAgICAgICAgYm9v
bCBpc091dE9mTGluZSA9IGRlY29kZXItPmlzT3V0T2ZMaW5lU3RyZWFtTWVzc2FnZSgpOworICAg
ICAgICAgICAgaWYgKCFpc091dE9mTGluZSkKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxT
ZWxmKj4odGhpcyktPmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKGNvbm5lY3Rpb24sICpkZWNvZGVy
KTsKKyAgICAgICAgICAgIG1fc3RyZWFtLmNvbW1pdFJlYWQoZGVjb2Rlci0+Y3VycmVudEJ1ZmZl
clBvc2l0aW9uKCksIGJ1ZmZlciwgYnVmZmVyU2l6ZSk7CisgICAgICAgICAgICBpZiAoaXNPdXRP
ZkxpbmUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Citwcml2YXRl
OgorICAgIERlc3RpbmF0aW9uU3RyZWFtUmVhZGVyIG1fc3RyZWFtOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdl
U3RyZWFtU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU3RyZWFt
U2VuZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjBlYzFlYmRjMmI4Y2Q4YmIwNzQwYmM2NzdhZTQxNGMwNjhh
NWIzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3Nh
Z2VTdHJlYW1TZW5kZXIuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlv
blN0cmVhbS5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIK
KyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBJUEMgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBTZWxmPgorY2xhc3MgTWVzc2FnZVN0cmVhbVNlbmRlciAgeworICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGtTdHJlYW1IZWFkZXJTaXplID0gMTY7IC8vIEZJWE1FOiBtb3Zl
IHRvIEVuY29kZXIuCitwdWJsaWM6CisgICAgTWVzc2FnZVN0cmVhbVNlbmRlcihzaXplX3Qgc3Ry
ZWFtU2l6ZSkKKyAgICAgICAgOiBtX3N0cmVhbShzdHJlYW1TaXplLCBrU3RyZWFtSGVhZGVyU2l6
ZSkKKyAgICB7IH0KKyAgICB+TWVzc2FnZVN0cmVhbVNlbmRlcigpID0gZGVmYXVsdDsKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdlLCBPcHRpb25T
ZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCisgICAgeworICAgICAgICBzdGF0aWNf
YXNzZXJ0KCFVOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CisgICAgICAgIHVpbnQ4X3Qq
IHB0ciB7IG51bGxwdHIgfTsKKyAgICAgICAgc2l6ZV90IGNhcGFjaXR5IHsgMCB9OworICAgICAg
ICBtX3N0cmVhbS53cml0ZShwdHIsIGNhcGFjaXR5KTsKKyAgICAgICAgd2hpbGUgKGNhcGFjaXR5
IDwga1N0cmVhbUhlYWRlclNpemUpIHsKKyAgICAgICAgICAgIFRocmVhZDo6eWllbGQoKTsKKyAg
ICAgICAgICAgIG1fc3RyZWFtLndyaXRlKHB0ciwgY2FwYWNpdHkpOworICAgICAgICB9CisgICAg
ICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVTo6bmFtZSgpLCBzdGF0aWNf
Y2FzdDxTZWxmKj4odGhpcyktPm1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCksIHB0ciwgY2Fw
YWNpdHkpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7Cisg
ICAgICAgIGlmIChlbmNvZGVyLT5idWZmZXIoKSA9PSBwdHIpIHsKKyAgICAgICAgICAgIGF1dG8g
d2FrZXVwUmVzdWx0ID0gbV9zdHJlYW0uY29tbWl0V3JpdGUoZW5jb2Rlci0+YnVmZmVyU2l6ZSgp
KTsKKyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gRGVzdGluYXRpb25TdHJlYW1Xcml0
ZXI6Oldha2VVcFJlYWRlcjo6Tm8pCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAvLyBGSVhNRTogU3RyZWFtV2FrZXVwIHRvIG1lc3NhZ2VzLnB5LgorICAgICAgICAg
ICAgZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpTdHJlYW1XYWtlVXA6Om5hbWUoKSwgc3RhdGljX2Nhc3Q8U2VsZio+KHRoaXMp
LT5tZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBtX3N0cmVhbS5jb21taXRXcml0ZShrU3RyZWFtSGVhZGVyU2l6ZSk7CisKKyAgICAgICAg
YXV0byogY29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFNlbGYqPih0aGlzKS0+bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKTsKKyAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworICAgICAgICByZXR1
cm4gY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMp
OworICAgIH0KKyAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5j
UmVzdWx0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgU2VuZFN5bmNSZXN1bHQgc2Vu
ZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIFNlY29uZHMgdGlt
ZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2Vu
ZFN5bmNPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IHNlbmRTeW5jIGRv
ZXMgbm90IGdvIHRocm91Z2ggdGhlIHN0cmVhbSBiZWNhdXNlIHRoZSBjb25zdHJ1Y3RvciBvZiB0
aGUgc3luYyBlbmNvZGVyIGlzIHRpZWQgdG8gdGhlCisgICAgICAgIC8vIENvbm5lY3Rpb24uIEl0
J3MgYSBtZWNoYW5pY2FsIHJlZmFjdG9yIHRvIGZpeCBpdC4KKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOworICAgICAgICBhdXRvIGNvbm5l
Y3Rpb24gPSBzdGF0aWNfY2FzdDxTZWxmKj4odGhpcyktPm1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCk7CisgICAgICAgIEFTU0VSVChjb25uZWN0aW9uKTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlv
bklEID0gc3RhdGljX2Nhc3Q8U2VsZio+KHRoaXMpLT5tZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpOworICAgICAgICByZXR1cm4gY29ubmVjdGlvbi0+c2VuZFN5bmMoV1RGTW92ZShtZXNzYWdl
KSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9u
cyk7CisgICAgfQorCisgICAgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBkZXN0aW5h
dGlvblN0cmVhbUhhbmRsZSgpIHsgcmV0dXJuIG1fc3RyZWFtLmRlc3RpbmF0aW9uU3RyZWFtSGFu
ZGxlKCk7IH0KK3ByaXZhdGU6CisgICAgRGVzdGluYXRpb25TdHJlYW1Xcml0ZXIgbV9zdHJlYW07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CmluZGV4IDg5ZmI4YWJhZjlhZWNlMDdjNjM0NzBkYTNkYjgzYzg4MzI2ZGQzZjIu
LjM5MjFlNTFmNDY2NTYzYjc4NWFmMmUzY2NjNWIzNTQ3YWY3ZmEzZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzMsNiArMzMsNyBAQCBMRUdBQ1lfUkVD
RUlWRVJfQVRUUklCVVRFID0gJ0xlZ2FjeVJlY2VpdmVyJwogTk9UX1JFRkNPVU5URURfUkVDRUlW
RVJfQVRUUklCVVRFID0gJ05vdFJlZkNvdW50ZWQnCiBTWU5DSFJPTk9VU19BVFRSSUJVVEUgPSAn
U3luY2hyb25vdXMnCiBBU1lOQ19BVFRSSUJVVEUgPSAnQXN5bmMnCitTVFJFQU1fQVRUUklCVVRF
ID0gJ1N0cmVhbScKIAogX2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTQ5Niw3ICs0OTcs
OCBAQCBkZWYgYXN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpOgogCiAg
ICAgcmVzdWx0ID0gW10KICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6JXM6OiVzOjpuYW1lKCkpIHtcbicgJSAocmVjZWl2ZXIubmFt
ZSwgbWVzc2FnZS5uYW1lKSkKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVz
c2FnZXM6OiVzOjolcz4oJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFt
ZSwgbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oZGlzcGF0Y2hfZnVuY3Rpb25fYXJncykpKQorICAg
IGlmIG5vdCAocmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKSBhbmQgbWVz
c2FnZS5uYW1lID09ICdTdHJlYW1XYWtlVXAnKToKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
ICAgICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rp
b24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKGRpc3BhdGNoX2Z1bmN0
aW9uX2FyZ3MpKSkKICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybjtcbicpCiAgICAg
cmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCiAgICAgcmV0dXJuIHN1cnJvdW5kX2luX2NvbmRpdGlv
bignJy5qb2luKHJlc3VsdCksIG1lc3NhZ2UuY29uZGl0aW9uKQpAQCAtODU2LDggKzg1OCwxMyBA
QCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIGFzeW5jX21lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQogCisgICAgcmVjZWl2
ZV92YXJpYW50ID0gJycKKyAgICBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNF
SVZFUl9BVFRSSUJVVEUpOgorICAgICAgICByZWNlaXZlX3ZhcmlhbnQgPSByZWNlaXZlci5uYW1l
CisgICAgZWxpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAg
ICAgICByZWNlaXZlX3ZhcmlhbnQgPSAnU3RyZWFtJwogICAgIGlmIGFzeW5jX21lc3NhZ2VzIG9y
IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUp
IG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9B
VFRSSUJVVEUpOgotICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlJXNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRy
aWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykpCisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJl
Y2VpdmVfdmFyaWFudCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCiAgICAgICAgIGlm
IG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJ
QlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgYXV0byBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyk7XG4nKQpAQCAtODc0LDYgKzg4MSwxMyBAQCBkZWYgZ2VuZXJhdGVf
bWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicp
CiAKKyAgICBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAg
ICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIu
bmFtZSkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTtcbicp
CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdHJlYW1XYWtlVXAoY29ubmVjdGlvbik7XG4n
KQorICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQorCiAgICAgaWYgc3luY19tZXNzYWdlcyBv
ciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRF
KToKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd2
b2lkICVzOjpkaWRSZWNlaXZlU3luYyVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
IHJlcGx5RW5jb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNl
aXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MmRlM2IzYTQ1MWM3ZTFjMjhmZTFjOWMzNzQwNjFlNmZmMjFjNmI2Ni4uODc4ZjQzNmQyMDgxMTQx
NzQyMjIxNzVhNzAwOTRjNTBjMTJiZGYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzA3LDYgKzEzMDcsOCBAQAogCQk3QUZCRDM2
NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2NTIx
RTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggKi87
IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2RDIxRTU0
NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovOyB9OwogCQk3QjFEQjI2NjI1NjY4
Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJl
ZmVyZW5jZS5oICovOyB9OworCQk3QkU3MjY3QTI1N0E3M0Q2MDBFODVEOTggLyogTWVzc2FnZVN0
cmVhbVNlbmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0JFNzI2NzkyNTdBNzNENjAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1TZW5kZXIuaCAqLzsg
fTsKKwkJN0JFNzI2N0MyNTdBNzlDODAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1SZWNlaXZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JFNzI2N0Iy
NTdBNzlDODAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1SZWNlaXZlci5oICovOyB9OwogCQk3QzA2
NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYy
QTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgg
Ki87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFB
NzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQz
RTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5o
ICovOyB9OwpAQCAtNDQwMSw2ICs0NDAzLDggQEAKIAkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhD
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1NzY4MEVGMDBFODVE
OTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0JFNzI2NzkyNTdBNzNENjAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1TZW5kZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVN0cmVhbVNlbmRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkU3MjY3QjI1N0E3OUM4MDBFODVEOTgg
LyogTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lc3NhZ2VTdHJlYW1SZWNlaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0
YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJE
YXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjcxNSw2ICs2NzE5LDggQEAKIAkJCQkxQTNF
RUQwRDE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggKi8sCiAJCQkJMUFB
QjAzNzcxODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuY3BwICovLAogCQkJCTFBQUIw
Mzc4MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmggKi8sCisJCQkJN0JFNzI2N0Iy
NTdBNzlDODAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1SZWNlaXZlci5oICovLAorCQkJCTdCRTcy
Njc5MjU3QTczRDYwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFtU2VuZGVyLmggKi8sCiAJCQkJMkRD
MTgwMDFEOTBEREQxNUZDNjk5MUE5IC8qIFNoYXJlZEJ1ZmZlckNvcHkuY3BwICovLAogCQkJCTVD
QzVEQjkxMjE0ODhFMTYwMDZDQjhBOCAvKiBTaGFyZWRCdWZmZXJDb3B5LmggKi8sCiAJCQkJMkRD
MTg1NUVEQkZCODUwQkEwQjZEMDZEIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwICov
LApAQCAtMTEzNzUsNiArMTEzODEsNyBAQAogCQkJCTdBODIxRjRDMUUyRjY3MzkwMDYwNDU3NyAv
KiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTI5ODRGNTg5MTY0QkEwOTUwMDRCQzBDNiAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBRDMwOTMxNjRCNEM1RDAwNzJERUE5IC8q
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk3
QkU3MjY3QTI1N0E3M0Q2MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVNlbmRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjk4NEY1N0QxNjRCOTE1RjAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExREY2MzEzMThF
MEI3QzgwMDNBM0UyQSAvKiBMZWdhY3lEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUExREMzNDAxOTYzNDZENzAwRkY3MDU5IC8qIExlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMjEwMyw2ICsxMjExMCw3IEBACiAJCQkJRTFBRUEyMkYxNDY4
N0JEQjAwODA0NTY5IC8qIFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QwQzY4MzEyMDFGRDEwMTAwQTU5NDA5IC8qIFdLRnVs
bFNjcmVlblZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkU3MjY3QzI1N0E3
OUM4MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0ZGRERCOTYxRjU3N0Y0ODAwNTBFNTkzIC8qIFdLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTRDQzEy
MTJENjc0RUUwMDVDNjdCMCAvKiBXS0dlb2xvY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCAzNGEwNmZi
MDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Li4yYjhhNDM2ODBjMWIwNjE2YWIxOGM5
YTcwNzZiMDc0YzFhOGE1YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHAKQEAgLTQ4LDE5ICs0OCwyMiBAQCBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0
ZXMpKTsKIH0KIAorc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdFN0cmVhbVNpemUgPSAx
IDw8IDEwOworCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCi0g
ICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShhdHRycykKKyAgICA6IElQQzo6
TWVzc2FnZVN0cmVhbVNlbmRlcjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PihkZWZhdWx0
U3RyZWFtU2l6ZSkKKyAgICAsIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJz
KQogewogICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3Nh
Z2VSZWNlaXZlck1hcCgpOwogICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMp
OwotICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdy
YXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciksIDAp
OworICAgIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgZGVzdGluYXRpb25TdHJlYW1IYW5kbGUoKSksIDApOwog
fQogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eSgpCiB7CiAgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZl
ck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAgICAgbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcigqdGhpcyk7Ci0gICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKSwgMCk7CisgICAgbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdM
KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgcGxhdGZvcm1Td2FwQ2hhaW4oKS5yZWN5Y2xlQnVmZmVyKCk7CiAjZW5kaWYKQEAgLTgw
LDE0ICs4MywxNCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc2hhcGUo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIG1fY3VycmVudFdpZHRoID0gd2lkdGg7CiAg
ICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OwotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpSZXNoYXBlKHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQ7Ci0gICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBs
eShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQ
cmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIDEwX3MpOwog
ICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChX
VEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKICAg
ICBpZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBhdXRvJiBzYyA9IHBsYXRmb3JtU3dhcENo
YWluKCk7CkBAIC05NSwxOSArOTgsMTkgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgICAgIHNjLnByZXNlbnQoeyBXVEZNb3ZlKGRp
c3BsYXlCdWZmZXIpLCBudWxscHRyIH0pOwogICAgIH0KICNlbHNlCi0gICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseSgp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseSgp
LCAxMF9zKTsKICNlbmRpZgogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbiksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpOb3RpZnlNYXJr
Q29udGV4dENoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpOb3RpZnlNYXJrQ29udGV4dENo
YW5nZWQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxh
dGVDb250ZXh0Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
CmluZGV4IGQ5OWVkYTI5ZjZkYjVlMTgxOTcxMzE3OGYyYWE1MzFiNGY1ZGQ2ZTAuLmQxYWMwMWJi
NmZjYTA2NmNmYTcyYzY3NzVhYTI0N2I1ZTBmYTBhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNp
bmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVN0cmVhbVNlbmRlci5o
IgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBpbiBHUFUgcHJvY2Vzcy4KIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBp
cyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbC4KIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgZmluYWwKLSAgICA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTdHJl
YW1TZW5kZXI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4KICAgICAsIHByaXZhdGUgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5PgogICAgICwgcHVibGljIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlCYXNlIHsKQEAgLTU1LDkgKzU1LDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOwogICAgIH5SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5KCkgZmluYWw7CiAKLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJp
ZGVzLgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dCBmaW5hbDsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
IGZpbmFsOworICAgIC8vIElQQzo6TWVzc2FnZVN0cmVhbVNlbmRlciB0ZW1wbGF0ZSBjb250cmFj
dC4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Q7
CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdDsKIAogICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dl
bmVyYXRlZC5jcHAKaW5kZXggZjdlY2Y4NjU1NmEwMDczYWY4ZjU1NGNmY2ZjMGVmMzM5ZjYxZTg5
YS4uM2MxN2MyNGFkYzczYjBiZmYyYzYwYzU5MzRkZWQ3YzdkMGU3YmViZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNH
ZW5lcmF0ZWQuY3BwCkBAIC0zMiwzMjQgKzMyLDMyNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRGYWlsTmV4dEdQVVN0YXR1c0No
ZWNrKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2V0
RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0
R1BVU3RhdHVzQ2hlY2soKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN5bnRoZXNpemVHTEVycm9yKGVycm9yKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJvcikpOwogfQogCiBib29sIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5bnRo
ZXRpY0Vycm9yTGlzdDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Q6OlJlcGx5
KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4
dHVyZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QWN0
aXZlVGV4dHVyZSh0ZXh0dXJlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVUZXh0dXJlKHRl
eHR1cmUpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hT
aGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hh
ZGVyKHByb2dyYW0sIHNoYWRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVyKHBy
b2dyYW0sIHNoYWRlcikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJpbmRBdHRyaWJMb2NhdGlvbihhcmcwLCBpbmRleCwgbmFtZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmluZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihHQ0dMZW51
bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
UGxhdGZvcm1HTE9iamVjdCBhcmcxKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQs
IFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVl
biwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUs
IGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUs
IGFscGhhKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRF
cXVhdGlvbihHQ0dMZW51bSBtb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9uKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJs
ZW5kRXF1YXRpb24obW9kZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2Rl
QWxwaGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJs
ZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMoR0NHTGVudW0gc2ZhY3Rv
ciwgR0NHTGVudW0gZGZhY3RvcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dM
ZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jU2VwYXJh
dGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSkp
OwogfQogCiBHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhcihHQ0dMYml0Zmll
bGQgbWFzaykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzaykpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQ29sb3IoR0NHTGNsYW1wZiByZWQs
IEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJDb2xvcihy
ZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJDb2xvcihy
ZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0aChkZXB0aCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q2xlYXJEZXB0aChkZXB0aCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGVhclN0ZW5jaWwocykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVu
LCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+
KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSks
IHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNr
KHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGlj
X2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDb21waWxlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBpbGVTaGFkZXIo
YXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xpbnQgYm9yZGVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5
VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29w
eVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lk
dGgsIGhlaWdodCkpOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7
IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVh
dGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZm
ZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlQnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVm
ZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVGcmFtZWJ1
ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVm
ZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZUZyYW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZVByb2dyYW0oKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRl
UHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVByb2dy
YW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlUHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVBy
b2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVl
OwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVJlbmRlcmJ1ZmZlcigpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0g
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5k
ZXJidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5k
ZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlUmVuZGVyYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIoR0NHTGVudW0gYXJnMCkKIHsKICAgICB1aW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsK
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVGV4dHVyZSgpCiB7CiAgICAgdWludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVUZXh0dXJlKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVUZXh0dXJlKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3VsbEZhY2UoR0NHTGVudW0gbW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3VsbEZh
Y2UobW9kZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVCdWZmZXIoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZm
ZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZmZXIoYXJnMCkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVByb2dyYW0oUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZWxldGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZVByb2dyYW0oYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcihhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVSZW5kZXJidWZmZXIoYXJnMCkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTaGFkZXIo
YXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRl
eHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlbGV0ZVRleHR1cmUoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1bmMoZnVuYyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RGVwdGhGdW5jKGZ1bmMpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkZXB0aE1hc2soR0NHTGJvb2xlYW4gZmxhZykKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0YXRpY19jYXN0PGJvb2w+KGZs
YWcpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxh
ZykpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdl
KEdDR0xjbGFtcGYgek5lYXIsIEdDR0xjbGFtcGYgekZhcikKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhSYW5nZSh6TmVhciwgekZhciksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVwdGhSYW5nZSh6TmVhciwgekZhcikpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGV0YWNoU2hhZGVyKGFyZzAsIGFyZzEpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRldGFjaFNoYWRlcihhcmcwLCBhcmcxKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZShHQ0dMZW51bSBjYXApCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUoY2FwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEaXNhYmxlKGNhcCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkoaW5kZXgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3
QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5cyht
b2RlLCBmaXJzdCwgY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXMobW9kZSwg
Zmlyc3QsIGNvdW50KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50cyhtb2Rl
LCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUoR0NHTGVudW0gY2FwKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGUoY2FwKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGUoY2FwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheShpbmRleCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmZpbmlzaCgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkZpbmlzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCgpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZsdXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Rmx1c2goKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBH
Q0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNo
bWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBhcmczKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3Qg
YXJnMywgR0NHTGludCBsZXZlbCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0
YXJnZXQsIGFyZzMsIGxldmVsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1
cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2ZWwpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpmcm9udEZhY2UoR0NHTGVudW0gbW9k
ZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJvbnRG
YWNlKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyb250RmFjZShtb2RlKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXAoR0NHTGVudW0g
dGFyZ2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZW5lcmF0ZU1pcG1hcCh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFw
KHRhcmdldCkpOwogfQogCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFj
dGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3Rp
dmVJbmZvJiBhcmcyKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWIocHJv
Z3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2
ZUF0dHJpYjo6UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYjo6UmVwbHkocmV0dXJuVmFsdWUsIGFy
ZzIpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIGJvb2wgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQogewogICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtOjpSZXBseShyZXR1cm5WYWx1ZSwg
YXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJv
Z3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2
ZVVuaWZvcm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1l
KQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRy
aWJMb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRBdHRyaWJMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQog
ewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRl
cmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3Mp
OwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFN0cmluZyhHQ0dMZW51bSBuYW1lKQogewogICAgIFN0cmluZyByZXR1
cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFN0cmluZyhuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRTdHJpbmc6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RmxvYXR2
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHYocG5h
bWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEZsb2F0djo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2OjpSZXBseSh2YWx1ZVJlcGx5
KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRh
LCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihmbG9hdCkpOwogICAg
IApAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+CiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dM
U3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
IHZhbHVlUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZh
bHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCAxMF9zKTsKICAg
ICBpZiAoc2VuZFJlc3VsdCkKICAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHku
ZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKICAgICAKQEAgLTM2Nywy
OCArMzY3LDI4IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdl
cnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+CiBHQ0dMaW50NjQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQogewogICAg
IGludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NDo6UmVwbHkocmV0dXJuVmFsdWUp
LCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7
CiB9CiAKIEdDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2Vy
NjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKIHsKICAgICBpbnQ2NF90IHJldHVy
blZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZh
bHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4ocmV0dXJuVmFs
dWUpOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dy
YW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxi
b29sPiB2YWx1ZVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlLmJ1ZlNp
emUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52OjpSZXBs
eSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52OjpSZXBseSh2YWx1ZVJlcGx5KSwgMTBfcyk7
CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJl
cGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihib29sKSk7CiAgICAgCkBAIC0zOTcs
NDIgKzM5Nyw0MiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xl
YW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbAogR0NHTGVudW0gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQogewogICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJv
cjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRF
cnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEVycm9yOjpSZXBs
eShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NH
TGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVu
dW0gcG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaTo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQogCiBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJv
Z3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0cmluZyByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFByb2dyYW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1
ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFtZSkK
IHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBwbmFtZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpKGFyZzAsIHBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpOjpSZXBseShy
ZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogU3RyaW5n
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQogewogICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2co
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xv
Zzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
aGFkZXJJbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFNoYWRlckluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOwogfQogCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlw
ZSwKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdlUmVwbHk7CiAg
ICAgaW50MzJfdCBwcmVjaXNpb25SZXBseSA9IHsgfTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclByZWNp
c2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ6OlJlcGx5KHJhbmdlUmVw
bHksIHByZWNpc2lvblJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lv
blR5cGUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclByZWNp
c2lvbkZvcm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lzaW9uUmVwbHkpLCAxMF9zKTsKICAg
ICBpZiAoc2VuZFJlc3VsdCkgewogICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VSZXBs
eS5kYXRhKCksIHJhbmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOwogICAgICAgICBpZiAo
cHJlY2lzaW9uKQpAQCAtNDUxLDI4ICs0NTEsMjggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwK
IFN0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNv
dXJjZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJT
b3VyY2U6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xmbG9hdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CiAg
ICAgZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmY6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVy
Zih0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRU
ZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRU
ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJpKHRh
cmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBh
cmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1m
dihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdD
R0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVS
ZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVm
U2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2OjpS
ZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnY6OlJlcGx5KHZh
bHVlUmVwbHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkKICAgICAgICAgbWVtY3B5KHZh
bHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0
KSk7CiAgICAgCkBAIC00ODEsNyArNDgxLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW4KIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUp
CiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OwotICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVw
bHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRV
bmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdjo6UmVwbHkodmFsdWVSZXBseSksIDEw
X3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFs
dWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOwogICAgIApA
QCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGluCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCiB7CiAgICAg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gdmFsdWVSZXBseTsKLSAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVu
aWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3Jt
dWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgMTBfcyk7
CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJl
cGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZih1aW50MzJfdCkpOwogICAgIApAQCAt
NDk5LDMyNSArNDk5LDMyNSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaQogR0NHTGludCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1HTE9i
amVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbjo6UmVw
bHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdD
R0xzaXplaXB0ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIHVpbnQ2NF90IHJl
dHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9m
ZnNldChpbmRleCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFZlcnRleEF0dHJpYk9mZnNldDo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IG1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okhp
bnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpIaW50KHRhcmdldCwgbW9kZSkp
OwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZl
cihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsK
LSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVy
KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFy
ZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShy
ZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
cmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc0VuYWJsZWQoR0NHTGVudW0gY2FwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7
IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0Vu
YWJsZWQoY2FwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0VuYWJsZWQ6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFi
bGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkOjpS
ZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBi
b29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCAx
MF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
IH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFt
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9Owot
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNQcm9ncmFt
KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3JhbTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dyYW0o
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNQcm9ncmFtOjpSZXBs
eShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSks
IDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUp
OwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NoYWRl
cihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsK
LSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hhZGVy
KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hhZGVyOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hhZGVyKGFy
ZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hhZGVyOjpSZXBseShy
ZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
cmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc1RleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIGJvb2wgcmV0dXJu
VmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1RleHR1cmUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzVGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1RleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6bGluZVdpZHRoKEdDR0xmbG9hdCBhcmcwKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5lV2lkdGgoYXJnMCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmtQcm9ncmFtKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmtQcm9ncmFtKGFyZzApKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwgR0NH
TGludCBwYXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhlbFN0
b3JlaShwbmFtZSwgcGFyYW0pKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9seWdvbk9mZnNl
dChmYWN0b3IsIHVuaXRzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb2x5Z29uT2Zmc2V0KGZhY3Rv
ciwgdW5pdHMpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5k
ZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJi
dWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVDb3ZlcmFnZShHQ0dM
Y2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2Fz
dDxib29sPihpbnZlcnQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVDb3ZlcmFnZSh2YWx1
ZSwgc3RhdGljX2Nhc3Q8Ym9vbD4oaW52ZXJ0KSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpTY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcw
LCBjb25zdCBTdHJpbmcmIGFyZzEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlNoYWRlclNvdXJjZShhcmcwLCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpTaGFkZXJTb3VyY2UoYXJnMCwgYXJnMSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dM
dWludCBtYXNrKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5j
aWxGdW5jKGZ1bmMsIHJlZiwgbWFzaykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0gZnVu
YywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVm
LCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1
bmMsIHJlZiwgbWFzaykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlN0ZW5jaWxNYXNrKG1hc2spKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2spCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNr
U2VwYXJhdGUoZmFjZSwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2tTZXBh
cmF0ZShmYWNlLCBtYXNrKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFz
cykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNp
bE9wKGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wKGZh
aWwsIHpmYWlsLCB6cGFzcykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdDR0xl
bnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpw
YXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6
ZmFpbCwgenBhc3MpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBw
YXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xZihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMZmxvYXQgeCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtMWYobG9jYXRpb24sIHgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTFmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xpbnQgeCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtMWkobG9jYXRpb24sIHgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+
IHYpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm0xaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmKGxvY2F0aW9uLCB4LCB5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24sIHgsIHkpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEp
LCB2LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmkobG9jYXRp
b24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSkp
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3Qq
Pih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMml2KGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0
IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHopKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEp
LCB2LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50
IHopCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm0zaShsb2NhdGlvbiwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNpKGxv
Y2F0aW9uLCB4LCB5LCB6KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
M2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0zaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQg
dykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGYo
bG9jYXRpb24sIHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTRmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRpKGxvY2F0
aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGkobG9jYXRpb24s
IHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aXYo
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTRpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gdmFsdWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSks
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQq
Pih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1
ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDNmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXpl
KSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRy
aXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29s
Pih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFu
c3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVzZVByb2dy
YW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmFsaWRhdGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZhbGlkYXRl
UHJvZ3JhbShhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIxZihpbmRleCwg
eCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHgpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIxZnYoaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
ZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6
ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIyZihpbmRl
eCwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmYoaW5kZXgsIHgsIHkp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIy
ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVzKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWIyZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1
ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBH
Q0dMZmxvYXQgeikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZl
cnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliM2Z2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0LCAzPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEp
LCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmdihp
bmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0
ZihpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGYo
aW5kZXgsIHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdCwgND4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQs
IDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
dmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dM
aW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXpl
aSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBl
LCBzdGF0aWNfY2FzdDxib29sPihub3JtYWxpemVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRlcihp
bmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlkZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTAodGFyZ2V0LCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oYXJnMSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMCh0
YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMSh0YXJnZXQs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJ1ZmZlckRhdGExKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpLCB1
c2FnZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1
YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3Qg
R0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
dWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PiBkYXRhUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczA6OlJlcGx5KGRhdGFSZXBseSksIDEwX3MpOwog
ICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHku
ZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOwogICAgIApAQCAtODI1LDk3
ICs4MjUsOTcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVs
cyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHcKIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczEoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UmVhZG5QaXhlbHMxKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4
ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhl
bHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihvZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvbXByZXNzZWRUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQwKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UyRDEodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VT
aXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdl
MkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRh
dGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZChHQ0dM
ZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmlt
Y291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRy
YXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmlt
Y291bnQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxl
bWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2Vk
KG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNv
dW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291
bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBwcmltY291bnQpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29y
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZp
c29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZp
c29yKSk7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRl
VmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVW
ZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5KGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5KGFyZzApKTsKIH0KIAogR0NH
TGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXko
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheTo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRl
eEFycmF5KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4
QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5
KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheShhcmcwKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NH
TGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9m
ZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRh
KHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNl
dCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2
NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weUJ1ZmZlclN1YkRhdGEocmVhZFRh
cmdldCwgd3JpdGVUYXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWFkT2Zmc2V0KSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFy
ZzQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVy
U3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxHQ0dM
dm9pZD4gZGF0YSkKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGFSZXBs
eTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRCdWZmZXJTdWJEYXRhOjpSZXBseShkYXRhUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIGRhdGEuYnVmU2l6ZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YTo6UmVwbHkoZGF0YVJlcGx5
KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweShkYXRhLmRhdGEs
IGRhdGFSZXBseS5kYXRhKCksIGRhdGEuYnVmU2l6ZSAqIHNpemVvZih1aW50OF90KSk7CiAgICAg
CkBAIC05MjMsNDUxICs5MjMsNDUxIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIKIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNY
MCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBk
c3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJp
dGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEs
IHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEs
IGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVy
ZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBh
dHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZy
YW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWws
IGxheWVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxp
ZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGF0dGFjaG1lbnRzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0
YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRl
RnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRz
LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52
YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NH
TGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNo
bWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90
Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0aCwg
aGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZEJ1
ZmZlcihHQ0dMZW51bSBzcmMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlJlYWRCdWZmZXIoc3JjKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVmZmVy
KHNyYykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVz
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdl
MkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZl
bHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpU
ZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdl
M0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0QwKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEp
LCBwaXhlbHMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBp
bnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6
ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDEodGFyZ2V0LCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1h
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQg
em9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZv
aWQ+IHBpeGVscykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSks
IHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQs
IEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50
cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBm
b3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwg
R0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5
VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4
LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QwKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNp
emUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29tcHJlc3NlZFRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0
YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
bXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGlu
dHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0Qx
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9y
ZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBm
b3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1h
Z2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJl
c3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgU3RyaW5nJiBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxv
Y2F0aW9uKHByb2dyYW0sIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEZyYWdEYXRhTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpSZXBseShy
ZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0x1aW50IHYwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtMXVpKGxvY2F0aW9uLCB2MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTF1aShsb2NhdGlvbiwgdjApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2
MSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTJ1aShsb2NhdGlvbiwgdjAsIHYxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpKGxv
Y2F0aW9uLCB2MCwgdjEpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwg
R0NHTHVpbnQgdjIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpKGxvY2F0aW9uLCB2
MCwgdjEsIHYyLCB2MyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwg
djAsIHYxLCB2MiwgdjMpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4g
ZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTF1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMXVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4g
ZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4g
ZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTN1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4g
ZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTR1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNw
b3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGlj
X2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJh
bnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3Nl
KSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgy
eDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDRmdihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEu
YnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGlj
X2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8
Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3Nl
KSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRh
dGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xl
YW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDNmdihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6
ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdD
R0xpbnQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFs
dWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYkk0aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVp
KEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBHQ0dM
dWludCB3KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90
Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZl
cnRleEF0dHJpYkk0dWl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVm
U2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSVBvaW50ZXIoaW5kZXgs
IHNpemUsIHR5cGUsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBz
dHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwg
R0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQs
IHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnMo
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRy
YXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZm
ZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVzKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZl
cml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIs
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQz
Ml90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJ1aXYo
YnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZnYo
YnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVz
LmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVm
ZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmaShidWZmZXIsIGRyYXdi
dWZmZXIsIGRlcHRoLCBzdGVuY2lsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZp
KGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpKTsKIH0KIAogUGxhdGZvcm1HTE9i
amVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSgpCiB7CiAgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZWxldGVRdWVyeShxdWVyeSkpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkp
CiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNRdWVyeShxdWVyeSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwg
UGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFF1ZXJ5KHRhcmdldCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RW5kUXVlcnkodGFyZ2V0KSk7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdl
dCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5
KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1
ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAogR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmpl
Y3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICB1aW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWkocXVl
cnksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9i
amVjdHVpOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGVTYW1wbGVyKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBsZXIo
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBs
ZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyOjpS
ZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxl
dGVTYW1wbGVyKHNhbXBsZXIpKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aXNTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKIHsKICAgICBi
b29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNTYW1wbGVyKHNhbXBsZXIpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQs
IFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2FtcGxlciksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcikpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIs
IHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2Ft
cGxlciwgcG5hbWUsIHBhcmFtKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0p
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBw
YXJhbSkpOwogfQogCiBHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSkKIHsKICAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFy
YW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVl
KSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVy
LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBh
cmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCiBHQ0dMc3luYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5
bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCiB7CiAgICAgdWludDY0
X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZlbmNlU3luYyhjb25kaXRpb24sIGZsYWdzKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmM6OlJlcGx5KHJldHVyblZh
bHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRp
Y19jYXN0PGludHB0cl90PihyZXR1cm5WYWx1ZSkpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMoR0NHTHN5bmMgYXJnMCkKIHsKICAgICBib29s
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0
PGludHB0cl90PihhcmcwKSkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFy
ZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jOjpSZXBseShy
ZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4o
cmV0dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
bGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTeW5j
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSkp
KTsKIH0KIAogR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2Fp
dFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRpbWVv
dXQpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRX
YWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFs
dWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFN5bmMoR0NH
THN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6V2FpdFN5bmMoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3Ms
IHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVvdXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpXYWl0
U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJn
MCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGltZW91dCkpKTsKIH0KIAogR0NHTGlu
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBH
Q0dMZW51bSBwbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2koc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIHBuYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTeW5jaTo6UmVwbHkocmV0dXJu
VmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xP
YmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJh
Y2soKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2so
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVk
YmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwog
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUcmFuc2Zv
cm1GZWVkYmFjayhpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVHJhbnNmb3JtRmVlZGJh
Y2soaWQpKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKQogewogICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrKGlkKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJl
dHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihy
ZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymlu
ZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBpZCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRyYW5z
Zm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zv
cm1GZWVkYmFjayh0YXJnZXQsIGlkKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2RlKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblRyYW5z
Zm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luVHJh
bnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpFbmRUcmFuc2Zvcm1GZWVkYmFjaygpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBHQ0dM
ZW51bSBidWZmZXJNb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLCBidWZm
ZXJNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHBy
b2dyYW0sIHZhcnlpbmdzLCBidWZmZXJNb2RlKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCiB7Ci0gICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFt
LCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5nOjpSZXBseShhcmcyKSwgMTBfcyk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBhdXNlVHJhbnNmb3JtRmVlZGJh
Y2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRi
YWNrKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVz
dW1lVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zv
cm1GZWVkYmFjaygpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
aW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdM
T2JqZWN0IGJ1ZmZlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xpbnRw
dHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZl
ciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihh
cmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgs
IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2
NF90Pihhcmc0KSkpOwogfQogCiBWZWN0b3I8R0NHTHVpbnQ+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykKIHsKICAgICBWZWN0b3I8dWludDMyX3Q+
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVzKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlczo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5k
aWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1l
KQogewogICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zKHBy
b2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUlu
ZGljZXMsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3Rp
dmVVbmlmb3Jtczo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKIEdDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1
bmlmb3JtQmxvY2tOYW1lKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJs
b2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3Jh
bSwgdW5pZm9ybUJsb2NrTmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0
dXJuIHJldHVyblZhbHVlOwogfQogCiBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQogewogICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsg
fTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFj
dGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZTo6UmVwbHko
cmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGluZyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWludCB1
bmlmb3JtQmxvY2tCaW5kaW5nKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4
LCB1bmlmb3JtQmxvY2tCaW5kaW5nKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtQmxvY2tC
aW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9y
bUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCiB7CiAgICAgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNp
emUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1C
bG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZv
cm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBs
eSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkocGFyYW1zLmRh
dGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkp
OwogICAgIApAQCAtMTM3Niw5MCArMTM3Niw5MCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDRwog
R0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVl
KSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdD
R0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAs
IEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVs
ZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEs
IHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBz
cmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcikpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpKTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7
IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVh
dGVWZXJ0ZXhBcnJheU9FUygpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZVZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwg
MTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRl
VmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJy
YXlPRVMoYXJnMCkpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29s
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVMoYXJnMCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJu
VmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVy
blZhbHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVmVy
dGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5T0VTKGFyZzApKTsKIH0KIAogU3RyaW5nIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9
OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50TWFya2VyRVhU
KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50TWFya2VyRVhUKGFyZzApKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJrZXJF
WFQoY29uc3QgU3RyaW5nJiBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpQdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UHVzaEdyb3VwTWFya2VyRVhUKGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpwb3BHcm91cE1hcmtlckVYVCgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvcEdyb3VwTWFya2VyRVhUKCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1
ZnMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdC
dWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSkp
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQs
IHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9k
ZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdD
R0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBp
bmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlz
b3IpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5h
bGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xl
bnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCiB7CiAgICAgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVybmFsZm9ybWF0
aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIHBhcmFtcy5idWZTaXplKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlcm5hbGZvcm1hdGl2OjpSZXBseShw
YXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIHBh
cmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRl
cm5hbGZvcm1hdGl2OjpSZXBseShwYXJhbXNSZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVz
dWx0KQogICAgICAgICBtZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFy
YW1zLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGMwNzFlM2FhNmEyYmFhNWZmZjY1NzJh
N2Y3NDAzMGM0NTJjMGRjZWQuLjNkNTQ4NWY3YjNhNTZhNTk1NWFiMjNjNmI2NDhhNmY4NDVhNWRl
OTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAyMC0xMi0wOCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYkdMIEdQVSBwcm9jZXNzIElQQyBzaG91bGQgYmUgZmFzdGVy
IHRoYW4gY3VycmVudCBXZWJLaXQgSVBDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICB3aXAKKworICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbDoKKwogMjAyMC0xMi0wMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEltcGxlbWVudCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1ncHVwLXdlYmdsCmluZGV4IGYxNmI0MjIyOWNmMmY4MjhjNjZjN2U3YjQxNzczYzJlYmU0
NDMxMTQuLjI3ZDEzMGFkYTIxMmY4ZDljMzYwNDFiMmQ3MDIyZDk1ODdjODQzMDAgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorKysgYi9Ub29scy9TY3JpcHRz
L2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTg5LDcgKzg5LDcgQEAgY29udGV4dF9tZXNzYWdlc190
ZW1wbGF0ZSA9ICgKICAgICB0ZW1wbGF0ZV9wcmVhbWJsZQogICAgICsgIiIiI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAgIHZvaWQgUmVzaGFwZShpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIFBy
ZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hy
b25vdXMKQEAgLTk5LDYgKzk5LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wgTm90UmVmQ291bnRlZCB7ewogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25FbmFi
bGVkKFN0cmluZyBleHRlbnNpb24pCiAgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQo
KQorICAgIHZvaWQgU3RyZWFtV2FrZVVwKCkgV2FudHNDb25uZWN0aW9uIC8vIFRPRE86IHRoaXMg
c2hvdWxkIGJlIG1vdmVkIHRvIG1lc3NhZ2VzLnB5CiB7fQogfX0KIApAQCAtNTg3LDcgKzU4OCw3
IEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKICAgICAgICAgaXNf
YXN5bmMgPSBzZWxmLnJldHVybl90eXBlLmlzX3ZvaWQoKSBhbmQgbGVuKG91dF9leHBycykgPT0g
MAogICAgICAgICBpZiBpc19hc3luYzoKICAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBb
Ci0gICAgICAgICAgICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7IiwKKyAgICAgICAgICAgICAgICBmInNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSkpOyIsCiAgICAgICAgICAgICBd
CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZW5kX3Jlc3VsdCA9ICIiCkBAIC01OTksNyAr
NjAwLDcgQEAgY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChvYmplY3QpOgogICAgICAg
ICAgICAgICAgICAgICAoIn0iIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVsc2Ug
IiIpCiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsK
LSAgICAgICAgICAgICAgICBmIntzZW5kX3Jlc3VsdH1zZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX06OlJlcGx5KHtvdXRfZXhw
cnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOyIsCisgICAgICAgICAg
ICAgICAgZiJ7c2VuZF9yZXN1bHR9c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9OjpSZXBseSh7b3V0X2V4cHJzfSksIDEwX3Mp
OyIsCiAgICAgICAgICAgICBdCiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415641</attachid>
            <date>2020-12-08 07:07:24 -0800</date>
            <delta_ts>2020-12-11 07:17:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20201208170722.patch</filename>
            <type>text/plain</type>
            <size>175191</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI2ZGQ5YmI4MzI0NjA0ZjU5
YjllMjQwMTE1NTQ0Nzc2NTMzN2RjZTUuLjRiNDA1NmRkYmVkMTZiMzk0MjNjYjViZDBjMjJhYzg5
ZGIzZmZhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQzIEBACisyMDIwLTEyLTA4ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBjdXJyZW50IFdlYktpdCBJUEMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50YXRp
b24gaXMgYSBiYWNrZ3JvdW5kIGluZm8gaW4gdGhlIG1lZXRpbmcgYWJvdXQKKyAgICAgICAgc3Bl
ZWRpbmcgdXAgV2ViR0wgaW1wbGVtZXRhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnQgYSBjb25j
ZXB0IG9mIGRlc3RpbmF0aW9uIG1lc3NhZ2Ugc3RyZWFtLiBJUEMgbWVzc2FnZXMgY2FuCisgICAg
ICAgIGJlIHNlbnQgZGlyZWN0bHkgdG8gdGhlIHJlY2VpdmluZyBkZXN0aW5hdGlvbiB3aXRoIE1l
c3NhZ2VTdHJlYW1TZW5kZXIKKyAgICAgICAgYW5kIHJlY2VpdmVkIHdpdGggTWVzc2FnZVN0cmVh
bVJlY2VpdmVyLgorCisgICAgICAgIEltcGxlbWVudGVkIGFzIGZvbGxvd3M6CisgICAgICAgIFNl
bmRlciBzaGFyZXMgdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSB3aXRoIHRoZSBkZXN0aW5hdGlvbiB3
aGVuIGNyZWF0aW5nCisgICAgICAgIHRoZSBkZXN0aW5hdGlvbi4KKworICAgICAgICBJZiB0aGUg
bWVzc2FnZSBmaXRzIHRvIHRoZSBzdHJlYW0gc2hhcmVkIG1lbW9yeSBhcmVhLCB3cml0ZSBpdCB0
aGVyZS4KKyAgICAgICAgT3RoZXJ3aXNlIHNlbmQgaXQgdmlhIG5vcm1hbCBJUEMgYXMgb3V0IG9m
IGxpbmUgbWVzc2FnZS4KKworICAgICAgICBSZWNlaXZlciB3YWl0cyBmb3Igbm9ybWFsIElQQyBt
ZXNzYWdlcywgaXQgZG9lcyBub3QgZG8gYW55dGhpbmcgb3V0IG9mIG9yZGluYXJ5CisgICAgICAg
IHVudGlsIGEgd2FrZXVwIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuIFRoZW4gcmVjZWl2ZXIgd2lsbCBw
cm9jZXNzIHRoZSBzdHJlYW0KKyAgICAgICAgdW50aWwgc3RyZWFtIGhhcyBubyBtb3JlIG1lc3Nh
Z2VzIG9yIHVudGlsIG91dCBvdXQgb2YgbGluZSBtZXNzYWdlIG1hcmtlciBpcyByZWFjaGVkLgor
CisgICAgICAgIE1lc3NhZ2VzIHRvIHRoZSBkZXN0aW5hdGlvbiBhcnJpdmUgYXMgYmVmb3JlLCBp
biBvcmRlci4gRm9yIGVhY2ggb3V0IG9mIGxpbmUKKyAgICAgICAgbWVzc2FnZSwgYW4gZW50cnkg
aXMgcHVzaGVkIHRvIHRoZSBzdHJlYW0uIFJlY2VpdmVyIHdpbGwgc3RvcCBwcm9jZXNzaW5nIHRo
ZQorICAgICAgICBzdHJlYW0gYW5kbSBwcm9jZXNzaW5nIHdpbGwgY29udGludWUgb25jZSB0aGUg
b3V0LW9mLWxpbmUKKyAgICAgICAgbWVzc2FnZSBoYXMgYmVlbiBwcm9jZXNzZWQuCisKKyAgICAg
ICAgU2VuZGVyIGNhbiB3cml0ZSBtZXNzYWdlcyB0byB0aGUgc3RyZWFtIHNpbXVsdGFuZW91cyB0
byB0aGUgcmVjZWl2ZXIgcmVhZGluZworICAgICAgICB0aGUgbWVzc2FnZXMuIFRoaXMgaXMgaW1w
bGVtZW50ZWQgYXMgYSByaW5nIGJ1ZmZlciB3aXRoIGF0b21pYyB3cml0ZSBhbmQgcmVhZCBwb2lu
dGVycy4KKworICAgICAgICBXSVA6CisgICAgICAgICAtIFNpbXBsZSB0aGluZ3Mgd29yaworICAg
ICAgICAgLSBCdWdneSBpbiBjZXJ0YWluIGNvbmRpdGlvbnMgKGFzc2VydHMvY3Jhc2hlcykKKyAg
ICAgICAgICAgRklYTUU6IGZpeCB0aGUgYnVncworICAgICAgICAgLSBVbnRydXN0ZWQgaW5wdXQg
aXMgbm90IGNoZWNrZWQgaW4gZXhhY3RseSBhbGwgcGxhY2VzLgorICAgICAgICAgICBGSVhNRTog
Y2hlY2sgdW50cnVzdGVkIGlucHV0IGFuZCBjbG9zZSB0aGUgY29ubmVjdGlvbiBvbiBrbm93biB2
aW9sYXRpb25zLgorICAgICAgICAgLSBBdG9taWMgb3BzIGFyZSB0aGUgbW9zdCByZXN0cmljdGVk
CisgICAgICAgICAgIEZJWE1FOiByZWxheCB0aGUgY29uZGl0aW9ucyBpZiBwb3NzaWJsZQorICAg
ICAgICAgLSBTdHJlYW0gd2FrZXVwIG1lc3NhZ2UgaXMgc3BlY2lmaWMgdG8gV2ViR0wKKyAgICAg
ICAgICAgRklYTUU6IG1vdmUgdG8gbWVzc2FnZXMucHkgYW5kIGdlbmVyYWxpemUuCisgICAgICAg
ICAtIENoYW5nZXMgcmVsYXRlZCB0byB0aGUgSVBDOjpFbmNvZGVyIC8gSVBDOjpEZWNvZGVyIHNp
bXBsaWZpY2F0aW9uIGFyZSBub3QgeWV0IGRvbmUuCisgICAgICAgICAgIEZJWE1FOiBtYWtlIHRo
ZSBzdHJlYW0gbWVzc2FnZSBoZWFkZXIgY29uc2lzdGVudCwgcmVtb3ZlIHRoZSBkZXN0aW5hdGlv
biBpZCBmcm9tCisgICAgICAgICAgIHRoZSBkYXRhLCBjbGVhbiB0aGUgY2hhbmdlcy4KKworCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRH
TCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSk6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjppc091
dE9mTGluZVN0cmVhbU1lc3NhZ2UgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNv
ZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rlc3RpbmF0aW9uU3RyZWFtLmg6IEFkZGVk
LgorICAgICAgICAoSVBDOjpEZXN0aW5hdGlvblN0cmVhbUJhc2U6OkRlc3RpbmF0aW9uU3RyZWFt
QmFzZSk6CisgICAgICAgIChJUEM6OkRlc3RpbmF0aW9uU3RyZWFtQmFzZTo6aGVhZGVyU2l6ZSk6
CisgICAgICAgIChJUEM6OkRlc3RpbmF0aW9uU3RyZWFtQmFzZTo6aGVhZGVyIGNvbnN0KToKKyAg
ICAgICAgKElQQzo6RGVzdGluYXRpb25TdHJlYW1CYXNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OkVuY29k
ZXIpOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjpyZXNlcnZlKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvRW5jb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VGbGFncy5oLgorICAgICAgICAo
SVBDOjpNZXNzYWdlU3RyZWFtUmVjZWl2ZXI6Ok1lc3NhZ2VTdHJlYW1SZWNlaXZlcik6CisgICAg
ICAgIChJUEM6Ok1lc3NhZ2VTdHJlYW1SZWNlaXZlcjo6c3RyZWFtV2FrZVVwKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVNlbmRlci5oOiBBZGRlZC4KKyAgICAgICAgKElQ
Qzo6TWVzc2FnZVN0cmVhbVNlbmRlcjo6TWVzc2FnZVN0cmVhbVNlbmRlcik6CisgICAgICAgIChJ
UEM6Ok1lc3NhZ2VTdHJlYW1TZW5kZXI6OnNlbmQpOgorICAgICAgICAoSVBDOjpNZXNzYWdlU3Ry
ZWFtU2VuZGVyOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTdHJlYW1TZW5kZXI6
OmRlc3RpbmF0aW9uU3RyZWFtSGFuZGxlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JE
aXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3Jz
VG9TeW50aGV0aWNFcnJvckxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YXR0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRGcmFtZWJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRS
ZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJsZW5kQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jU2VwYXJhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjbGVhckNvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y2xlYXJEZXB0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFzayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJE
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3JlYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVGV4dHVyZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmN1bGxGYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRl
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZGVsZXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoRnVuYyk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoTWFzayk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoUmFuZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXRhY2hTaGFk
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNh
YmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmluaXNoKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Zmx1c2gpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZnJvbnRGYWNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QXR0cmliTG9j
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRCdWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbWkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFudik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRT
aGFkZXJJbmZvTG9nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRl
cmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRV
bmlmb3JtZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNFbmFibGVkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUHJv
Z3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlz
UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpsaW5lV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVDb3ZlcmFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNjaXNz
b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaGFk
ZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpzdGVuY2lsRnVuYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFzayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3ApOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBh
cmFtZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp0ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTFmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0xaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpdik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2kpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2l2
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTRmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm00aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmFsaWRhdGVQcm9ncmFt
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2Z2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
NGYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmlld3BvcnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2Vk
VGV4SW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYkRpdmlzb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlCdWZmZXJTdWJE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
QnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJsaXRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0
ZVN1YkZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cmVhZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UyRCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UzRCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdl
M0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhT
dWJJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y29weVRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFM
b2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm0xdWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMnVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTN1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm00dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTN1aXYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDNmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1N
YXRyaXgzeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNm
dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRl
eEF0dHJpYkk0aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdSYW5n
ZUVsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmaSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVF1ZXJ5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUXVlcnkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5RdWVy
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFF1
ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
UXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRRdWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRlbGV0ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRl
cmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRT
YW1wbGVyUGFyYW1ldGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmVuY2VTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU3luYyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsaWVudFdhaXRTeW5jKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFN5bmMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5UcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJCYXNlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlclJh
bmdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VW5pZm9ybUluZGljZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1CbG9ja0JpbmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZm
ZXJBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhB
cnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVu
dE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnB1c2hHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYpOgor
CiAyMDIwLTEyLTA0ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgR1BVIFByb2Nlc3MgV2luZG93U2VydmVyIGJsb2NraW5nIHByZXZlbnRzIENHTApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCmluZGV4IDQ0YjlmNjNlMTRjNTBiNzQxOTkzZDZmMzVhNWE5NWY1YWZkODBhNWEuLjhi
YzM2ODExNGZjNTkzYjhkNjdhZDJkZjMyNWE4YzMxOTg3N2VkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAg
LTI5NSwxMCArMjk1LDEwIEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiB9CiAKICNpZiBFTkFC
TEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVz
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRH
TChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVh
dGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
ICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsICp0
aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSk7CiAgICAg
fSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCmluZGV4IDVhZWRmYmI0ZDJjYWM3Yjc2NjBmZjA3MzYwOWQzNzdjNjAxNTg0YjQu
LmE4N2ZmNGEzMDUwMzdlODhhNTBjZTViNmQwZDE5YmQzMzMzNDU4YzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
MTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2Vu
ZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAg
dm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVH
cmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJl
YW0pOwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5
ZDU0ZTE2NDU5NWIwYTM2MWRmZTRjNzViZmY0MDE4YTg1NzU5YzhmLi44OWE4ZmU3NzE1YTBlMGNk
M2Y0YmE0ZmE3Y2U3NjEyZDA0ZWU4MTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtMjYsNyArMjYsNyBAQCBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdh
bnRzRGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2Vi
S2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cikKICAgICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFdF
QkdMKQotICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgdm9pZCBD
cmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSBzdHJlYW0pCiAgICAgdm9pZCBSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woV2ViS2l0OjpH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQog
I2VuZGlmCiAgICAgdm9pZCBDbGVhck5vd1BsYXlpbmdJbmZvKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuY3BwCmluZGV4IGQ4MDRkMWZhOTk5NGQ1ZmZmMzE0MzY0ZDU5YmVmOTVlYjQ5ZWE5OTkuLjdh
NThiNGZkYjUzMWQ2YWEyMTUyMTIwMDdhYjI4ODgwMzZiZDQ2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmNwcApAQCAtMzksMTUgKzM5LDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVh
dGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQor
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgUmVmUHRyPFNoYXJlZE1lbW9yeTo6SGFuZGxlPiYmKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogI2VuZGlmCiAKLVJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTD4gY29udGV4dCkKLSAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQor
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmJiBzdHJlYW0sIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4
dCkKKyAgICA6IE1lc3NhZ2VTdHJlYW1SZWNlaXZlcihXVEZNb3ZlKHN0cmVhbSkpCisgICAgLCBt
X2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKICAgICAsIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggN2RiMGNmNTE4YWJmOWJiMjVhYjMzNmRkZGUwMzk5
OTI1YWEwNWYzMi4uZmMxYzc5MWFhMzAwYjRlMDI0MjlmOTBmMWYyYzJkZWZjMTkzZWMwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI5LDggKzI5LDggQEAKIAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKLSNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5j
bHVkZSAiTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL0V4dGVu
c2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4K
QEAgLTU3LDI0ICs1NywyOSBAQCBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xh
c3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKICAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIKICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VTdHJlYW1SZWNlaXZlcjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4KICAgICAsIHBy
aXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSYmIHN0cmVhbSk7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkgb3ZlcnJpZGU7CiAK
ICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KCkgY29uc3Q7CiAKK3B1YmxpYzoKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlk
ZXMuCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZp
bmFsOworCisgICAgLy8gSVBDOjpNZXNzYWdlU3RyZWFtUmVjZWl2ZXIgdGVtcGxhdGUgY29udHJh
Y3QuCisgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKTsKKwogcHJvdGVjdGVkOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4pOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlJiYgc3RyZWFtLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w+KTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCiAgICAgSVBDOjpD
b25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVp
bnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CiAKLSAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwotCiAgICAgLy8gR3JhcGhpY3NDb250
ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBkaWRDb21wb3NpdGUoKSBmaW5hbDsK
ICAgICB2b2lkIGZvcmNlQ29udGV4dExvc3QoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBhYTAzNDcyNWY5YWE0MmY0MmJkM2M4YTAwYjBhYTE4
MDkwYTU5YjlhLi5hNjdlYmVmNGZhMTAyNmQxNmMyOWY2MzU2OTQzZjA3Njk5Njc5ZDljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBA
CiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5v
dCBlZGl0LgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNz
YWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2Vz
IC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2
b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRp
c3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCkBAIC0zNCw2ICszNCw3IEBAIG1lc3NhZ2VzIC0+IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgewogI2VuZGlmCiAgICAgdm9pZCBF
bnN1cmVFeHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCiAgICAgdm9pZCBOb3RpZnlN
YXJrQ29udGV4dENoYW5nZWQoKQorICAgIHZvaWQgU3RyZWFtV2FrZVVwKCkgV2FudHNDb25uZWN0
aW9uIC8vIFRPRE86IHRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIG1lc3NhZ2VzLnB5CiAKICAgICB2
b2lkIFNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQogICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJy
b3IodWludDMyX3QgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5k
ZXggZTdjNDBjOTg1Y2I3ZDI3MjI4NjlhNWRmZjk2OTE5NDcwNzdhZjQ2Yy4uMzk0OWNjZGM4MTc1
NmMzZDEzNzA0N2EwZjE0NzVmYWYxZWZhMDNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWlu
IHsKIHB1YmxpYzoKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pOwogICAgIH5SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hKCkgZmluYWwgPSBkZWZhdWx0OwogCiAgICAgLy8gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgb3ZlcnJpZGVzLgpAQCAtNTUsMTMgKzU1LDEzIEBAIHByaXZhdGU6CiAKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcikKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFt
KQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+
KG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGF0dHJpYnV0ZXMsIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpOworICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+KG5ldyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hKGF0dHJpYnV0ZXMsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV1RGTW92ZShzdHJlYW0pKSk7CiB9CiAKLVJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJp
YnV0ZXMsIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
cmVhdGVGb3JHUFVQcm9jZXNzKGF0dHJpYnV0ZXMsIHRoaXMpKQorUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlm
aWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIFdURk1vdmUo
c3RyZWFtKSwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0
cmlidXRlcywgdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5j
cHAKaW5kZXggMmNiNzliNzMxYzhkMzUxYTJkMDU5NDYzNjJjNWFiOGJiYWRiZGM1ZS4uNDFmZTAy
MDA3MGVlOWVkNDgwODNhOGJjMDYyMzI3ZjAyMTc1NTdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGVjb2Rlci5jcHAKQEAgLTExNSw2ICsxMTUsMTIgQEAgYm9vbCBEZWNvZGVyOjpzaG91
bGRVc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcoKSBjb25zdAogICAgIHJldHVybiBt
X21lc3NhZ2VGbGFncy5jb250YWlucyhNZXNzYWdlRmxhZ3M6OlVzZUZ1bGx5U3luY2hyb25vdXNN
b2RlRm9yVGVzdGluZyk7CiB9CiAKK2Jvb2wgRGVjb2Rlcjo6aXNPdXRPZkxpbmVTdHJlYW1NZXNz
YWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZXNzYWdlRmxhZ3MuY29udGFpbnMoTWVzc2Fn
ZUZsYWdzOjpTdHJlYW1NZXNzYWdlT3V0T2ZMaW5lKTsKK30KKworCiAjaWYgUExBVEZPUk0oTUFD
KQogdm9pZCBEZWNvZGVyOjpzZXRJbXBvcnRhbmNlQXNzZXJ0aW9uKHN0ZDo6dW5pcXVlX3B0cjxJ
bXBvcnRhbmNlQXNzZXJ0aW9uPiBhc3NlcnRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
ZWNvZGVyLmgKaW5kZXggMzQ0Y2U2ODgyZmM5MDk4NGIyZmE1N2JmOWM0OGI5NjUwZTBmZjc0ZS4u
MDM0MGM5NWZmNjY5OTlmOTZiNjIxNmFmYTdlMzAxYmY3MDI3MjU0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RlY29kZXIuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c1N5bmNNZXNzYWdlKCkgY29uc3Q7CiAgICAgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5
bmNSZXBseSBzaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSgpIGNv
bnN0OwogICAgIGJvb2wgc2hvdWxkVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCkg
Y29uc3Q7CisgICAgYm9vbCBpc091dE9mTGluZVN0cmVhbU1lc3NhZ2UoKSBjb25zdDsKIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHNldEltcG9ydGFuY2VBc3NlcnRpb24oc3RkOjp1bmlx
dWVfcHRyPEltcG9ydGFuY2VBc3NlcnRpb24+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Rlc3RpbmF0aW9uU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZXN0aW5hdGlvblN0cmVhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5OWJiYWNkMGU3N2NjMjllMTk4
YmRlMzdjOTViNDNlMTIxNzUwZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZXN0aW5hdGlvblN0cmVhbS5oCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRl
IDx3dGYvQXRvbWljcy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworLy8gU3RyZWFtIG9mIG1lc3Nh
Z2VzIHRvIGEgc3BlY2lmaWMgZGVzdGluYXRpb24gcmVjZWl2ZXIuCisvLyBUaGUgZGVzdGluYXRp
b24gcmVjZWl2ZXIgd2lsbCByZWNlaXZlIG1lc3NhZ2VzIGluIG9yZGVyIF9mb3IgdGhlIGRlc3Rp
bmF0aW9uIG1lc3NhZ2VzXy4KKy8vIFRoZSB3aG9sZSBjb25uZWN0aW9uIG1lc3NhZ2Ugb3JkZXIg
aXMgbm90IHByZXNlcnZlZC4KKy8vIEltcGxlbWVudGVkIGFzIGEgc2hhcmVkIG1lbW9yeSByaW5n
IGJ1ZmZlci4KKy8vIFNlZSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZQorY2xhc3MgRGVzdGluYXRp
b25TdHJlYW1CYXNlIHsKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBEZXN0aW5hdGlvblN0cmVh
bUJhc2Uoc2l6ZV90IG1pblJlY29yZFNpemUpCisgICAgICAgIDogbV9taW5SZWNvcmRTaXplKG1p
blJlY29yZFNpemUpCisgICAgeworICAgIH0KKyAgICB+RGVzdGluYXRpb25TdHJlYW1CYXNlKCkg
PSBkZWZhdWx0OworICAgIHN0cnVjdCBIZWFkZXIgeworICAgICAgICBBdG9taWM8c2l6ZV90PiB3
cml0ZUxpbWl0OworICAgICAgICBBdG9taWM8c2l6ZV90PiByZWFkTGltaXQ7CisgICAgfTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBoZWFkZXJTaXplKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihzdGQ6Om1heF9hbGlnbl90KT4oc2l6ZW9m
KEhlYWRlcikpOworICAgIH0KKyAgICBIZWFkZXImIGhlYWRlcigpIGNvbnN0IHsgcmV0dXJuICpy
ZWludGVycHJldF9jYXN0PEhlYWRlcio+KG1fc2hhcmVkTWVtb3J5LT5kYXRhKCkpOyB9CisgICAg
dWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX3No
YXJlZE1lbW9yeS0+ZGF0YSgpKSArIGhlYWRlclNpemUoKTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IGtSZWFkTGltaXRTbGVlcFRhZyA9IDEgPDwgMzE7CisgICAgUmVmUHRyPFdlYktp
dDo6U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKKyAgICBjb25zdCBzaXplX3QgbV9taW5S
ZWNvcmRTaXplOworfTsKKworY2xhc3MgRGVzdGluYXRpb25TdHJlYW1Xcml0ZXIgZmluYWwgOiBE
ZXN0aW5hdGlvblN0cmVhbUJhc2UgeworcHVibGljOgorICAgIGV4cGxpY2l0IERlc3RpbmF0aW9u
U3RyZWFtV3JpdGVyKHNpemVfdCBzaXplLCBzaXplX3QgbWluUmVjb3JkU2l6ZSkKKyAgICAgICAg
OiBEZXN0aW5hdGlvblN0cmVhbUJhc2UobWluUmVjb3JkU2l6ZSkKKyAgICB7CisgICAgICAgIG1f
c2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemUpOworICAg
ICAgICAvLyBSZWFkIHN0YXJ0cyBmcm9tIDAgd2l0aCByZWFkZXIgc2xlZXBpbmcuCisgICAgICAg
IGhlYWRlcigpLnJlYWRMaW1pdC5zdG9yZShrUmVhZExpbWl0U2xlZXBUYWcpOworICAgICAgICBo
ZWFkZXIoKS53cml0ZUxpbWl0LnN0b3JlKDApOworICAgIH0KKyAgICBXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIGRlc3RpbmF0aW9uU3RyZWFtSGFuZGxlKCkKKyAgICB7CisgICAgICAg
IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgICAgICBtX3NoYXJlZE1l
bW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRXcml0ZSk7CisgICAgICAgIHJldHVybiB7IFdURk1vdmUoaGFuZGxlKSwgZGF0YVNp
emUoKSB9OworICAgIH0KKyAgICB2b2lkIHdyaXRlKHVpbnQ4X3QqJiBwdHIsIHNpemVfdCYgY2Fw
YWNpdHkpCisgICAgeworICAgICAgICBzaXplX3Qgd3JpdGVMaW1pdCA9IHN0ZDo6bWluKGhlYWRl
cigpLndyaXRlTGltaXQubG9hZCgpLCBkYXRhU2l6ZSgpKTsKKyAgICAgICAgaWYgKHdyaXRlTGlt
aXQgPD0gbV93cml0ZU9mZnNldCkKKyAgICAgICAgICAgIHdyaXRlTGltaXQgPSBkYXRhU2l6ZSgp
OworICAgICAgICBjYXBhY2l0eSA9IHdyaXRlTGltaXQgLSBtX3dyaXRlT2Zmc2V0OworICAgICAg
ICBwdHIgPSBkYXRhKCkgKyBtX3dyaXRlT2Zmc2V0OworICAgIH0KKyAgICBlbnVtIGNsYXNzIFdh
a2VVcFJlYWRlciA6IGJvb2wgeworICAgICAgICBObywKKyAgICAgICAgWWVzCisgICAgfTsKKyAg
ICBXYWtlVXBSZWFkZXIgY29tbWl0V3JpdGUoc2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBz
aXplX3QgZXhwZWN0ZWRSZWFkTGltaXQgPSBtX3dyaXRlT2Zmc2V0OworICAgICAgICBtX3dyaXRl
T2Zmc2V0ICs9IHNpemU7CisgICAgICAgIEFTU0VSVChtX3dyaXRlT2Zmc2V0IDw9IGRhdGFTaXpl
KCkpOworICAgICAgICBpZiAobV93cml0ZU9mZnNldCArIG1fbWluUmVjb3JkU2l6ZSA+PSBkYXRh
U2l6ZSgpKQorICAgICAgICAgICAgbV93cml0ZU9mZnNldCA9IDA7CisgICAgICAgIHNpemVfdCBy
ZWFkTGltaXQgPSBoZWFkZXIoKS5yZWFkTGltaXQuZXhjaGFuZ2UobV93cml0ZU9mZnNldCk7Cisg
ICAgICAgIGlmIChyZWFkTGltaXQgIT0gZXhwZWN0ZWRSZWFkTGltaXQpCisgICAgICAgICAgICBy
ZXR1cm4gV2FrZVVwUmVhZGVyOjpZZXM7CisgICAgICAgIHJldHVybiBXYWtlVXBSZWFkZXI6Ok5v
OworICAgIH0KK3ByaXZhdGU6CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaGFyZWRNZW1vcnktPnNpemUoKSAtIGhlYWRlclNpemUoKTsgfQorCisgICAgc2l6ZV90IG1f
d3JpdGVPZmZzZXQgeyB9OworfTsKK2NsYXNzIERlc3RpbmF0aW9uU3RyZWFtUmVhZGVyIGZpbmFs
IDogRGVzdGluYXRpb25TdHJlYW1CYXNlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEZXN0aW5h
dGlvblN0cmVhbVJlYWRlcihXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFt
LCBzaXplX3QgbWluUmVjb3JkU2l6ZSkKKyAgICAgICAgOiBEZXN0aW5hdGlvblN0cmVhbUJhc2Uo
bWluUmVjb3JkU2l6ZSkKKyAgICAgICAgLCBtX2RhdGFTaXplKHN0YXRpY19jYXN0PHNpemVfdD4o
c3RyZWFtLmRhdGFTaXplKSkKKyAgICB7CisgICAgICAgIG1fc2hhcmVkTWVtb3J5ID0gV2ViS2l0
OjpTaGFyZWRNZW1vcnk6Om1hcChzdHJlYW0uaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKyAgICB9CisgICAgdm9pZCByZWFkKGNvbnN0IHVpbnQ4
X3QqJiBwdHIsIHNpemVfdCYgc2l6ZSkKKyAgICB7CisgICAgICAgIHNpemVfdCByZWFkTGltaXQg
PSBoZWFkZXIoKS5yZWFkTGltaXQubG9hZCgpOworICAgICAgICByZWFkSW1wbChwdHIsIHNpemUs
IHJlYWRMaW1pdCk7CisgICAgfQorICAgIHZvaWQgY29tbWl0UmVhZChzaXplX3QgcmVhZFNpemUs
IGNvbnN0IHVpbnQ4X3QqJiBwdHIsIHNpemVfdCYgc2l6ZSkKKyAgICB7CisgICAgICAgIG1fcmVh
ZE9mZnNldCArPSByZWFkU2l6ZTsKKyAgICAgICAgQVNTRVJUKG1fcmVhZE9mZnNldCA8PSBkYXRh
U2l6ZSgpKTsKKyAgICAgICAgaWYgKG1fcmVhZE9mZnNldCArIG1fbWluUmVjb3JkU2l6ZSA+PSBk
YXRhU2l6ZSgpKQorICAgICAgICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsKKyAgICAgICAgaGVhZGVy
KCkud3JpdGVMaW1pdC5zdG9yZShtX3JlYWRPZmZzZXQpOworICAgICAgICBzaXplX3QgcmVhZExp
bWl0ID0gaGVhZGVyKCkucmVhZExpbWl0LmxvYWQoKTsKKyAgICAgICAgd2hpbGUgKHJlYWRMaW1p
dCA9PSBtX3JlYWRPZmZzZXQpCisgICAgICAgICAgICByZWFkTGltaXQgPSBoZWFkZXIoKS5yZWFk
TGltaXQuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHJlYWRMaW1pdCwgcmVhZExpbWl0IHwga1JlYWRM
aW1pdFNsZWVwVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9zZXFfY3N0LCBzdGQ6Om1lbW9yeV9vcmRl
cl9zZXFfY3N0KTsKKyAgICAgICAgcmVhZEltcGwocHRyLCBzaXplLCByZWFkTGltaXQpOworICAg
IH0KK3ByaXZhdGU6CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
U2l6ZSAtIGhlYWRlclNpemUoKTsgfQorCisgICAgdm9pZCByZWFkSW1wbChjb25zdCB1aW50OF90
KiYgcHRyLCBzaXplX3QmIHNpemUsIHNpemVfdCByZWFkTGltaXQpCisgICAgeworICAgICAgICBy
ZWFkTGltaXQgJj0gfmtSZWFkTGltaXRTbGVlcFRhZzsKKyAgICAgICAgcmVhZExpbWl0ID0gc3Rk
OjptaW4ocmVhZExpbWl0LCBkYXRhU2l6ZSgpKTsgLy8gRklYTUU6IE1hcmsgaW52YWxpZC4KKyAg
ICAgICAgaWYgKHJlYWRMaW1pdCA8IG1fcmVhZE9mZnNldCkKKyAgICAgICAgICAgIHJlYWRMaW1p
dCA9IGRhdGFTaXplKCk7CisgICAgICAgIHNpemUgPSByZWFkTGltaXQgLSBtX3JlYWRPZmZzZXQ7
CisgICAgICAgIHB0ciA9IGRhdGEoKSArIG1fcmVhZE9mZnNldDsKKyAgICAgICAgQVNTRVJUKHNp
emUgPD0gZGF0YVNpemUoKSk7CisgICAgfQorCisgICAgY29uc3Qgc2l6ZV90IG1fZGF0YVNpemU7
CisgICAgc2l6ZV90IG1fcmVhZE9mZnNldCB7IDAgfTsKK307Cit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKaW5kZXggZTgzYTNlNGFmZjQy
YTU3NTUwNWRjOGYwNzMxN2ExYzFhYzE5ZGVhZS4uYTAzYTEwNjA5NWVhY2FkNTI2YzgyMDU3NTIx
N2UyNTIwMGUwM2ZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5j
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKQEAg
LTczLDYgKzczLDE4IEBAIEVuY29kZXI6OkVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCiAgICAgZW5jb2RlSGVhZGVyKCk7CiB9CiAKK0VuY29k
ZXI6OkVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbUNhcGFjaXR5KQorICAgIDogbV9tZXNz
YWdlTmFtZShtZXNzYWdlTmFtZSkKKyAgICAsIG1fZGVzdGluYXRpb25JRChkZXN0aW5hdGlvbklE
KQorICAgICwgbV9idWZmZXIoc3RyZWFtKQorICAgICwgbV9idWZmZXJQb2ludGVyKHN0cmVhbSkK
KyAgICAsIG1fYnVmZmVyU2l6ZSgwKQorICAgICwgbV9idWZmZXJDYXBhY2l0eShzdHJlYW1DYXBh
Y2l0eSkKKyAgICAsIG1faXNTdHJlYW1FbmNvZGVyKHRydWUpCit7CisgICAgZW5jb2RlSGVhZGVy
KCk7Cit9CisKIEVuY29kZXI6OkVuY29kZXIoQ29uc3RydWN0V2l0aG91dEhlYWRlclRhZykKICAg
ICA6IG1fbWVzc2FnZU5hbWUoKQogICAgICwgbV9kZXN0aW5hdGlvbklEKDApCkBAIC0xNjAsNiAr
MTcyLDExIEBAIHZvaWQgRW5jb2Rlcjo6cmVzZXJ2ZShzaXplX3Qgc2l6ZSkKICAgICBpZiAoc2l6
ZSA8PSBtX2J1ZmZlckNhcGFjaXR5KQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9pc1N0
cmVhbUVuY29kZXIpIHsKKyAgICAgICAgbWVzc2FnZUZsYWdzKCkuYWRkKE1lc3NhZ2VGbGFnczo6
U3RyZWFtTWVzc2FnZU91dE9mTGluZSk7CisgICAgICAgIG1faXNTdHJlYW1FbmNvZGVyID0gZmFs
c2U7CisgICAgfQorCiAgICAgc2l6ZV90IG5ld0NhcGFjaXR5ID0gcm91bmRVcFRvQWxpZ25tZW50
KG1fYnVmZmVyQ2FwYWNpdHkgKiAyLCA0MDk2KTsKICAgICB3aGlsZSAobmV3Q2FwYWNpdHkgPCBz
aXplKQogICAgICAgICBuZXdDYXBhY2l0eSAqPSAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5j
b2Rlci5oCmluZGV4IGVhNjE5NjdiZTFlYmNiZDhiNmZiYmFhOGI4NWFmNDE4ZThkNTBjY2EuLjhm
YTVkYWFmYjMyOTQ0ZDYyZGQ5ZDVjZTNjMTc0ZjQyM2E3ZTYzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9FbmNvZGVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgRW5jb2RlciBmaW5hbCB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRW5jb2RlcihNZXNz
YWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgRW5jb2RlcihNZXNzYWdlTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFt
Q2FwYWNpdHkpOwogICAgIH5FbmNvZGVyKCk7CiAKICAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJl
Y2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsg
fQpAQCAtMTQyLDYgKzE0Myw4IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fYnVmZmVyU2l6ZTsK
ICAgICBzaXplX3QgbV9idWZmZXJDYXBhY2l0eTsKIAorICAgIGJvb2wgbV9pc1N0cmVhbUVuY29k
ZXIgeyBmYWxzZSB9OworCiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IG1fYXR0YWNobWVudHM7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3Mu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VGbGFncy5oCmluZGV4IGFkNGQ0
NTJlMWVjZGU5M2FhYjEyMGRmMWIxNDk5NmE5MDdjMzFkMWUuLmUyNzJmYTliOTIzNTg3YmIxOTVh
YWRkZTFmNTcwODQ0ODFmZjUyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VGbGFncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3Nh
Z2VGbGFncy5oCkBAIC0zMiw2ICszMiw3IEBAIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWlu
dDhfdCB7CiAgICAgRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgPSAxIDw8
IDEsCiAgICAgRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkg
PSAxIDw8IDIsCiAgICAgVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nID0gMSA8PCAz
LAorICAgIFN0cmVhbU1lc3NhZ2VPdXRPZkxpbmUgPSAxIDw8IDQsCiB9OwogCiBlbnVtIGNsYXNz
IFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90IHsKQEAgLTUw
LDcgKzUxLDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxJUEM6Ok1lc3NhZ2VGbGFn
cz4gewogICAgICAgICBJUEM6Ok1lc3NhZ2VGbGFnczo6U3luY01lc3NhZ2UsCiAgICAgICAgIElQ
Qzo6TWVzc2FnZUZsYWdzOjpEaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSwK
ICAgICAgICAgSVBDOjpNZXNzYWdlRmxhZ3M6OkRpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9y
VW5ib3VuZGVkU3luY1JlcGx5LAotICAgICAgICBJUEM6Ok1lc3NhZ2VGbGFnczo6VXNlRnVsbHlT
eW5jaHJvbm91c01vZGVGb3JUZXN0aW5nCisgICAgICAgIElQQzo6TWVzc2FnZUZsYWdzOjpVc2VG
dWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcsCisgICAgICAgIElQQzo6TWVzc2FnZUZsYWdz
OjpTdHJlYW1NZXNzYWdlT3V0T2ZMaW5lCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1SZWNlaXZlci5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI0
ZDA2ZmY4N2ZlYzUyMDQ5MmRmM2FhZDgxNmU2ZmI1NDBmMTRhOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1SZWNlaXZlci5oCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uU3RyZWFtLmgiCisjaW5jbHVkZSAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgSVBDIHsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4KK2NsYXNzIE1lc3NhZ2VTdHJlYW1SZWNlaXZlciAgewor
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTdHJlYW1IZWFkZXJTaXplID0gMTY7IC8vIEZJ
WE1FOiBtb3ZlIHRvIEVuY29kZXIuCitwdWJsaWM6CisgICAgTWVzc2FnZVN0cmVhbVJlY2VpdmVy
KFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pCisgICAgICAgIDogbV9z
dHJlYW0oV1RGTW92ZShzdHJlYW0pLCBrU3RyZWFtSGVhZGVyU2l6ZSkKKyAgICB7IH0KKyAgICB+
TWVzc2FnZVN0cmVhbVJlY2VpdmVyKCkgPSBkZWZhdWx0OworCisgICAgdm9pZCBzdHJlYW1XYWtl
VXAoQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKKyAgICB7CisgICAgICAgIGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlciB7IG51bGxwdHIgfTsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgeyAwIH07Cisg
ICAgICAgIG1fc3RyZWFtLnJlYWQoYnVmZmVyLCBidWZmZXJTaXplKTsKKyAgICAgICAgd2hpbGUg
KGJ1ZmZlclNpemUgPj0ga1N0cmVhbUhlYWRlclNpemUpIHsKKyAgICAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkRlY29kZXI+IGRlY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RGVjb2Rlcj4o
YnVmZmVyLCBidWZmZXJTaXplLCBudWxscHRyLCBWZWN0b3I8SVBDOjpBdHRhY2htZW50PiB7IH0p
OworICAgICAgICAgICAgQVNTRVJUKGRlY29kZXItPmlzVmFsaWQoKSk7CisgICAgICAgICAgICBi
b29sIGlzT3V0T2ZMaW5lID0gZGVjb2Rlci0+aXNPdXRPZkxpbmVTdHJlYW1NZXNzYWdlKCk7Cisg
ICAgICAgICAgICBpZiAoIWlzT3V0T2ZMaW5lKQorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PFNlbGYqPih0aGlzKS0+ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoY29ubmVjdGlvbiwgKmRlY29k
ZXIpOworICAgICAgICAgICAgbV9zdHJlYW0uY29tbWl0UmVhZChkZWNvZGVyLT5jdXJyZW50QnVm
ZmVyUG9zaXRpb24oKSwgYnVmZmVyLCBidWZmZXJTaXplKTsKKyAgICAgICAgICAgIGlmIChpc091
dE9mTGluZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK3ByaXZh
dGU6CisgICAgRGVzdGluYXRpb25TdHJlYW1SZWFkZXIgbV9zdHJlYW07Cit9OworCit9IC8vIG5h
bWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3Nh
Z2VTdHJlYW1TZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJl
YW1TZW5kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGVjMWViZGMyYjhjZDhiYjA3NDBiYzY3N2FlNDE0YzA2
OGE1YjNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVN0cmVhbVNlbmRlci5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRlc3RpbmF0
aW9uU3RyZWFtLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5o
IgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFNlbGY+CitjbGFzcyBNZXNzYWdlU3RyZWFtU2VuZGVyICB7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3Qga1N0cmVhbUhlYWRlclNpemUgPSAxNjsgLy8gRklYTUU6IG1v
dmUgdG8gRW5jb2Rlci4KK3B1YmxpYzoKKyAgICBNZXNzYWdlU3RyZWFtU2VuZGVyKHNpemVfdCBz
dHJlYW1TaXplKQorICAgICAgICA6IG1fc3RyZWFtKHN0cmVhbVNpemUsIGtTdHJlYW1IZWFkZXJT
aXplKQorICAgIHsgfQorICAgIH5NZXNzYWdlU3RyZWFtU2VuZGVyKCkgPSBkZWZhdWx0OworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9wdGlv
blNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIHN0YXRp
Y19hc3NlcnQoIVU6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKKyAgICAgICAgdWludDhf
dCogcHRyIHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3QgY2FwYWNpdHkgeyAwIH07CisgICAg
ICAgIG1fc3RyZWFtLndyaXRlKHB0ciwgY2FwYWNpdHkpOworICAgICAgICB3aGlsZSAoY2FwYWNp
dHkgPCBrU3RyZWFtSGVhZGVyU2l6ZSkgeworICAgICAgICAgICAgVGhyZWFkOjp5aWVsZCgpOwor
ICAgICAgICAgICAgbV9zdHJlYW0ud3JpdGUocHRyLCBjYXBhY2l0eSk7CisgICAgICAgIH0KKyAg
ICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihVOjpuYW1lKCksIHN0YXRp
Y19jYXN0PFNlbGYqPih0aGlzKS0+bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSwgcHRyLCBj
YXBhY2l0eSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsK
KyAgICAgICAgaWYgKGVuY29kZXItPmJ1ZmZlcigpID09IHB0cikgeworICAgICAgICAgICAgYXV0
byB3YWtldXBSZXN1bHQgPSBtX3N0cmVhbS5jb21taXRXcml0ZShlbmNvZGVyLT5idWZmZXJTaXpl
KCkpOworICAgICAgICAgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBEZXN0aW5hdGlvblN0cmVhbVdy
aXRlcjo6V2FrZVVwUmVhZGVyOjpObykKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBTdHJlYW1XYWtldXAgdG8gbWVzc2FnZXMucHkuCisgICAgICAg
ICAgICBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlN0cmVhbVdha2VVcDo6bmFtZSgpLCBzdGF0aWNfY2FzdDxTZWxmKj4odGhp
cyktPm1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIG1fc3RyZWFtLmNvbW1pdFdyaXRlKGtTdHJlYW1IZWFkZXJTaXplKTsKKworICAgICAg
ICBhdXRvKiBjb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8U2VsZio+KHRoaXMpLT5tZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpOworICAgICAgICBBU1NFUlQoY29ubmVjdGlvbik7CisgICAgICAgIHJl
dHVybiBjb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9u
cyk7CisgICAgfQorICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gQ29ubmVjdGlvbjo6U2VuZFN5
bmNSZXN1bHQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBTZW5kU3luY1Jlc3VsdCBz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgU2Vjb25kcyB0
aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBz
ZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgeworICAgICAgICAvLyBGSVhNRTogc2VuZFN5bmMg
ZG9lcyBub3QgZ28gdGhyb3VnaCB0aGUgc3RyZWFtIGJlY2F1c2UgdGhlIGNvbnN0cnVjdG9yIG9m
IHRoZSBzeW5jIGVuY29kZXIgaXMgdGllZCB0byB0aGUKKyAgICAgICAgLy8gQ29ubmVjdGlvbi4g
SXQncyBhIG1lY2hhbmljYWwgcmVmYWN0b3IgdG8gZml4IGl0LgorICAgICAgICBzdGF0aWNfYXNz
ZXJ0KFQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgbm90IHN5bmMhIik7CisgICAgICAgIGF1dG8gY29u
bmVjdGlvbiA9IHN0YXRpY19jYXN0PFNlbGYqPih0aGlzKS0+bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKTsKKyAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworICAgICAgICBhdXRvIGRlc3RpbmF0
aW9uSUQgPSBzdGF0aWNfY2FzdDxTZWxmKj4odGhpcyktPm1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCk7CisgICAgICAgIHJldHVybiBjb25uZWN0aW9uLT5zZW5kU3luYyhXVEZNb3ZlKG1lc3Nh
Z2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgc2VuZFN5bmNPcHRp
b25zKTsKKyAgICB9CisKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGRlc3Rp
bmF0aW9uU3RyZWFtSGFuZGxlKCkgeyByZXR1cm4gbV9zdHJlYW0uZGVzdGluYXRpb25TdHJlYW1I
YW5kbGUoKTsgfQorcHJpdmF0ZToKKyAgICBEZXN0aW5hdGlvblN0cmVhbVdyaXRlciBtX3N0cmVh
bTsKK307CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKaW5kZXggODlmYjhhYmFmOWFlY2UwN2M2MzQ3MGRhM2RiODNjODgzMjZkZDNm
Mi4uMzkyMWU1MWY0NjY1NjNiNzg1YWYyZTNjY2M1YjM1NDdhZjdmYTNkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0zMyw2ICszMyw3IEBAIExFR0FDWV9S
RUNFSVZFUl9BVFRSSUJVVEUgPSAnTGVnYWN5UmVjZWl2ZXInCiBOT1RfUkVGQ09VTlRFRF9SRUNF
SVZFUl9BVFRSSUJVVEUgPSAnTm90UmVmQ291bnRlZCcKIFNZTkNIUk9OT1VTX0FUVFJJQlVURSA9
ICdTeW5jaHJvbm91cycKIEFTWU5DX0FUVFJJQlVURSA9ICdBc3luYycKK1NUUkVBTV9BVFRSSUJV
VEUgPSAnU3RyZWFtJwogCiBfbGljZW5zZV9oZWFkZXIgPSAiIiIvKgogICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNDk2LDcgKzQ5
Nyw4IEBAIGRlZiBhc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSk6CiAK
ICAgICByZXN1bHQgPSBbXQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUoKSkge1xuJyAlIChyZWNlaXZlci5u
YW1lLCBtZXNzYWdlLm5hbWUpKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgSVBDOjolczxN
ZXNzYWdlczo6JXM6OiVzPiglcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5u
YW1lLCBtZXNzYWdlLm5hbWUsICcsICcuam9pbihkaXNwYXRjaF9mdW5jdGlvbl9hcmdzKSkpCisg
ICAgaWYgbm90IChyZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpIGFuZCBt
ZXNzYWdlLm5hbWUgPT0gJ1N0cmVhbVdha2VVcCcpOgorICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5j
dGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oZGlzcGF0Y2hfZnVu
Y3Rpb25fYXJncykpKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuO1xuJykKICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgfVxuJykKICAgICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0
aW9uKCcnLmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCkBAIC04NTYsOCArODU4LDEz
IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgYXN5bmNfbWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpCiAKKyAgICByZWNl
aXZlX3ZhcmlhbnQgPSAnJworICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JF
Q0VJVkVSX0FUVFJJQlVURSk6CisgICAgICAgIHJlY2VpdmVfdmFyaWFudCA9IHJlY2VpdmVyLm5h
bWUKKyAgICBlbGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6Cisg
ICAgICAgIHJlY2VpdmVfdmFyaWFudCA9ICdTdHJlYW0nCiAgICAgaWYgYXN5bmNfbWVzc2FnZXMg
b3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVU
RSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdF
X0FUVFJJQlVURSk6Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmUl
c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0
dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkKKyAgICAgICAgcmVz
dWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwg
cmVjZWl2ZV92YXJpYW50KSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKICAgICAgICAg
aWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRU
UklCVVRFKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBhdXRvIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKTtcbicpCkBAIC04NzQsNiArODgxLDEzIEBAIGRlZiBnZW5lcmF0
ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxu
JykKIAorICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZl
ci5uYW1lKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKKyAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIGRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xu
JykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0cmVhbVdha2VVcChjb25uZWN0aW9uKTtc
bicpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCisKICAgICBpZiBzeW5jX21lc3NhZ2Vz
IG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJV
VEUpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
J3ZvaWQgJXM6OmRpZFJlY2VpdmVTeW5jJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYgcmVwbHlFbmNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAyZGUzYjNhNDUxYzdlMWMyOGZlMWM5YzM3NDA2MWU2ZmYyMWM2YjY2Li4yMTM3ODM3M2QyYWQ0
NzAzYWM2MjQ3MmRkOTZlYWJhZWVmNTA5N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMDcsNiArMTMwNyw4IEBACiAJCTdBRkJE
MzY3MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzY1
MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAq
LzsgfTsKIAkJN0FGQkQzNkYyMUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzZEMjFF
NTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggKi87IH07CiAJCTdCMURCMjY2MjU2
NjhDRTEwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5
UmVmZXJlbmNlLmggKi87IH07CisJCTdCRTcyNjdBMjU3QTczRDYwMEU4NUQ5OCAvKiBNZXNzYWdl
U3RyZWFtU2VuZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QkU3MjY3OTI1N0E3M0Q2MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVNlbmRlci5oICov
OyB9OworCQk3QkU3MjY3QzI1N0E3OUM4MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVJlY2VpdmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkU3MjY3
QjI1N0E3OUM4MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmggKi87IH07CiAJCTdD
MDY1RjJDMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlw
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDY1
RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMu
aCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1
QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRBMEU2MDAw
NDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5
LmggKi87IH07CkBAIC00NDAxLDYgKzQ0MDMsOCBAQAogCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRl
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjY4MjU3NjgwRUYwMEU4
NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QkU3MjY3OTI1N0E3M0Q2MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVNlbmRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlU3RyZWFtU2VuZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjdCMjU3QTc5QzgwMEU4NUQ5
OCAvKiBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJE
YXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
ckRhdGFUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0MxMzVBQTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NzE1LDYgKzY3MTksOCBAQAogCQkJCTFB
M0VFRDBEMTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCAqLywKIAkJCQkx
QUFCMDM3NzE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5jcHAgKi8sCiAJCQkJMUFB
QjAzNzgxODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuaCAqLywKKwkJCQk3QkU3MjY3
QjI1N0E3OUM4MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmggKi8sCisJCQkJN0JF
NzI2NzkyNTdBNzNENjAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1TZW5kZXIuaCAqLywKIAkJCQky
REMxODAwMUQ5MERERDE1RkM2OTkxQTkgLyogU2hhcmVkQnVmZmVyQ29weS5jcHAgKi8sCiAJCQkJ
NUNDNURCOTEyMTQ4OEUxNjAwNkNCOEE4IC8qIFNoYXJlZEJ1ZmZlckNvcHkuaCAqLywKIAkJCQky
REMxODU1RURCRkI4NTBCQTBCNkQwNkQgLyogU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAg
Ki8sCkBAIC0xMTQwNyw2ICsxMTQxMyw4IEBACiAJCQkJMUEzRUVEMTIxNjFBNTNENjAwQUVCNEY1
IC8qIE1lc3NhZ2VSZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRUVEMEYxNjFBNTM1
NDAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFB
QjAzN0ExODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTdCRTcyNjdDMjU3QTc5QzgwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTdCRTcyNjdBMjU3QTczRDYwMEU4NUQ5OCAvKiBNZXNzYWdlU3Ry
ZWFtU2VuZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTNCM0RBMjIwN0YzOURFMDA5MEM1OEQg
LyogTW9iaWxlV2lGaVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQ0IyMTRGNEU0MjAw
MTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdEQ0VEQzcyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXgg
MzRhMDZmYjAwNzZhY2QzZmQzMmIzYTRiNmIwOWQ2OGQwMjdiYjU4OC4uMmI4YTQzNjgwYzFiMDYx
NmFiMThjOWE3MDc2YjA3NGMxYThhNWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuY3BwCkBAIC00OCwxOSArNDgsMjIgQEAgUmVmUHRyPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25z
dAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShh
dHRyaWJ1dGVzKSk7CiB9CiAKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1T
aXplID0gMSA8PCAxMDsKKwogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJzKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCisgICAg
OiBJUEM6Ok1lc3NhZ2VTdHJlYW1TZW5kZXI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4o
ZGVmYXVsdFN0cmVhbVNpemUpCisgICAgLCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFz
ZShhdHRycykKIHsKICAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYgbWVzc2FnZVJlY2VpdmVy
TWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKICAgICBtZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCks
ICp0aGlzKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
cmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpLCAwKTsKKyAgICBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRycywg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIGRlc3RpbmF0aW9uU3RyZWFtSGFuZGxlKCkp
LCAwKTsKIH0KIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkoKQogewogICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdl
UmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOwogICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciksIDApOworICAgIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbGVhc2VHcmFwaGljc0Nv
bnRleHRHTChtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciksIDApOwogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHBsYXRmb3JtU3dhcENoYWluKCkucmVjeWNsZUJ1ZmZlcigpOwogI2VuZGlm
CkBAIC04MCwxNCArODMsMTQgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpy
ZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBtX2N1cnJlbnRXaWR0aCA9IHdp
ZHRoOwogICAgIG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzaGFwZSh3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpSZXNoYXBlKHdpZHRoLCBoZWlnaHQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0OwotICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3Bs
YXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxh
eTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6OlJlcGx5KGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCAx
MF9zKTsKICAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5k
UmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYo
KSk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKICAgICAgICAgYXV0byYgc2MgPSBwbGF0Zm9y
bVN3YXBDaGFpbigpOwpAQCAtOTUsMTkgKzk4LDE5IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgICAgICBzYy5wcmVzZW50KHsgV1RG
TW92ZShkaXNwbGF5QnVmZmVyKSwgbnVsbHB0ciB9KTsKICAgICB9CiAjZWxzZQotICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXko
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6
UmVwbHkoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXko
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6
UmVwbHkoKSwgMTBfcyk7CiAjZW5kaWYKICAgICBtYXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFu
Z2VkKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90
aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaAppbmRleCBkOTllZGEyOWY2ZGI1ZTE4MTk3MTMxNzhmMmFhNTMxYjRmNWRkNmUwLi5k
MWFjMDFiYjZmY2EwNjZjZmE3MmM2Nzc1YWEyNDdiNWUwZmEwYWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCi0jaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTdHJlYW1T
ZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gR1BVIHByb2Nlc3MuCiAvLyBUaGUgaW1wbGVtZW50
YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2wuCiBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IGZpbmFs
Ci0gICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgOiBwdWJsaWMgSVBDOjpNZXNz
YWdlU3RyZWFtU2VuZGVyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+CiAgICAgLCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4KICAgICAsIHB1YmxpYyBXZWJDb3JlOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZSB7CkBAIC01NSw5ICs1NSw5IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKTsKICAgICB+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSgpIGZpbmFsOwogCi0gICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
IG92ZXJyaWRlcy4KLSAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QgZmluYWw7Ci0gICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQo
KSBjb25zdCBmaW5hbDsKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTdHJlYW1TZW5kZXIgdGVtcGxhdGUg
Y29udHJhY3QuCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGNvbnN0OworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Q7
CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5j
dGlvbnNHZW5lcmF0ZWQuY3BwCmluZGV4IGY3ZWNmODY1NTZhMDA3M2FmOGY1NTRjZmNmYzBlZjMz
OWY2MWU4OWEuLjNjMTdjMjRhZGM3M2IwYmZmMmM2MGM1OTM0ZGVkN2M3ZDBlN2JlYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVu
Y3Rpb25zR2VuZXJhdGVkLmNwcApAQCAtMzIsMzI0ICszMiwzMjQgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVT
dGF0dXNDaGVjaygpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTZXRG
YWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJv
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpKTsKIH0KIAog
Ym9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0aWNF
cnJvckxpc3QoKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNF
cnJvckxpc3QoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3Jz
VG9TeW50aGV0aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0
OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKEdDR0xl
bnVtIHRleHR1cmUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZVRleHR1cmUodGV4dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlVGV4
dHVyZSh0ZXh0dXJlKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YXR0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1HTE9iamVjdCBz
aGFkZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkF0
dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkF0dGFjaFNo
YWRlcihwcm9ncmFtLCBzaGFkZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWlu
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRBdHRyaWJMb2NhdGlvbihhcmcwLCBpbmRleCwgbmFt
ZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyKHRhcmdldCwgYXJnMSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEZyYW1lYnVmZmVyKHRhcmdldCwgYXJnMSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmluZEZyYW1lYnVmZmVyKHRhcmdldCwgYXJnMSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5kZXJidWZmZXIoR0NHTGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFt
cGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRDb2xvcihyZWQsIGdyZWVu
LCBibHVlLCBhbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRDb2xvcihyZWQsIGdyZWVu
LCBibHVlLCBhbHBoYSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCbGVuZEVxdWF0aW9uKG1vZGUpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVu
dW0gbW9kZUFscGhhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jKEdDR0xlbnVt
IHNmYWN0b3IsIEdDR0xlbnVtIGRmYWN0b3IpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCbGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3RvcikpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JH
QiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVu
Y1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0
QWxwaGEpKTsKIH0KIAogR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpCiB7CiAgICAgdWludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1czo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KHRhcmdldCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1
ZmZlclN0YXR1czo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXIoR0NH
TGJpdGZpZWxkIG1hc2spCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNsZWFyKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyKG1hc2spKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckNvbG9yKEdDR0xjbGFt
cGYgcmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxw
aGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFy
Q29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFy
Q29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyRGVwdGgoZGVwdGgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyRGVwdGgoZGVwdGgpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhclN0ZW5jaWwoR0NHTGludCBzKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhclN0ZW5jaWwocyksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q2xlYXJTdGVuY2lsKHMpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpjb2xvck1hc2soR0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVh
biBncmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwgR0NHTGJvb2xlYW4gYWxwaGEpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbG9yTWFzayhzdGF0aWNfY2Fz
dDxib29sPihyZWQpLCBzdGF0aWNfY2FzdDxib29sPihncmVlbiksIHN0YXRpY19jYXN0PGJvb2w+
KGJsdWUpLCBzdGF0aWNfY2FzdDxib29sPihhbHBoYSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNv
bG9yTWFzayhzdGF0aWNfY2FzdDxib29sPihyZWQpLCBzdGF0aWNfY2FzdDxib29sPihncmVlbiks
IHN0YXRpY19jYXN0PGJvb2w+KGJsdWUpLCBzdGF0aWNfY2FzdDxib29sPihhbHBoYSkpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29tcGlsZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21waWxl
U2hhZGVyKGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlciksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlcikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgs
IHksIHdpZHRoLCBoZWlnaHQpKTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZmZXIoKQogewogICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlQnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlRnJhbWVidWZmZXIoKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRl
RnJhbWVidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVG
cmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVGcmFtZWJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZUZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjcmVhdGVQcm9ncmFtKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVh
dGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIoKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlUmVuZGVyYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsK
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFyZzApCiB7CiAgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwg
MTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUoKQogewogICAgIHVpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVRleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmN1bGxGYWNlKEdDR0xlbnVtIG1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkN1bGxGYWNlKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkN1bGxGYWNlKG1vZGUpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZWxldGVCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVCdWZmZXIoYXJnMCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVsZXRlQnVmZmVyKGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUZy
YW1lYnVmZmVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUZyYW1lYnVmZmVyKGFy
ZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVQcm9n
cmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEZWxldGVQcm9ncmFtKGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVSZW5kZXJidWZm
ZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUmVuZGVyYnVmZmVyKGFyZzApKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFkZXIoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZWxldGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRl
U2hhZGVyKGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVGV4dHVyZShhcmcwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMoR0NHTGVudW0gZnVuYykKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhGdW5jKGZ1bmMpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRlcHRoRnVuYyhmdW5jKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKEdDR0xib29sZWFuIGZsYWcpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoTWFzayhzdGF0aWNfY2FzdDxi
b29sPihmbGFnKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0YXRpY19jYXN0PGJv
b2w+KGZsYWcpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVw
dGhSYW5nZShHQ0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXRhY2hTaGFkZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwLCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRldGFjaFNoYWRlcihhcmcwLCBhcmcxKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwgYXJnMSkpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUoR0NHTGVudW0gY2FwKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlKGNhcCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGlzYWJsZShjYXApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGVWZXJ0
ZXhBdHRyaWJBcnJheShpbmRleCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5KGluZGV4KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZHJhd0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdB
cnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlz
KG1vZGUsIGZpcnN0LCBjb3VudCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVu
dHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlKEdDR0xlbnVtIGNh
cCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5hYmxl
KGNhcCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5hYmxlKGNhcCkpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50
IGluZGV4KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoaW5kZXgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmaW5pc2goKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpGaW5pc2goKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGaW5pc2goKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Zmx1c2goKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGbHVzaCgpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkZsdXNoKCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNo
bWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBh
cmczKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQs
IGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMykpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybUdM
T2JqZWN0IGFyZzMsIEdDR0xpbnQgbGV2ZWwpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVu
dCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZm
ZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJvbnRGYWNlKEdDR0xl
bnVtIG1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkZyb250RmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcm9udEZhY2UobW9kZSkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdlbmVyYXRlTWlwbWFwKEdD
R0xlbnVtIHRhcmdldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2VuZXJhdGVNaXBtYXAodGFyZ2V0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZW5lcmF0
ZU1pcG1hcCh0YXJnZXQpKTsKIH0KIAogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYgYXJnMikKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0
cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZh
bHVlLCBhcmcyKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBib29sIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKIHsKICAgICBi
b29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybTo6UmVwbHkocmV0dXJu
VmFsdWUsIGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlm
b3JtKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRBY3RpdmVVbmlmb3JtOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIDEwX3MpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb24oYXJn
MCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9j
YXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJn
ZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQ
YXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUp
LCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFN0cmluZyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkKIHsKICAgICBTdHJp
bmcgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRTdHJpbmcobmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0U3RyaW5nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFN0cmluZyhuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTdHJpbmc6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJu
IHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAg
ICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OwotICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Rmxv
YXR2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHYocG5hbWUsIHZhbHVlLmJ1ZlNpemUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0djo6UmVwbHkodmFs
dWVSZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkodmFs
dWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoZmxvYXQp
KTsKICAgICAKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZsb2F0Pgogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFt
ZSwgR0NHTFNwYW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiB2YWx1ZVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlLmJ1
ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXJ2OjpS
ZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXJ2OjpSZXBseSh2YWx1ZVJlcGx5KSwgMTBf
cyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1
ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CiAgICAgCkBA
IC0zNjcsMjggKzM2NywyOCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PgogR0NHTGludDY0IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkK
IHsKICAgICBpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0KHBuYW1lKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQ6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0KHBuYW1lKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQ6OlJlcGx5KHJldHVy
blZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4ocmV0dXJu
VmFsdWUpOwogfQogCiBHQ0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpCiB7CiAgICAgaW50NjRf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEludGVnZXI2NGkocG5hbWUsIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGkocG5hbWUsIGluZGV4KSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpOjpSZXBseShy
ZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHJl
dHVyblZhbHVlKTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVtIHBuYW1lKQogewog
ICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFtZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWk6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWkocHJvZ3JhbSwg
cG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1pOjpS
ZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFudihHQ0dMZW51bSBw
bmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKQogewogICAgIElQQzo6QXJyYXlSZWZl
cmVuY2U8Ym9vbD4gdmFsdWVSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1
ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFu
djo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVSZXBseSks
IDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwg
dmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoYm9vbCkpOwogICAgIApA
QCAtMzk3LDQyICszOTcsNDIgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2wKIEdDR0xlbnVtIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKCkKIHsKICAgICB1aW50MzJfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEVycm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0RXJyb3I6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJv
cjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9
CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQs
IEdDR0xlbnVtIHBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KIAogU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBTdHJpbmcg
cmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZyhhcmcwKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZzo6UmVwbHkocmV0
dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xpbnQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFs
dWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3Mp
OwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTaGFkZXJpKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTGVudW0g
cG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmkoYXJnMCwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcw
LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6
UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAK
IFN0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJJbmZvTG9nKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07Ci0g
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJ
bmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRl
ckluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIApAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNo
YWRlclR5cGUsCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5nZVJl
cGx5OwogICAgIGludDMyX3QgcHJlY2lzaW9uUmVwbHkgPSB7IH07Ci0gICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBseShy
YW5nZVJlcGx5LCBwcmVjaXNpb25SZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBw
cmVjaXNpb25UeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQ6OlJlcGx5KHJhbmdlUmVwbHksIHByZWNpc2lvblJlcGx5KSwgMTBf
cyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpIHsKICAgICAgICAgbWVtY3B5KHJhbmdlLmRhdGEsIHJh
bmdlUmVwbHkuZGF0YSgpLCByYW5nZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKICAgICAg
ICAgaWYgKHByZWNpc2lvbikKQEAgLTQ1MSwyOCArNDUxLDI4IEBAIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVtIHNoYWRl
clR5cGUsCiBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyU291
cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7
IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
aGFkZXJTb3VyY2UoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
U2hhZGVyU291cmNlOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFNoYWRlclNvdXJjZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTaGFkZXJTb3VyY2U6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
KQogewogICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBh
cmFtZXRlcmYodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VGV4UGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogewog
ICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmk6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1l
dGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRUZXhQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRV
bmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
IHZhbHVlUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZh
bHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZv
cm1mdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVm
U2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2OjpS
ZXBseSh2YWx1ZVJlcGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1l
bWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVv
ZihmbG9hdCkpOwogICAgIApAQCAtNDgxLDcgKzQ4MSw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGluCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1pdihQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+
IHZhbHVlKQogewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsK
LSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2OjpSZXBseSh2
YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVw
bHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkKICAgICAgICAgbWVtY3B5KHZhbHVlLmRh
dGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsK
ICAgICAKQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbgogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmpl
Y3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTHVpbnQ+IHZhbHVlKQog
ewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVlUmVwbHk7Ci0gICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2OjpSZXBseSh2YWx1ZVJl
cGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdjo6UmVwbHkodmFsdWVSZXBseSks
IDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwg
dmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YodWludDMyX3QpKTsKICAg
ICAKQEAgLTQ5OSwzMjUgKzQ5OSwzMjUgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtdWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGkKIEdDR0xp
bnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRp
b246OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwog
fQogCiBHQ0dMc2l6ZWlwdHIgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4
QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICB1aW50
NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldDo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRWZXJ0ZXhB
dHRyaWJPZmZzZXQoaW5kZXgsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQ6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0cj4ocmV0dXJuVmFsdWUpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBtb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpIaW50KHRhcmdldCwgbW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SGludCh0YXJnZXQs
IG1vZGUpKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNCdWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c0J1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZl
cjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1
ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZlcjo6
UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aXNFbmFibGVkKEdDR0xlbnVtIGNhcCkKIHsKICAgICBib29sIHJldHVyblZh
bHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNFbmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNF
bmFibGVkOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzRW5hYmxlZChjYXApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRW5h
YmxlZDo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7
CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyKGFyZzApLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZh
bHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5W
YWx1ZSk7CiB9CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlz
UHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
UHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dy
YW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNQ
cm9ncmFtKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3Jh
bTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewog
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcihhcmcwKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJu
VmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVy
blZhbHVlKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1NoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRl
cjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1No
YWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcjo6
UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aXNUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29s
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNUZXh0dXJlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1RleHR1cmUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkxpbmVXaWR0aChhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3Jh
bShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3JhbShhcmcwKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkoR0NHTGVudW0gcG5h
bWUsIEdDR0xpbnQgcGFyYW0pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5p
dHMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvbHln
b25PZmZzZXQoZmFjdG9yLCB1bml0cyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9seWdvbk9mZnNl
dChmYWN0b3IsIHVuaXRzKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFs
Zm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFy
Z2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJh
Z2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgc3Rh
dGljX2Nhc3Q8Ym9vbD4oaW52ZXJ0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlQ292ZXJh
Z2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29yKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCwgY29uc3QgU3RyaW5nJiBhcmcxKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6U2hhZGVyU291cmNlKGFyZzAsIGFyZzEpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJl
ZiwgR0NHTHVpbnQgbWFzaykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xl
bnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1
bmMsIHJlZiwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmNTZXBhcmF0ZShm
YWNlLCBmdW5jLCByZWYsIG1hc2spKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzdGVuY2lsTWFzayhHQ0dMdWludCBtYXNrKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFzayhtYXNrKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpTdGVuY2lsTWFzayhtYXNrKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBt
YXNrKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVu
Y2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxN
YXNrU2VwYXJhdGUoZmFjZSwgbWFzaykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVu
dW0genBhc3MpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5j
aWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmYWls
LCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpm
YWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwg
ZmFpbCwgemZhaWwsIHpwYXNzKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dM
ZmxvYXQgcGFyYW0pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0p
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0p
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZihsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB4KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IHYpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSkp
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiB2KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXpl
KSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZihsb2NhdGlvbiwgeCwg
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmKGxvY2F0aW9uLCB4LCB5KSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEp
LCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmZ2KGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
di5kYXRhKSwgdi5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0yaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJp
KGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmkobG9jYXRpb24s
IHgsIHkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
Mml2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaXYobG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBp
bnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTJpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeiks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEp
LCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2Z2KGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
di5kYXRhKSwgdi5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0zaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTGludCB6KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm0zaShsb2NhdGlvbiwgeCwgeSwgeikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
TGludD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTNpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeiwgR0NH
TGZsb2F0IHcpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IHYpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSkp
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00aShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00
aShsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRpKGxv
Y2F0aW9uLCB4LCB5LCB6LCB3KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
PiB2KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtNGl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm00aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IHZhbHVlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFu
c3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2Up
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgz
ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwg
dmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzZnYobG9j
YXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUu
YnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtTWF0cml4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9v
bD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
c2VQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVzZVByb2dyYW0oYXJnMCkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbShQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
YWxpZGF0ZVByb2dyYW0oYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYjFmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYo
aW5kZXgsIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjFmKGluZGV4LCB4KSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2
KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
MWZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0
PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlZlcnRleEF0dHJpYjFmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dCwgMT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVz
LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
MmYoaW5kZXgsIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmKGluZGV4
LCB4LCB5KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDI+IHZh
bHVlcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmdihpbmRleCwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdCwgMj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRh
KSwgdmFsdWVzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliM2YoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxv
YXQgeSwgR0NHTGZsb2F0IHopCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeikpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmdihpbmRleCwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVl
cy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWIzZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKEdDR0x1aW50
IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxvYXQg
dykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4
QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2
YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRmdihpbmRl
eCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRl
eCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBH
Q0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6
ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYlBv
aW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PGJvb2w+KG5vcm1hbGl6ZWQpLCBz
dHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMc2l6ZWlwdHIgYXJnMSwgR0NHTGVudW0gdXNhZ2UpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlckRhdGEwKHRhcmdldCwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGFyZzEpLCB1c2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVy
RGF0YTAodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnMSksIHVzYWdlKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0
YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhLCBHQ0dMZW51bSB1c2FnZSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTEo
dGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSksIHVzYWdlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCdWZmZXJEYXRhMSh0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZT
aXplKSwgdXNhZ2UpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
dWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFu
PGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCksIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQp
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4gZGF0YVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczA6OlJlcGx5KGRhdGFSZXBseSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMCh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwOjpSZXBseShkYXRhUmVwbHkpLCAx
MF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkKICAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0
YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKICAgICAKQEAg
LTgyNSw5NyArODI1LDk3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVh
ZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMxKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0
YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UyRDAodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0
LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMSh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRh
KSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ob2Zmc2V0KSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFn
ZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNp
emUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdl
MkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIs
IGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRl
eFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5j
ZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6
ZWkgcHJpbWNvdW50KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3Vu
dCwgcHJpbWNvdW50KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0lu
c3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCks
IHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1v
ZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50
KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
RGl2aXNvcihHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvcihpbmRl
eCwgZGl2aXNvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvcihpbmRl
eCwgZGl2aXNvcikpOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5KCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZVZlcnRleEFycmF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsK
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJh
eShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheShhcmcwKSk7CiB9
CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJy
YXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07
Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRl
eEFycmF5KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4
QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNWZXJ0ZXhBcnJheShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1ZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0
ZXhBcnJheShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXkoYXJnMCkp
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlCdWZmZXJTdWJE
YXRhKEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRy
IHJlYWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBhcmc0KQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5QnVmZmVy
U3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJl
YWRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYXJnNCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRh
KHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNl
dCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2
NF90Pihhcmc0KSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNw
YW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBk
YXRhUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9mZnNldCksIGRhdGEuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YTo6UmVwbHkoZGF0YVJlcGx5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0
YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRh
dGFSZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkoZGF0
YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkp
OwogICAgIApAQCAtOTIzLDQ1MSArOTIzLDQ1MSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyCiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyKEdDR0xp
bnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdD
R0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEs
IEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlcihzcmNYMCwgc3JjWTAs
IHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3JjWDEs
IHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5
ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0
IHRleHR1cmUsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgbGF5ZXIpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRh
cmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUs
IGxldmVsLCBsYXllcikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdD
R0xlbnVtPiBhdHRhY2htZW50cykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGF0dGFjaG1l
bnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52
YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRh
Y2htZW50cy5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNv
bnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+
KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSwgeCwgeSwgd2lkdGgsIGhl
aWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdl
dCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSwgeCwgeSwg
d2lkdGgsIGhlaWdodCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpSZWFkQnVmZmVyKHNyYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVh
ZEJ1ZmZlcihzcmMpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkg
c2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4
U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTJEKHRhcmdl
dCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VGV4U3RvcmFnZTJEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgs
IGhlaWdodCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0
b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBk
ZXB0aCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVs
cy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0QxKHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBH
Q0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNp
emVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlRleFN1YkltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxz
LmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdl
M0QwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6
ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dM
aW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTNEMSh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlv
ZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9m
ZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMCh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwg
aW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJ
bWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3Jt
YXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXpl
LCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdl
U2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJh
Z0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbjo6
UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aShHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMdWludCB2MCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm0xdWkobG9jYXRpb24sIHYwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NH
THVpbnQgdjEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTJ1aShsb2NhdGlvbiwgdjAsIHYxKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTN1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVp
bnQgdjEsIEdDR0x1aW50IHYyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2Nh
dGlvbiwgdjAsIHYxLCB2MiwgdjMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWkobG9j
YXRpb24sIHYwLCB2MSwgdjIsIHYzKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
THVpbnQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRh
LmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
THVpbnQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0ydWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRh
LmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTN1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
THVpbnQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0zdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aXYobG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRh
LmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
THVpbnQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aXYobG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRh
LmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFu
IHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4MngzZnYobG9j
YXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8
ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24s
IHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUp
KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJp
eDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJv
b2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRy
YW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRh
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
TWF0cml4Mng0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRh
LmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4
Mng0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEp
LCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5z
cG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24s
IHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHN0YXRp
Y19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRy
YW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9z
ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4
NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEp
LCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NHgzZnYo
bG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVy
dGV4QXR0cmliSTRpKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGlu
dCB6LCBHQ0dMaW50IHcpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlZlcnRleEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRl
eCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCBJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJf
dCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNp
emUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVpbnQgeSwgR0NHTHVpbnQg
eiwgR0NHTHVpbnQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdykpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludCwgND4gdmFsdWVzKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFs
dWVzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmVydGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVu
dW0gdHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYklQb2ludGVy
KGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwg
dHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdSYW5nZUVsZW1lbnRzKEdDR0xlbnVt
IG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwgR0NH
TGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQs
IGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGJ1
ZnMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdC
dWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZh
bHVlcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xl
YXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3
YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVm
ZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcnVpdihidWZmZXIsIGRyYXdi
dWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWVz
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1
ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmaShHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQg
ZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50IHN0ZW5jaWwpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZmkoYnVmZmVy
LCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJC
dWZmZXJmaShidWZmZXIsIGRyYXdidWZmZXIsIGRlcHRoLCBzdGVuY2lsKSk7CiB9CiAKIFBsYXRm
b3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkoKQog
ewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeSgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3Mp
OwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVRdWVyeShxdWVyeSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUXVlcnkocXVlcnkpKTsKIH0KIAogR0NHTGJvb2xl
YW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeShQbGF0Zm9ybUdMT2JqZWN0
IHF1ZXJ5KQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5KHF1ZXJ5KSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5RdWVyeShHQ0dMZW51bSB0
YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFF1ZXJ5KHRhcmdldCkpOwogfQogCiBQbGF0Zm9ybUdM
T2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KEdDR0xlbnVtIHRh
cmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVy
eSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRR
dWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRRdWVyeSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKIEdDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1
ZXJ5T2JqZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCiB7CiAg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVj
dHVpKHF1ZXJ5LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
UXVlcnlPYmplY3R1aTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlU2FtcGxlcigpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVT
YW1wbGVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxl
cjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVh
dGVTYW1wbGVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2Ft
cGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2FtcGxlcihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNhbXBsZXIoc2FtcGxlciksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSk7CiB9CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmlzU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCiB7
CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2FtcGxlcihzYW1wbGVyKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyKHNhbXBsZXIpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9z
KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcihHQ0dMdWlu
dCB1bml0LCBQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdM
T2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyaShz
YW1wbGVyLCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0
ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwg
R0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUs
IHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBw
bmFtZSwgcGFyYW0pKTsKIH0KIAogR0NHTGZsb2F0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVu
dW0gcG5hbWUpCiB7CiAgICAgZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZihz
YW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2Ft
cGxlclBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmOjpSZXBseShyZXR1
cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGludCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9y
bUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmko
c2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNh
bXBsZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAogR0NHTHN5bmMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZmVuY2VTeW5jKEdDR0xlbnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQogewogICAg
IHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZlbmNlU3luYzo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFn
cyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jOjpSZXBseShy
ZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEdDR0xzeW5j
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUpKTsKIH0KIAogR0NHTGJvb2xlYW4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTeW5jKEdDR0xzeW5jIGFyZzApCiB7CiAg
ICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1N5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0
cl90PihhcmcwKSkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU3luYzo6
UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJv
b2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
YXJnMCkpKSk7CiB9CiAKIEdDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNs
aWVudFdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTHVpbnQ2
NCB0aW1lb3V0KQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50V2FpdFN5bmMoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxh
Z3MsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0aW1lb3V0KSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q2xpZW50V2FpdFN5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih0aW1lb3V0KSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q2xpZW50V2FpdFN5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRT
eW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVsZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5j
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSks
IGZsYWdzLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0aW1lb3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVvdXQpKSk7CiB9CiAK
IEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2koR0NHTHN5bmMg
YXJnMCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
LSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNp
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSks
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTeW5jaTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTeW5jaShz
dGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2k6OlJlcGx5
KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0
Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRyYW5zZm9y
bUZlZWRiYWNrKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZl
ZWRiYWNrKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNm
b3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCAx
MF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBp
ZCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRl
VHJhbnNmb3JtRmVlZGJhY2soaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9y
bUZlZWRiYWNrKGlkKSk7CiB9CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVjdCBpZCkKIHsKICAgICBi
b29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1GZWVkYmFjayhpZCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrKGlkKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrOjpS
ZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmpl
Y3QgaWQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJp
bmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5k
VHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBpZCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZl
TW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVn
aW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
ZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRUcmFuc2Zvcm1GZWVkYmFjaygpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFRyYW5zZm9ybUZlZWRiYWNr
KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
cyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2YXJ5aW5n
cywgR0NHTGVudW0gYnVmZmVyTW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhwcm9ncmFtLCB2YXJ5aW5n
cywgYnVmZmVyTW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQogewot
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmc6OlJlcGx5KGFyZzIpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmco
cHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIDEwX3MpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXN1bWVUcmFuc2Zv
cm1GZWVkYmFjaygpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzdW1l
VHJhbnNmb3JtRmVlZGJhY2soKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxh
dGZvcm1HTE9iamVjdCBidWZmZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlclJhbmdlKEdD
R0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBH
Q0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4
LCBidWZmZXIsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oYXJnNCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJSYW5nZSh0YXJnZXQs
IGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYXJnNCkpKTsKIH0KIAogVmVjdG9yPEdDR0x1aW50PiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpCiB7CiAgICAgVmVjdG9yPHVp
bnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1l
cyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5p
Zm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlczo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9z
KTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFZlY3RvcjxHQ0dMaW50PiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51
bSBwbmFtZSkKIHsKICAgICBWZWN0b3I8aW50MzJfdD4gcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlm
b3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVu
aWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJu
IHJldHVyblZhbHVlOwogfQogCiBHQ0dMdWludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0
cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVu
aWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0luZGV4OjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0luZGV4
KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0luZGV4OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwog
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkKIHsKICAgICBTdHJpbmcgcmV0dXJuVmFs
dWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4KSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6
OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1CbG9ja0JpbmRpbmco
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0NH
THVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybUJsb2NrQmluZGluZyhwcm9ncmFtLCB1bmlmb3JtQmxv
Y2tJbmRleCwgdW5pZm9ybUJsb2NrQmluZGluZyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bUJsb2NrQmluZGluZyhwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmlu
ZGluZykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2
ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQogewogICAgIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gcGFyYW1zUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3Rp
dmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFt
cy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVV
bmlmb3JtQmxvY2tpdjo6UmVwbHkocGFyYW1zUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFt
LCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdjo6UmVwbHkocGFy
YW1zUmVwbHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkKICAgICAgICAgbWVtY3B5KHBh
cmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6ZW9mKGlu
dDMyX3QpKTsKICAgICAKQEAgLTEzNzYsOTAgKzEzNzYsOTAgQEAgdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFt
LCBHQ0cKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNBUkIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCOjpSZXBseShyZXR1
cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNy
Y1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50
IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dM
Yml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAs
IHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBz
cmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0KSk7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIHVpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlVmVydGV4QXJyYXlPRVMoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUygpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5W
YWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZl
cnRleEFycmF5T0VTKGFyZzApKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAg
ICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVMoYXJnMCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTKGFyZzApLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVM6OlJlcGx5
KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5T0VTKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKSk7CiB9CiAKIFN0
cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0cmluZyByZXR1cm5WYWx1
ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEU6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9z
KTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1h
cmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChh
cmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3Vw
TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdyb3VwTWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQoKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb3BHcm91cE1hcmtlckVYVCgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlBvcEdyb3VwTWFya2VyRVhUKCkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFuPGNvbnN0IEdDR0xl
bnVtPiBidWZzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVm
U2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3Qs
IGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCkpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zm
c2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwg
dHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgY291bnQsIHR5cGUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBwcmltY291bnQpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2
aXNvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4
LCBkaXZpc29yKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQogewogICAgIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gcGFyYW1zUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlcm5h
bGZvcm1hdGl2KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBwYXJhbXMuYnVmU2l6ZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZXJuYWxmb3JtYXRpdjo6
UmVwbHkocGFyYW1zUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBu
YW1lLCBwYXJhbXMuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0SW50ZXJuYWxmb3JtYXRpdjo6UmVwbHkocGFyYW1zUmVwbHkpLCAxMF9zKTsKICAgICBpZiAo
c2VuZFJlc3VsdCkKICAgICAgICAgbWVtY3B5KHBhcmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRh
KCksIHBhcmFtcy5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKICAgICAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMDcxZTNhYTZhMmJhYTVm
ZmY2NTcyYTdmNzQwMzBjNDUyYzBkY2VkLi4zZDU0ODVmN2IzYTU2YTU5NTVhYjIzYzZiNjQ4YTZm
ODQ1YTVkZTk5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTItMDggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBHUFUgcHJvY2VzcyBJUEMgc2hvdWxkIGJl
IGZhc3RlciB0aGFuIGN1cnJlbnQgV2ViS2l0IElQQworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgd2lwCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2w6CisKIDIwMjAtMTItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1Njcmlw
dHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCBmMTZiNDIyMjljZjJmODI4YzY2YzdlN2I0MTc3
M2MyZWJlNDQzMTE0Li4yN2QxMzBhZGEyMTJmOGQ5YzM2MDQxYjJkNzAyMmQ5NTg3Yzg0MzAwIDEw
MDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMv
U2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC04OSw3ICs4OSw3IEBAIGNvbnRleHRfbWVz
c2FnZXNfdGVtcGxhdGUgPSAoCiAgICAgdGVtcGxhdGVfcHJlYW1ibGUKICAgICArICIiIiNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworbWVzc2FnZXMgLT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFJlc2hhcGUo
aW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
dm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIp
IFN5bmNocm9ub3VzCkBAIC05OSw2ICs5OSw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIE5vdFJlZkNvdW50ZWQge3sKICNlbmRpZgogICAgIHZvaWQgRW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQogICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRD
aGFuZ2VkKCkKKyAgICB2b2lkIFN0cmVhbVdha2VVcCgpIFdhbnRzQ29ubmVjdGlvbiAvLyBUT0RP
OiB0aGlzIHNob3VsZCBiZSBtb3ZlZCB0byBtZXNzYWdlcy5weQoge30KIH19CiAKQEAgLTU4Nyw3
ICs1ODgsNyBAQCBjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKG9iamVjdCk6CiAgICAg
ICAgIGlzX2FzeW5jID0gc2VsZi5yZXR1cm5fdHlwZS5pc192b2lkKCkgYW5kIGxlbihvdXRfZXhw
cnMpID09IDAKICAgICAgICAgaWYgaXNfYXN5bmM6CiAgICAgICAgICAgICBzZWxmLmNhbGxfc3Rt
dHMgKz0gWwotICAgICAgICAgICAgICAgIGYic2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOyIsCisgICAgICAgICAgICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pKTsiLAogICAgICAg
ICAgICAgXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VuZF9yZXN1bHQgPSAiIgpAQCAt
NTk5LDcgKzYwMCw3IEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToK
ICAgICAgICAgICAgICAgICAgICAgKCJ9IiBpZiBsZW4oc2VsZi5wb3N0X2NhbGxfc3RtdHMpID4g
MSBlbHNlICIiKQogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10
cyArPSBbCi0gICAgICAgICAgICAgICAgZiJ7c2VuZF9yZXN1bHR9c2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9OjpSZXBseSh7
b3V0X2V4cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsiLAorICAg
ICAgICAgICAgICAgIGYie3NlbmRfcmVzdWx0fXNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfTo6UmVwbHkoe291dF9leHByc30p
LCAxMF9zKTsiLAogICAgICAgICAgICAgXQogCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415993</attachid>
            <date>2020-12-11 07:17:14 -0800</date>
            <delta_ts>2020-12-15 06:18:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20201211171711.patch</filename>
            <type>text/plain</type>
            <size>182882</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3OTdmMzExNzA3ZjMxY2Y4
ZWQ2MDllNDFhNzc4OWZiZTdlY2MzNjguLjBiODg4ZGRiMWJkNWM5MzRiZGZiODhlOGZmYTU5NzA3
OGRkZjAzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQxIEBACisyMDIwLTEyLTA4ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBjdXJyZW50IFdlYktpdCBJUEMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50YXRp
b24gaXMgYSBiYWNrZ3JvdW5kIGluZm8gaW4gdGhlIG1lZXRpbmcgYWJvdXQKKyAgICAgICAgc3Bl
ZWRpbmcgdXAgV2ViR0wgaW1wbGVtZXRhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnQgYSBjb25j
ZXB0IG9mIGRlc3RpbmF0aW9uIG1lc3NhZ2Ugc3RyZWFtLiBJUEMgbWVzc2FnZXMgY2FuCisgICAg
ICAgIGJlIHNlbnQgZGlyZWN0bHkgdG8gdGhlIHJlY2VpdmluZyBkZXN0aW5hdGlvbiB3aXRoIE1l
c3NhZ2VTdHJlYW1TZW5kZXIKKyAgICAgICAgYW5kIHJlY2VpdmVkIHdpdGggTWVzc2FnZVN0cmVh
bVJlY2VpdmVyLgorCisgICAgICAgIEltcGxlbWVudGVkIGFzIGZvbGxvd3M6CisgICAgICAgIFNl
bmRlciBzaGFyZXMgdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSB3aXRoIHRoZSBkZXN0aW5hdGlvbiB3
aGVuIGNyZWF0aW5nCisgICAgICAgIHRoZSBkZXN0aW5hdGlvbi4KKworICAgICAgICBJZiB0aGUg
bWVzc2FnZSBmaXRzIHRvIHRoZSBzdHJlYW0gc2hhcmVkIG1lbW9yeSBhcmVhLCB3cml0ZSBpdCB0
aGVyZS4KKyAgICAgICAgT3RoZXJ3aXNlIHNlbmQgaXQgdmlhIG5vcm1hbCBJUEMgYXMgb3V0IG9m
IGxpbmUgbWVzc2FnZS4KKworICAgICAgICBSZWNlaXZlciB3YWl0cyBmb3Igbm9ybWFsIElQQyBt
ZXNzYWdlcywgaXQgZG9lcyBub3QgZG8gYW55dGhpbmcgb3V0IG9mIG9yZGluYXJ5CisgICAgICAg
IHVudGlsIGEgd2FrZXVwIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuIFRoZW4gcmVjZWl2ZXIgd2lsbCBw
cm9jZXNzIHRoZSBzdHJlYW0KKyAgICAgICAgdW50aWwgc3RyZWFtIGhhcyBubyBtb3JlIG1lc3Nh
Z2VzIG9yIHVudGlsIG91dCBvdXQgb2YgbGluZSBtZXNzYWdlIG1hcmtlciBpcyByZWFjaGVkLgor
CisgICAgICAgIE1lc3NhZ2VzIHRvIHRoZSBkZXN0aW5hdGlvbiBhcnJpdmUgYXMgYmVmb3JlLCBp
biBvcmRlci4gRm9yIGVhY2ggb3V0IG9mIGxpbmUKKyAgICAgICAgbWVzc2FnZSwgYW4gZW50cnkg
aXMgcHVzaGVkIHRvIHRoZSBzdHJlYW0uIFJlY2VpdmVyIHdpbGwgc3RvcCBwcm9jZXNzaW5nIHRo
ZQorICAgICAgICBzdHJlYW0gYW5kbSBwcm9jZXNzaW5nIHdpbGwgY29udGludWUgb25jZSB0aGUg
b3V0LW9mLWxpbmUKKyAgICAgICAgbWVzc2FnZSBoYXMgYmVlbiBwcm9jZXNzZWQuCisKKyAgICAg
ICAgU2VuZGVyIGNhbiB3cml0ZSBtZXNzYWdlcyB0byB0aGUgc3RyZWFtIHNpbXVsdGFuZW91cyB0
byB0aGUgcmVjZWl2ZXIgcmVhZGluZworICAgICAgICB0aGUgbWVzc2FnZXMuIFRoaXMgaXMgaW1w
bGVtZW50ZWQgYXMgYSByaW5nIGJ1ZmZlciB3aXRoIGF0b21pYyB3cml0ZSBhbmQgcmVhZCBwb2lu
dGVycy4KKworICAgICAgICBXSVA6CisgICAgICAgICAtIFNpbXBsZSB0aGluZ3Mgd29yaworICAg
ICAgICAgLSBCdWdneSBpbiBjZXJ0YWluIGNvbmRpdGlvbnMgKGFzc2VydHMvY3Jhc2hlcykKKyAg
ICAgICAgICAgRklYTUU6IGZpeCB0aGUgYnVncworICAgICAgICAgLSBVbnRydXN0ZWQgaW5wdXQg
aXMgbm90IGNoZWNrZWQgaW4gZXhhY3RseSBhbGwgcGxhY2VzLgorICAgICAgICAgICBGSVhNRTog
Y2hlY2sgdW50cnVzdGVkIGlucHV0IGFuZCBjbG9zZSB0aGUgY29ubmVjdGlvbiBvbiBrbm93biB2
aW9sYXRpb25zLgorICAgICAgICAgLSBBdG9taWMgb3BzIGFyZSB0aGUgbW9zdCByZXN0cmljdGVk
CisgICAgICAgICAgIEZJWE1FOiByZWxheCB0aGUgY29uZGl0aW9ucyBpZiBwb3NzaWJsZQorICAg
ICAgICAgLSBTdHJlYW0gd2FrZXVwIG1lc3NhZ2UgaXMgc3BlY2lmaWMgdG8gV2ViR0wKKyAgICAg
ICAgICAgRklYTUU6IG1vdmUgdG8gbWVzc2FnZXMucHkgYW5kIGdlbmVyYWxpemUuCisgICAgICAg
ICAtIENoYW5nZXMgcmVsYXRlZCB0byB0aGUgSVBDOjpFbmNvZGVyIC8gSVBDOjpEZWNvZGVyIHNp
bXBsaWZpY2F0aW9uIGFyZSBub3QgeWV0IGRvbmUuCisgICAgICAgICAgIEZJWE1FOiBtYWtlIHRo
ZSBzdHJlYW0gbWVzc2FnZSBoZWFkZXIgY29uc2lzdGVudCwgcmVtb3ZlIHRoZSBkZXN0aW5hdGlv
biBpZCBmcm9tCisgICAgICAgICAgIHRoZSBkYXRhLCBjbGVhbiB0aGUgY2hhbmdlcy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkRlY29kZXI6OmlzT3V0T2ZM
aW5lU3RyZWFtTWVzc2FnZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVzdGluYXRpb25TdHJlYW0uaDogQWRkZWQuCisg
ICAgICAgIChJUEM6OkRlc3RpbmF0aW9uU3RyZWFtQmFzZTo6RGVzdGluYXRpb25TdHJlYW1CYXNl
KToKKyAgICAgICAgKElQQzo6RGVzdGluYXRpb25TdHJlYW1CYXNlOjpoZWFkZXJTaXplKToKKyAg
ICAgICAgKElQQzo6RGVzdGluYXRpb25TdHJlYW1CYXNlOjpoZWFkZXIgY29uc3QpOgorICAgICAg
ICAoSVBDOjpEZXN0aW5hdGlvblN0cmVhbUJhc2U6OmRhdGEgY29uc3QpOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9FbmNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RW5jb2Rlcjo6RW5jb2Rlcik6
CisgICAgICAgIChJUEM6OkVuY29kZXI6OnJlc2VydmUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9FbmNvZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VGbGFncy5oOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZUZsYWdzLmguCisgICAgICAgIChJUEM6
Ok1lc3NhZ2VTdHJlYW1SZWNlaXZlcjo6TWVzc2FnZVN0cmVhbVJlY2VpdmVyKToKKyAgICAgICAg
KElQQzo6TWVzc2FnZVN0cmVhbVJlY2VpdmVyOjpzdHJlYW1XYWtlVXApOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9NZXNzYWdlU3RyZWFtU2VuZGVyLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpN
ZXNzYWdlU3RyZWFtU2VuZGVyOjpNZXNzYWdlU3RyZWFtU2VuZGVyKToKKyAgICAgICAgKElQQzo6
TWVzc2FnZVN0cmVhbVNlbmRlcjo6c2VuZCk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTdHJlYW1T
ZW5kZXI6OnNlbmRTeW5jKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVN0cmVhbVNlbmRlcjo6ZGVz
dGluYXRpb25TdHJlYW1IYW5kbGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3Bs
YXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1
cmVFeHRlbnNpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1
bmN0aW9uc0dlbmVyYXRlZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2spOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5
bnRoZXRpY0Vycm9yTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRl
cmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNsZWFyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y2xlYXJTdGVuY2lsKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29sb3JNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNrKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmaW5pc2gpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJh
bWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBdHRyaWJMb2NhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1
ZmZlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtaSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRl
ckluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyaSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZv
cm1mdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1pdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFVuaWZvcm11aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9ncmFt
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5k
ZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojppc1NoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmlzVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmxpbmVXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZUNvdmVyYWdlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3Nvcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0
ZW5jaWxGdW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1l
dGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRl
eFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmdik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaXYpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0pOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWIxZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0Zik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYjRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJ
bWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29tcHJlc3NlZFRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
RGl2aXNvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZm
ZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmxpdEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3Vi
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTJEKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFnZTNEKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UzRCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1Yklt
YWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b3B5VGV4U3ViSW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTF1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm0ydWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtM3VpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3Vpdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJp
eDN4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybU1hdHJpeDJ4NGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4NGZ2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDR4M2Z2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliSTRpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmVydGV4QXR0cmliSTRpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxl
bWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
cmF3QnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNsZWFyQnVmZmVyaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVRdWVyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVlcnkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVy
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1
ZXJ5T2JqZWN0dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZGVsZXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmlzU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0U3luYyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5bmNpKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVl
ZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlm
b3JtSW5kaWNlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEFjdGl2ZVVuaWZvcm1zKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJs
b2NrQmluZGluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFO
R0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5
T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNW
ZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFy
a2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cHVzaEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdik6CisKIDIw
MjAtMTItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbXBsZW1lbnQgUmVtb3RlV2ViR0xCYWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNDhiNzRlYWU4
MDFjNjI0ZDEyMTczMTA5NDkwODBlZGJhNjM0MDY5MC4uMzJmZDMxOTFiMzVmOGEzZTE3ZGIzNWQ4
OTRhYjcyOGNjZDUyMDBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMzAzLDEwICszMDMsMTAgQEAgdm9p
ZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmkKIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKLXZvaWQgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0
cmVhbSkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAuZW5zdXJlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgWyZdKCkgewotICAgICAgICBy
ZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCAqdGhpcywg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgV1RGTW92ZShzdHJlYW0pKTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VE
KGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYTI4Yzhm
ZjVmNmMwNjRiZWViM2I4NmM2ZWE1NGMzZTQ3YjRhZjlkZi4uMWVkMWYyZjFjMzk3MTZkNzc0NzM4
ZDEwZTg5NmUyNGYxMDNjN2RkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2b2lkIGNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0cmVhbSk7CiAgICAgdm9pZCByZWxlYXNl
R3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDlkNTRlMTY0NTk1YjBhMzYxZGZlNGM3
NWJmZjQwMThhODU3NTljOGYuLjg5YThmZTc3MTVhMGUwY2QzZjRiYTRmYTdjZTc2MTJkMDRlZTgx
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3Nh
Z2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2Ugewog
ICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogICAgIHZvaWQgUmVsZWFzZVJl
bmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBDcmVhdGVH
cmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4dEdM
KHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywg
V2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHN0cmVhbSkKICAgICB2b2lk
IFJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiAjZW5kaWYKICAgICB2b2lkIENsZWFy
Tm93UGxheWluZ0luZm8oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZDgwNGQxZmE5
OTk0ZDVmZmYzMTQzNjRkNTliZWY5NWViNDllYTk5OS4uN2E1OGI0ZmRiNTMxZDZhYTIxNTIxMjAw
N2FiMjg4ODAzNmJkNDZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0zOSwxNSAr
MzksMTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
I2lmICFQTEFURk9STShDT0NPQSkKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWZQdHI8U2hh
cmVkTWVtb3J5OjpIYW5kbGU+JiYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAjZW5kaWYKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0KQot
ICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCitSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0cmVhbSwg
UmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0KQorICAgIDogTWVzc2FnZVN0cmVh
bVJlY2VpdmVyKFdURk1vdmUoc3RyZWFtKSkKKyAgICAsIG1fY29udGV4dChXVEZNb3ZlKGNvbnRl
eHQpKQogICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApp
bmRleCA3ZGIwY2Y1MThhYmY5YmIyNWFiMzM2ZGRkZTAzOTk5MjVhYTA1ZjMyLi4wYjFhZDU5N2Iw
ODUwNjY2ZDA3MTIxOGZiZjJlNTYyYzY0NTAyYzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApA
QCAtMjksOCArMjksOCBAQAogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU3RyZWFtUmVj
ZWl2ZXIuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvRXh0ZW5zaW9uc0dMLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oPgpAQCAtNTcsMTYgKzU3LDE1IEBAIGNs
YXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTAogICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgogICAgICwgcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGljIElQQzo6TWVzc2FnZVN0cmVhbVJlY2VpdmVy
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPgogICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTDo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFtKTsKICAgICB+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0woKSBvdmVycmlkZTsKIAogICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKIAotcHJvdGVjdGVk
OgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4p
OwotCitwdWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KICAgICBJ
UEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CiAg
ICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKQEAg
LTc1LDYgKzc0LDEyIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTdHJlYW1S
ZWNlaXZlciB0ZW1wbGF0ZSBjb250cmFjdC4KKyAgICB2b2lkIGRpZFJlY2VpdmVTdHJlYW1NZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworCitwcm90ZWN0ZWQ6CisgICAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0sIFJlZjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4pOworCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0w6
OkNsaWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBkaWRDb21wb3NpdGUoKSBmaW5hbDsKICAgICB2
b2lkIGZvcmNlQ29udGV4dExvc3QoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbgppbmRleCBhYTAzNDcyNWY5YWE0MmY0MmJkM2M4YTAwYjBhYTE4MDkwYTU5
YjlhLi5hNjdlYmVmNGZhMTAyNmQxNmMyOWY2MzU2OTQzZjA3Njk5Njc5ZDljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAvLyBU
aGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0
LgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAt
PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2VzIC0+IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFJl
c2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlC
dWZmZXIpIFN5bmNocm9ub3VzCkBAIC0zNCw2ICszNCw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgewogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVF
eHRlbnNpb25FbmFibGVkKFN0cmluZyBleHRlbnNpb24pCiAgICAgdm9pZCBOb3RpZnlNYXJrQ29u
dGV4dENoYW5nZWQoKQorICAgIHZvaWQgU3RyZWFtV2FrZVVwKCkgV2FudHNDb25uZWN0aW9uIC8v
IFRPRE86IHRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIG1lc3NhZ2VzLnB5CiAKICAgICB2b2lkIFNl
dEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQogICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3IodWlu
dDMyX3QgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggZTdj
NDBjOTg1Y2I3ZDI3MjI4NjlhNWRmZjk2OTE5NDcwNzdhZjQ2Yy4uMzk0OWNjZGM4MTc1NmMzZDEz
NzA0N2EwZjE0NzVmYWYxZWZhMDNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
LmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLCBw
cml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKIHB1
YmxpYzoKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pOwogICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hKCkgZmluYWwgPSBkZWZhdWx0OwogCiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wgb3ZlcnJpZGVzLgpAQCAtNTUsMTMgKzU1LDEzIEBAIHByaXZhdGU6CiAKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0
cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcikKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFtKQogewot
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+KG5ldyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGF0dHJpYnV0ZXMsIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpOworICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+KG5ldyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hKGF0dHJpYnV0ZXMsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgV1RGTW92ZShzdHJlYW0pKSk7CiB9CiAKLVJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgaWRlbnRpZmllcikKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMs
IGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVG
b3JHUFVQcm9jZXNzKGF0dHJpYnV0ZXMsIHRoaXMpKQorUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyLCBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMKGF0dHJpYnV0ZXMsIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFt
KSwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRl
cywgdGhpcykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5k
ZXggMmNiNzliNzMxYzhkMzUxYTJkMDU5NDYzNjJjNWFiOGJiYWRiZGM1ZS4uYjJlYWQzNDdkNWFk
MjM1NWU2ZWI5ODhmMmUwNDQxNmVlYzA0YWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5jcHAKQEAgLTc0LDYgKzc0LDI2IEBAIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhCiAg
ICAgICAgIHJldHVybjsKIH0KIAorRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJl
YW0sIHNpemVfdCBzdHJlYW1TaXplLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgIDogbV9i
dWZmZXIgeyBzdHJlYW0gfQorICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CisgICAgLCBt
X2J1ZmZlckVuZCB7IG1fYnVmZmVyICsgc3RyZWFtU2l6ZSB9CisgICAgLCBtX2J1ZmZlckRlYWxs
b2NhdG9yKFtdIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KSB7IH0pCisgICAgLCBtX2Rlc3RpbmF0
aW9uSUQoZGVzdGluYXRpb25JRCkKK3sKKyAgICBBU1NFUlQoc3RyZWFtU2l6ZSA+PSBvdXRPZkxp
bmVTdHJlYW1NZXNzYWdlU2l6ZSk7CisgICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihtX2J1ZmZlcikgJSBzdHJlYW1NZXNzYWdlQWxpZ25tZW50KSB7CisgICAgICAgIG1hcmtJbnZh
bGlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFkZWNvZGUobV9tZXNzYWdl
RmxhZ3MpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFkZWNvZGUobV9tZXNzYWdlTmFtZSkp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIWRlY29kZShtX2Rlc3RpbmF0aW9uSUQpKQorICAg
ICAgICByZXR1cm47Cit9CisKIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyU2l6ZSwgQ29uc3RydWN0V2l0aG91dEhlYWRlclRhZykKICAgICA6IG1f
YnVmZmVyIHsgYnVmZmVyIH0KICAgICAsIG1fYnVmZmVyUG9zIHsgbV9idWZmZXIgfQpAQCAtODQs
NiArMTA0LDcgQEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVf
dCBidWZmZXJTaXplLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGUKICAgICAgICAgbWFya0ludmFsaWQo
KTsKIH0KIAorCiBEZWNvZGVyOjp+RGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1fYnVmZmVyKTsK
QEAgLTExNSw2ICsxMzYsMTIgQEAgYm9vbCBEZWNvZGVyOjpzaG91bGRVc2VGdWxseVN5bmNocm9u
b3VzTW9kZUZvclRlc3RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX21lc3NhZ2VGbGFncy5jb250
YWlucyhNZXNzYWdlRmxhZ3M6OlVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZyk7CiB9
CiAKK2Jvb2wgRGVjb2Rlcjo6aXNPdXRPZkxpbmVTdHJlYW1NZXNzYWdlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9tZXNzYWdlRmxhZ3MuY29udGFpbnMoTWVzc2FnZUZsYWdzOjpTdHJlYW1NZXNz
YWdlT3V0T2ZMaW5lKTsKK30KKworCiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCBEZWNvZGVyOjpz
ZXRJbXBvcnRhbmNlQXNzZXJ0aW9uKHN0ZDo6dW5pcXVlX3B0cjxJbXBvcnRhbmNlQXNzZXJ0aW9u
PiBhc3NlcnRpb24pCiB7CkBAIC0xNjUsNyArMTkyLDcgQEAgYm9vbCBEZWNvZGVyOjphbGlnbkJ1
ZmZlclBvc2l0aW9uKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQogICAgICAgICBtYXJr
SW52YWxpZCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgbV9i
dWZmZXJQb3MgPSBhbGlnbmVkUG9zaXRpb247CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggMzQ0Y2U2ODgyZmM5MDk4NGIyZmE1N2JmOWM0
OGI5NjUwZTBmZjc0ZS4uYzBlY2M1OTYyMGM0OTZlNWRiMjkwN2Q4OWMzODI5MzJiNDNlZWRiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtNDksMTEgKzQ5LDE1IEBAIGNs
YXNzIERlY29kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQg
KCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRh
Y2htZW50PiYmKTsKICAgICBleHBsaWNpdCBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhf
dCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKKyAgICBleHBsaWNpdCBEZWNvZGVy
KGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOwogICAgIH5EZWNvZGVyKCk7CiAKICAgICBEZWNvZGVyKGNvbnN0IERlY29kZXIm
KSA9IGRlbGV0ZTsKICAgICBEZWNvZGVyKERlY29kZXImJikgPSBkZWxldGU7CiAKKyAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBzdHJlYW1NZXNzYWdlQWxpZ25tZW50ID0gYWxpZ25vZih1aW50
NjRfdCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgb3V0T2ZMaW5lU3RyZWFtTWVzc2Fn
ZVNpemUgPSBzaXplb2YodWludDY0X3QpICogMjsKKwogICAgIFJlY2VpdmVyTmFtZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gcmVjZWl2ZXJOYW1lKG1fbWVzc2FnZU5hbWUp
OyB9CiAgICAgTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21lc3Nh
Z2VOYW1lOyB9CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVzdGluYXRpb25JRDsgfQpAQCAtNjEsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N5
bmNNZXNzYWdlKCkgY29uc3Q7CiAgICAgU2hvdWxkRGlzcGF0Y2hXaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSBzaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSgpIGNvbnN0
OwogICAgIGJvb2wgc2hvdWxkVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCkgY29u
c3Q7CisgICAgYm9vbCBpc091dE9mTGluZVN0cmVhbU1lc3NhZ2UoKSBjb25zdDsKIAogI2lmIFBM
QVRGT1JNKE1BQykKICAgICB2b2lkIHNldEltcG9ydGFuY2VBc3NlcnRpb24oc3RkOjp1bmlxdWVf
cHRyPEltcG9ydGFuY2VBc3NlcnRpb24+KTsKQEAgLTE1Myw3ICsxNTgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHQgPSBBcmd1bWVudENvZGVyPFQ+OjpkZWNvZGUoKnRoaXMpOwogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQotICAgIAorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpl
bmFibGVfaWZfdDwhc3RkOjppc19lbnVtPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0aG1ldGlj
PFQ+Ojp2YWx1ZSAmJiAhVXNlc01vZGVybkRlY29kZXI8VD46OnZhbHVlPiogPSBudWxscHRyPgog
ICAgIERlY29kZXImIG9wZXJhdG9yPj4oT3B0aW9uYWw8VD4mIG9wdGlvbmFsKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rlc3RpbmF0aW9uU3RyZWFtLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXN0aW5hdGlvblN0cmVhbS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBjNDUxYTgzNjM0Y2FlY2YwNjMxYmYyMTEyMzBiMmEzOTg3MDNhYTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXN0aW5hdGlvblN0cmVhbS5oCkBA
IC0wLDAgKzEsMjAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJT
aGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorCituYW1lc3BhY2UgSVBD
IHsKKworCisvLyBTdHJlYW0gb2YgbWVzc2FnZXMgdG8gYSBzcGVjaWZpYyBkZXN0aW5hdGlvbiBy
ZWNlaXZlci4KKy8vIFRoZSBkZXN0aW5hdGlvbiByZWNlaXZlciB3aWxsIHJlY2VpdmUgbWVzc2Fn
ZXMgaW4gb3JkZXIgX2ZvciB0aGUgZGVzdGluYXRpb24gbWVzc2FnZXNfLgorLy8gVGhlIHdob2xl
IGNvbm5lY3Rpb24gbWVzc2FnZSBvcmRlciBpcyBub3QgcHJlc2VydmVkLgorLy8gSW1wbGVtZW50
ZWQgYXMgYSBzaGFyZWQgbWVtb3J5IHJpbmcgYnVmZmVyLgorLy8gU2VlIFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlCitjbGFzcyBEZXN0aW5hdGlvblN0cmVhbUJhc2UgeworcHJvdGVjdGVkOgorICAg
IGV4cGxpY2l0IERlc3RpbmF0aW9uU3RyZWFtQmFzZShzaXplX3QgbWVtb3J5U2l6ZSwgc2l6ZV90
IG1lc3NhZ2VBbGlnbm1lbnQsIHNpemVfdCBtaW5NZXNzYWdlU2l6ZSkKKyAgICAgICAgOiBtX2Rh
dGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisgICAgICAgICwgbV9tZXNzYWdlQWxp
Z25tZW50KG1lc3NhZ2VBbGlnbm1lbnQpCisgICAgICAgICwgbV9taW5NZXNzYWdlU2l6ZShtaW5N
ZXNzYWdlU2l6ZSkKKyAgICB7CisgICAgfQorICAgIH5EZXN0aW5hdGlvblN0cmVhbUJhc2UoKSA9
IGRlZmF1bHQ7CisgICAgc3RydWN0IEhlYWRlciB7CisgICAgICAgIEF0b21pYzxzaXplX3Q+IHJl
YWRPZmZzZXQ7CisgICAgICAgIHVpbnQ2NF90IGNhY2hlTGluZVBhZGRpbmdbMl07CisgICAgICAg
IEF0b21pYzxzaXplX3Q+IHdyaXRlT2Zmc2V0OworICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3QgaGVhZGVyU2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gcm91bmRVcFRvTXVs
dGlwbGVPZjxzaXplb2Yoc3RkOjptYXhfYWxpZ25fdCk+KHNpemVvZihIZWFkZXIpKTsKKyAgICB9
CisgICAgc2l6ZV90IGFkanVzdE9mZnNldChzaXplX3Qgb2Zmc2V0KSB7CisgICAgICAgIEFTU0VS
VChvZmZzZXQgPD0gbV9kYXRhU2l6ZSk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gbV9kYXRhU2l6
ZSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0K
KyAgICBzaXplX3QgYWxpZ25lZE9mZnNldChzaXplX3Qgb2Zmc2V0KSB7CisgICAgICAgIG9mZnNl
dCA9IHJvdW5kVXBUb011bHRpcGxlT2YobV9tZXNzYWdlQWxpZ25tZW50LCBvZmZzZXQpOworICAg
ICAgICBpZiAob2Zmc2V0ICsgbV9taW5NZXNzYWdlU2l6ZSA+PSBtX2RhdGFTaXplKQorICAgICAg
ICAgICAgb2Zmc2V0ID0gMDsKKyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisgICAgSGVh
ZGVyJiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxIZWFkZXIqPiht
X3NoYXJlZE1lbW9yeS0+ZGF0YSgpKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBoZWFk
ZXJTaXplKCk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrUmVhZExpbWl0U2xlZXBU
YWcgPSAxIDw8IDMxOworICAgIGNvbnN0IHNpemVfdCBtX2RhdGFTaXplOworICAgIGNvbnN0IHNp
emVfdCBtX21lc3NhZ2VBbGlnbm1lbnQ7CisgICAgY29uc3Qgc2l6ZV90IG1fbWluTWVzc2FnZVNp
emU7CisgICAgUmVmUHRyPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKK307
CisKK2NsYXNzIERlc3RpbmF0aW9uU3RyZWFtV3JpdGVyIGZpbmFsIDogRGVzdGluYXRpb25TdHJl
YW1CYXNlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEZXN0aW5hdGlvblN0cmVhbVdyaXRlcihz
aXplX3Qgc2l6ZSwgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQsIHNpemVfdCBtaW5NZXNzYWdlU2l6
ZSkKKyAgICAgICAgOiBEZXN0aW5hdGlvblN0cmVhbUJhc2Uoc2l6ZSwgbWVzc2FnZUFsaWdubWVu
dCwgbWluTWVzc2FnZVNpemUpCisgICAgeworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9IFdlYktp
dDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplKTsKKyAgICAgICAgaWYgKCFtX3NoYXJlZE1l
bW9yeSkKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIC8vIFJlYWQgc3RhcnRzIGZyb20g
MCB3aXRoIGxpbWl0IG9mIDAgYW5kIHJlYWRlciBzbGVlcGluZy4KKyAgICAgICAgaGVhZGVyKCku
d3JpdGVPZmZzZXQuc3RvcmUoa1JlYWRMaW1pdFNsZWVwVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9y
ZWxheGVkKTsKKyAgICAgICAgLy8gV3JpdGUgc3RhcnRzIGZyb20gMCB3aXRoIGEgbGltaXQgb2Yg
dGhlIHdob2xlIGJ1ZmZlci4KKyAgICAgICAgaGVhZGVyKCkucmVhZE9mZnNldC5zdG9yZSgwLCBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgICB9CisgICAgV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBkZXN0aW5hdGlvblN0cmVhbUhhbmRsZSgpCisgICAgeworICAgICAgICBX
ZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgaWYgKCFtX3NoYXJl
ZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRXcml0ZSkpCisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICByZXR1cm4g
eyBXVEZNb3ZlKGhhbmRsZSksIG1fc2hhcmVkTWVtb3J5LT5zaXplKCkgfTsKKyAgICB9CisgICAg
dm9pZCB3cml0ZSh1aW50OF90KiYgcHRyLCBzaXplX3QmIGNhcGFjaXR5KQorICAgIHsKKyAgICAg
ICAgc2l6ZV90IHdyaXRlTGltaXQgPSBzdGQ6Om1pbihoZWFkZXIoKS5yZWFkT2Zmc2V0LmxvYWQo
c3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSksIG1fZGF0YVNpemUpOworICAgICAgICBhbGlnbmVk
U3BhbihwdHIsIGNhcGFjaXR5LCBtX3dyaXRlT2Zmc2V0LCB3cml0ZUxpbWl0KTsKKyAgICB9Cisg
ICAgdm9pZCB3cml0ZXAodWludDhfdComIHB0ciwgc2l6ZV90JiBjYXBhY2l0eSkKKyAgICB7Cisg
ICAgICAgIHNpemVfdCB3cml0ZUxpbWl0ID0gc3RkOjptaW4oaGVhZGVyKCkucmVhZE9mZnNldC5s
b2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpLCBtX2RhdGFTaXplKTsKKyAgICAgICAgYWxp
Z25lZFNwYW4ocHRyLCBjYXBhY2l0eSwgbV93cml0ZU9mZnNldCwgd3JpdGVMaW1pdCk7CisgICAg
fQorICAgIGVudW0gY2xhc3MgV2FrZVVwUmVhZGVyIDogYm9vbCB7CisgICAgICAgIE5vLAorICAg
ICAgICBZZXMKKyAgICB9OworICAgIFdha2VVcFJlYWRlciBjb21taXRXcml0ZShzaXplX3Qgc2l6
ZSkKKyAgICB7CisgICAgICAgIHNpemVfdCBleHBlY3RlZFJlYWRMaW1pdCA9IG1fd3JpdGVPZmZz
ZXQ7CisgICAgICAgIG1fd3JpdGVPZmZzZXQgPSBhZGp1c3RPZmZzZXQoYWxpZ25lZE9mZnNldCht
X3dyaXRlT2Zmc2V0KSArIHNpemUpOworICAgICAgICBBU1NFUlQobV93cml0ZU9mZnNldCA8IG1f
ZGF0YVNpemUpOworICAgICAgICBzaXplX3QgcmVhZExpbWl0ID0gaGVhZGVyKCkud3JpdGVPZmZz
ZXQuZXhjaGFuZ2UobV93cml0ZU9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7Cisg
ICAgICAgIGlmIChyZWFkTGltaXQgIT0gZXhwZWN0ZWRSZWFkTGltaXQpCisgICAgICAgICAgICBy
ZXR1cm4gV2FrZVVwUmVhZGVyOjpZZXM7CisgICAgICAgIHJldHVybiBXYWtlVXBSZWFkZXI6Ok5v
OworICAgIH0KK3ByaXZhdGU6CisgICAgdm9pZCBhbGlnbmVkU3Bhbih1aW50OF90KiYgcHRyLCBz
aXplX3QmIHNpemUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkgeworICAgICAgICBBU1NF
UlQob2Zmc2V0IDwgbV9kYXRhU2l6ZSk7CisgICAgICAgIEFTU0VSVChsaW1pdCA8IG1fZGF0YVNp
emUpOworICAgICAgICBzaXplX3QgYWxpZ25lZCA9IGFsaWduZWRPZmZzZXQob2Zmc2V0KTsKKyAg
ICAgICAgc2l6ZSA9IDA7CisgICAgICAgIGlmIChvZmZzZXQgPCBsaW1pdCkgeworICAgICAgICAg
ICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0ICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAg
ICAgICBzaXplID0gbGVuKGFsaWduZWQsIGxpbWl0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwgbGltaXQpCisgICAgICAg
ICAgICAgICAgc2l6ZSA9IGxlbihhbGlnbmVkLCBsaW1pdCk7CisgICAgICAgIH0KKyAgICAgICAg
cHRyID0gZGF0YSgpICsgYWxpZ25lZDsKKyAgICB9CisgICAgc2l6ZV90IGxlbihzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGltaXQpIHsKKyAgICAgICAgaWYgKGxpbWl0ID09IDApCisgICAgICAgICAg
ICByZXR1cm4gbV9kYXRhU2l6ZSAtIDEgLSBvZmZzZXQ7CisgICAgICAgIGlmIChsaW1pdCA8PSBv
ZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gbV9kYXRhU2l6ZSAtIG9mZnNldDsKKyAgICAgICAg
cmV0dXJuIGxpbWl0IC0gb2Zmc2V0IC0gMTsKKyAgICB9CisgICAgc2l6ZV90IG1fd3JpdGVPZmZz
ZXQgeyAwIH07Cit9OworCitjbGFzcyBEZXN0aW5hdGlvblN0cmVhbVJlYWRlciBmaW5hbCA6IERl
c3RpbmF0aW9uU3RyZWFtQmFzZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRGVzdGluYXRpb25T
dHJlYW1SZWFkZXIoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0cmVhbSwgc2l6
ZV90IG1lc3NhZ2VBbGlnbm1lbnQsIHNpemVfdCBtaW5NZXNzYWdlU2l6ZSkKKyAgICAgICAgOiBE
ZXN0aW5hdGlvblN0cmVhbUJhc2Uoc3RhdGljX2Nhc3Q8c2l6ZV90PihzdHJlYW0uZGF0YVNpemUp
LCBtZXNzYWdlQWxpZ25tZW50LCBtaW5NZXNzYWdlU2l6ZSkKKyAgICB7CisgICAgICAgIGlmIChz
dHJlYW0uZGF0YVNpemUgPCBoZWFkZXJTaXplKCkgKyBtaW5NZXNzYWdlU2l6ZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6bWFwKHN0cmVhbS5oYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkV3JpdGUpOworICAgICAgICBpZiAoc2hhcmVkTWVtb3J5LT5zaXplKCkgPCBzdHJlYW0u
ZGF0YVNpemUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2hhcmVkTWVtb3J5ID0g
V1RGTW92ZShzaGFyZWRNZW1vcnkpOworICAgIH0KKworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2hhcmVkTWVtb3J5OyB9CisKKyAgICB2b2lkIHJlYWQoY29uc3QgdWludDhf
dComIHB0ciwgc2l6ZV90JiBzaXplKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHJlYWRMaW1pdCA9
IGhlYWRlcigpLndyaXRlT2Zmc2V0LmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7Cisg
ICAgICAgIHJlYWRMaW1pdCAmPSB+a1JlYWRMaW1pdFNsZWVwVGFnOworICAgICAgICBhbGlnbmVk
U3BhbihwdHIsIHNpemUsIG1fcmVhZE9mZnNldCwgcmVhZExpbWl0KTsKKyAgICB9CisKKyAgICB2
b2lkIGNvbW1pdFJlYWQoc2l6ZV90IHJlYWRTaXplLCBjb25zdCB1aW50OF90KiYgcHRyLCBzaXpl
X3QmIHNpemUpCisgICAgeworICAgICAgICBBU1NFUlQocmVhZFNpemUpOworICAgICAgICBtX3Jl
YWRPZmZzZXQgPSBhZGp1c3RPZmZzZXQoYWxpZ25lZE9mZnNldChtX3JlYWRPZmZzZXQpICsgcmVh
ZFNpemUpOworICAgICAgICBoZWFkZXIoKS5yZWFkT2Zmc2V0LnN0b3JlKG1fcmVhZE9mZnNldCwg
c3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CisgICAgICAgIHNpemVfdCByZWFkTGltaXQgPSBo
ZWFkZXIoKS53cml0ZU9mZnNldC5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICAg
ICAgICBpZiAocmVhZExpbWl0ID09IG1fcmVhZE9mZnNldCkKKyAgICAgICAgICAgIHJlYWRMaW1p
dCA9IGhlYWRlcigpLndyaXRlT2Zmc2V0LmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhyZWFkTGltaXQs
IG1fcmVhZE9mZnNldCB8IGtSZWFkTGltaXRTbGVlcFRhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNx
X3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgICAgIGFsaWduZWRTcGFuKHB0
ciwgc2l6ZSwgbV9yZWFkT2Zmc2V0LCByZWFkTGltaXQpOworICAgIH0KK3ByaXZhdGU6CisgICAg
dm9pZCBhbGlnbmVkU3Bhbihjb25zdCB1aW50OF90KiYgcHRyLCBzaXplX3QmIHNpemUsIHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsaW1pdCkgeworICAgICAgICBBU1NFUlQob2Zmc2V0IDwgbV9kYXRh
U2l6ZSk7CisgICAgICAgIEFTU0VSVChsaW1pdCA8IG1fZGF0YVNpemUpOworICAgICAgICBzaXpl
X3QgYWxpZ25lZCA9IGFsaWduZWRPZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgc2l6ZSA9IDA7Cisg
ICAgICAgIGlmIChvZmZzZXQgPCBsaW1pdCkgeworICAgICAgICAgICAgaWYgKG9mZnNldCA8PSBh
bGlnbmVkICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgICAgICBzaXplID0gbGVuKGFs
aWduZWQsIGxpbWl0KTsKKyAgICAgICAgfSBlbHNlIGlmIChvZmZzZXQgPiBsaW1pdCkgeworICAg
ICAgICAgICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0IHx8IGFsaWduZWQgPCBsaW1pdCkKKyAgICAg
ICAgICAgICAgICBzaXplID0gbGVuKGFsaWduZWQsIGxpbWl0KTsKKyAgICAgICAgfQorICAgICAg
ICBwdHIgPSBkYXRhKCkgKyBhbGlnbmVkOworICAgIH0KKyAgICBzaXplX3QgbGVuKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsaW1pdCkgeworICAgICAgICBpZiAob2Zmc2V0IDw9IGxpbWl0KQorICAg
ICAgICAgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0OworICAgICAgICByZXR1cm4gbV9kYXRhU2l6
ZSAtIG9mZnNldDsKKyAgICB9CisKKyAgICBzaXplX3QgbV9yZWFkT2Zmc2V0IHsgMCB9OworfTsK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNw
cAppbmRleCBlODNhM2U0YWZmNDJhNTc1NTA1ZGM4ZjA3MzE3YTFjMWFjMTlkZWFlLi41YWQ2Mjg0
OTgyMGE5MTUyYzg4ZjgzNDc2YWRlYWI1Y2Y5MTUwNDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9FbmNvZGVyLmNwcApAQCAtNzMsNiArNzMsMTggQEAgRW5jb2Rlcjo6RW5jb2RlcihNZXNz
YWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKICAgICBlbmNvZGVI
ZWFkZXIoKTsKIH0KIAorRW5jb2Rlcjo6RW5jb2RlcihNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgdWludDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtQ2Fw
YWNpdHkpCisgICAgOiBtX21lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQorICAgICwgbV9kZXN0aW5h
dGlvbklEKGRlc3RpbmF0aW9uSUQpCisgICAgLCBtX2J1ZmZlcihzdHJlYW0pCisgICAgLCBtX2J1
ZmZlclBvaW50ZXIoc3RyZWFtKQorICAgICwgbV9idWZmZXJTaXplKDApCisgICAgLCBtX2J1ZmZl
ckNhcGFjaXR5KHN0cmVhbUNhcGFjaXR5KQorICAgICwgbV9pc0VuY29kaW5nVG9TdHJlYW0odHJ1
ZSkKK3sKKyAgICBlbmNvZGVIZWFkZXIoKTsKK30KKwogRW5jb2Rlcjo6RW5jb2RlcihDb25zdHJ1
Y3RXaXRob3V0SGVhZGVyVGFnKQogICAgIDogbV9tZXNzYWdlTmFtZSgpCiAgICAgLCBtX2Rlc3Rp
bmF0aW9uSUQoMCkKQEAgLTg1LDkgKzk3LDExIEBAIEVuY29kZXI6OkVuY29kZXIoQ29uc3RydWN0
V2l0aG91dEhlYWRlclRhZykKIAogRW5jb2Rlcjo6fkVuY29kZXIoKQogewotICAgIGlmIChtX2J1
ZmZlciAhPSBtX2lubGluZUJ1ZmZlcikKLSAgICAgICAgZnJlZUJ1ZmZlcihtX2J1ZmZlciwgbV9i
dWZmZXJDYXBhY2l0eSk7Ci0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZGlzcG9zZSBvZiB0aGUg
YXR0YWNobWVudHMgaW4gY2FzZXMgb2YgZmFpbHVyZS4KKyAgICBpZiAoIW1faXNFbmNvZGluZ1Rv
U3RyZWFtKSB7CisgICAgICAgIGlmIChtX2J1ZmZlciAhPSBtX2lubGluZUJ1ZmZlcikKKyAgICAg
ICAgICAgIGZyZWVCdWZmZXIobV9idWZmZXIsIG1fYnVmZmVyQ2FwYWNpdHkpOworICAgICAgICAv
LyBGSVhNRTogV2UgbmVlZCB0byBkaXNwb3NlIG9mIHRoZSBhdHRhY2htZW50cyBpbiBjYXNlcyBv
ZiBmYWlsdXJlLgorICAgIH0KIH0KIAogYm9vbCBFbmNvZGVyOjppc1N5bmNNZXNzYWdlKCkgY29u
c3QKQEAgLTE2MCwyMSArMTc0LDI0IEBAIHZvaWQgRW5jb2Rlcjo6cmVzZXJ2ZShzaXplX3Qgc2l6
ZSkKICAgICBpZiAoc2l6ZSA8PSBtX2J1ZmZlckNhcGFjaXR5KQogICAgICAgICByZXR1cm47CiAK
LSAgICBzaXplX3QgbmV3Q2FwYWNpdHkgPSByb3VuZFVwVG9BbGlnbm1lbnQobV9idWZmZXJDYXBh
Y2l0eSAqIDIsIDQwOTYpOwotICAgIHdoaWxlIChuZXdDYXBhY2l0eSA8IHNpemUpCi0gICAgICAg
IG5ld0NhcGFjaXR5ICo9IDI7CisgICAgc2l6ZV90IGNhcGFjaXR5ID0gcm91bmRVcFRvQWxpZ25t
ZW50KG1fYnVmZmVyQ2FwYWNpdHkgKiAyLCA0MDk2KTsKKyAgICB3aGlsZSAoY2FwYWNpdHkgPCBz
aXplKQorICAgICAgICBjYXBhY2l0eSAqPSAyOwogCi0gICAgdWludDhfdCogbmV3QnVmZmVyOwot
ICAgIGlmICghYWxsb2NCdWZmZXIobmV3QnVmZmVyLCBuZXdDYXBhY2l0eSkpCisgICAgdWludDhf
dCogYnVmZmVyOworICAgIGlmICghYWxsb2NCdWZmZXIoYnVmZmVyLCBjYXBhY2l0eSkpCiAgICAg
ICAgIENSQVNIKCk7Ci0KLSAgICBtZW1jcHkobmV3QnVmZmVyLCBtX2J1ZmZlciwgbV9idWZmZXJT
aXplKTsKLQotICAgIGlmIChtX2J1ZmZlciAhPSBtX2lubGluZUJ1ZmZlcikKLSAgICAgICAgZnJl
ZUJ1ZmZlcihtX2J1ZmZlciwgbV9idWZmZXJDYXBhY2l0eSk7Ci0KLSAgICBtX2J1ZmZlciA9IG5l
d0J1ZmZlcjsKLSAgICBtX2J1ZmZlckNhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7CisgICAgc3RkOjpz
d2FwKG1fYnVmZmVyLCBidWZmZXIpOworICAgIHN0ZDo6c3dhcChtX2J1ZmZlckNhcGFjaXR5LCBj
YXBhY2l0eSk7CisgICAgbWVtY3B5KG1fYnVmZmVyLCBidWZmZXIsIG1fYnVmZmVyU2l6ZSk7CisK
KyAgICBpZiAobV9pc0VuY29kaW5nVG9TdHJlYW0pIHsKKyAgICAgICAgbV9pc0VuY29kaW5nVG9T
dHJlYW0gPSBmYWxzZTsKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxPcHRpb25TZXQ8TWVzc2Fn
ZUZsYWdzPio+KGJ1ZmZlciktPmFkZChNZXNzYWdlRmxhZ3M6OlN0cmVhbU1lc3NhZ2VPdXRPZkxp
bmUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChidWZmZXIgIT0gbV9pbmxpbmVCdWZmZXIp
CisgICAgICAgICAgICBmcmVlQnVmZmVyKGJ1ZmZlciwgY2FwYWNpdHkpOworICAgIH0KIH0KIAog
dm9pZCBFbmNvZGVyOjplbmNvZGVIZWFkZXIoKQpAQCAtMjAxLDcgKzIxOCw4IEBAIHVpbnQ4X3Qq
IEVuY29kZXI6Omdyb3coc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCiAgICAgc2l6ZV90
IGFsaWduZWRTaXplID0gcm91bmRVcFRvQWxpZ25tZW50KG1fYnVmZmVyU2l6ZSwgYWxpZ25tZW50
KTsKICAgICByZXNlcnZlKGFsaWduZWRTaXplICsgc2l6ZSk7CiAKLSAgICBzdGQ6Om1lbXNldCht
X2J1ZmZlciArIG1fYnVmZmVyU2l6ZSwgMCwgYWxpZ25lZFNpemUgLSBtX2J1ZmZlclNpemUpOwor
ICAgIGlmIChtX2J1ZmZlclNpemUgPCBhbGlnbmVkU2l6ZSkKKyAgICAgICAgc3RkOjptZW1zZXQo
bV9idWZmZXIgKyBtX2J1ZmZlclNpemUsIDAsIGFsaWduZWRTaXplIC0gbV9idWZmZXJTaXplKTsK
IAogICAgIG1fYnVmZmVyU2l6ZSA9IGFsaWduZWRTaXplICsgc2l6ZTsKICAgICBtX2J1ZmZlclBv
aW50ZXIgPSBtX2J1ZmZlciArIGFsaWduZWRTaXplICsgc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0VuY29kZXIuaAppbmRleCBlYTYxOTY3YmUxZWJjYmQ4YjZmYmJhYThiODVhZjQxOGU4ZDUw
Y2NhLi4zNzI5NzUzZTA4NTEyYWExYTEwYTMwYTk4Y2U3ZmIxNmM4M2I3ZWE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCkBAIC00NCw4ICs0NCwxMiBAQCBjbGFzcyBFbmNvZGVy
IGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBFbmNv
ZGVyKE1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICBFbmNvZGVyKE1l
c3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50OF90KiBzdHJlYW0sIHNpemVf
dCBzdHJlYW1DYXBhY2l0eSk7CiAgICAgfkVuY29kZXIoKTsKIAorICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IHN0cmVhbU1lc3NhZ2VBbGlnbm1lbnQgPSBhbGlnbm9mKHVpbnQ2NF90KTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBvdXRPZkxpbmVTdHJlYW1NZXNzYWdlU2l6ZSA9IHNp
emVvZih1aW50NjRfdCkgKiAyOworCiAgICAgUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5h
bWUoKSBjb25zdCB7IHJldHVybiByZWNlaXZlck5hbWUobV9tZXNzYWdlTmFtZSk7IH0KICAgICBN
ZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0K
ICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bklEOyB9CkBAIC05Niw2ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+
IHJlbGVhc2VBdHRhY2htZW50cygpOwogICAgIHZvaWQgcmVzZXJ2ZShzaXplX3QpOwogCisgICAg
Ym9vbCBpc0VuY29kaW5nVG9TdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2lzRW5jb2RpbmdUb1N0
cmVhbTsgfQorCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNJUENFbmNvZGVyID0gdHJ1ZTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0xMjgsNiArMTM0LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGhhc0F0dGFjaG1lbnRzKCkgY29uc3Q7CiAKICAgICB2b2lkIGVuY29kZUhlYWRlcigp
OworCiAgICAgY29uc3QgT3B0aW9uU2V0PE1lc3NhZ2VGbGFncz4mIG1lc3NhZ2VGbGFncygpIGNv
bnN0OwogICAgIE9wdGlvblNldDxNZXNzYWdlRmxhZ3M+JiBtZXNzYWdlRmxhZ3MoKTsKIApAQCAt
MTM4LDEwICsxNDUsMTIgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ4X3QqIG1fYnVmZmVyOwogICAg
IHVpbnQ4X3QqIG1fYnVmZmVyUG9pbnRlcjsKLSAgICAKKwogICAgIHNpemVfdCBtX2J1ZmZlclNp
emU7CiAgICAgc2l6ZV90IG1fYnVmZmVyQ2FwYWNpdHk7CiAKKyAgICBib29sIG1faXNFbmNvZGlu
Z1RvU3RyZWFtIHsgZmFsc2UgfTsKKwogICAgIFZlY3RvcjxBdHRhY2htZW50PiBtX2F0dGFjaG1l
bnRzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2Fn
ZUZsYWdzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaAppbmRl
eCBhZDRkNDUyZTFlY2RlOTNhYWIxMjBkZjFiMTQ5OTZhOTA3YzMxZDFlLi5lMjcyZmE5YjkyMzU4
N2JiMTk1YWFkZGUxZjU3MDg0NDgxZmY1MjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9NZXNzYWdlRmxhZ3MuaApAQCAtMzIsNiArMzIsNyBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFn
cyA6IHVpbnQ4X3QgewogICAgIERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5
ID0gMSA8PCAxLAogICAgIERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yVW5ib3VuZGVkU3lu
Y1JlcGx5ID0gMSA8PCAyLAogICAgIFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZyA9
IDEgPDwgMywKKyAgICBTdHJlYW1NZXNzYWdlT3V0T2ZMaW5lID0gMSA8PCA0LAogfTsKIAogZW51
bSBjbGFzcyBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogdWludDhfdCB7
CkBAIC01MCw3ICs1MSw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8SVBDOjpNZXNz
YWdlRmxhZ3M+IHsKICAgICAgICAgSVBDOjpNZXNzYWdlRmxhZ3M6OlN5bmNNZXNzYWdlLAogICAg
ICAgICBJUEM6Ok1lc3NhZ2VGbGFnczo6RGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5j
UmVwbHksCiAgICAgICAgIElQQzo6TWVzc2FnZUZsYWdzOjpEaXNwYXRjaE1lc3NhZ2VXaGVuV2Fp
dGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseSwKLSAgICAgICAgSVBDOjpNZXNzYWdlRmxhZ3M6OlVz
ZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZworICAgICAgICBJUEM6Ok1lc3NhZ2VGbGFn
czo6VXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nLAorICAgICAgICBJUEM6Ok1lc3Nh
Z2VGbGFnczo6U3RyZWFtTWVzc2FnZU91dE9mTGluZQogICAgID47CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1SZWNlaXZlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNkNzU1MTlmN2Q2MzVlYzZlZjY0ZDMwMzcyNmRiYjA0NTQwM2I5NWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU3RyZWFtUmVjZWl2ZXIu
aApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRGVz
dGluYXRpb25TdHJlYW0uaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3Nh
Z2VzLmgiCisKK25hbWVzcGFjZSBJUEMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPgorY2xh
c3MgTWVzc2FnZVN0cmVhbVJlY2VpdmVyICB7CitwdWJsaWM6CisgICAgTWVzc2FnZVN0cmVhbVJl
Y2VpdmVyKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pCisgICAgICAg
IDogbV9zdHJlYW0oV1RGTW92ZShzdHJlYW0pLCBEZWNvZGVyOjpzdHJlYW1NZXNzYWdlQWxpZ25t
ZW50LCBEZWNvZGVyOjpvdXRPZkxpbmVTdHJlYW1NZXNzYWdlU2l6ZSkKKyAgICB7IH0KKyAgICB+
TWVzc2FnZVN0cmVhbVJlY2VpdmVyKCkgPSBkZWZhdWx0OworCisgICAgdm9pZCBzdHJlYW1XYWtl
VXAoQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKKyAgICB7CisgICAgICAgIGF1dG8gZGVzdGluYXRp
b25JRCA9IHN0YXRpY19jYXN0PFNlbGYqPih0aGlzKS0+bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogYnVmZmVyIHsgbnVsbHB0ciB9OworICAgICAg
ICBzaXplX3QgYnVmZmVyU2l6ZSB7IDAgfTsKKyAgICAgICAgbV9zdHJlYW0ucmVhZChidWZmZXIs
IGJ1ZmZlclNpemUpOworICAgICAgICB3aGlsZSAoYnVmZmVyU2l6ZSA+PSBEZWNvZGVyOjpvdXRP
ZkxpbmVTdHJlYW1NZXNzYWdlU2l6ZSkgeworICAgICAgICAgICAgSVBDOjpEZWNvZGVyIGRlY29k
ZXIgeyBidWZmZXIsIGJ1ZmZlclNpemUsIGRlc3RpbmF0aW9uSUQgfTsKKyAgICAgICAgICAgIEFT
U0VSVChkZWNvZGVyLmlzVmFsaWQoKSk7CisgICAgICAgICAgICBpZiAoZGVjb2Rlci5pc091dE9m
TGluZVN0cmVhbU1lc3NhZ2UoKSkgeworICAgICAgICAgICAgICAgIG1fc3RyZWFtLmNvbW1pdFJl
YWQoRGVjb2Rlcjo6b3V0T2ZMaW5lU3RyZWFtTWVzc2FnZVNpemUsIGJ1ZmZlciwgYnVmZmVyU2l6
ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PFNlbGYqPih0aGlzKS0+ZGlkUmVjZWl2ZVN0cmVhbU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgICAgICAgICAgQVNTRVJUKGRlY29kZXIu
aXNWYWxpZCgpKTsKKyAgICAgICAgICAgICAgICBtX3N0cmVhbS5jb21taXRSZWFkKGRlY29kZXIu
Y3VycmVudEJ1ZmZlclBvc2l0aW9uKCksIGJ1ZmZlciwgYnVmZmVyU2l6ZSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9Citwcml2YXRlOgorICAgIERlc3RpbmF0aW9uU3RyZWFtUmVh
ZGVyIG1fc3RyZWFtOworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU3RyZWFtU2VuZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU3RyZWFtU2VuZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVkY2E1
YzFjMWQ0ZGE3NjA4MjI0M2M0NWNkNDg0ZGM3NDhhZjEyNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1TZW5kZXIuaApAQCAtMCwwICsx
LDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvblN0cmVhbS5oIgorI2luY2x1ZGUgIlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CisKK25hbWVzcGFjZSBJUEMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBTZWxmPgorY2xhc3MgTWVz
c2FnZVN0cmVhbVNlbmRlciAgeworcHVibGljOgorICAgIE1lc3NhZ2VTdHJlYW1TZW5kZXIoc2l6
ZV90IHN0cmVhbVNpemUpCisgICAgICAgIDogbV9zdHJlYW0oc3RyZWFtU2l6ZSwgRW5jb2Rlcjo6
c3RyZWFtTWVzc2FnZUFsaWdubWVudCwgRW5jb2Rlcjo6b3V0T2ZMaW5lU3RyZWFtTWVzc2FnZVNp
emUpCisgICAgeyB9CisgICAgfk1lc3NhZ2VTdHJlYW1TZW5kZXIoKSA9IGRlZmF1bHQ7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSwgT3B0aW9u
U2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgYXV0byog
Y29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFNlbGYqPih0aGlzKS0+bWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKTsKKyAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworICAgICAgICBzdGF0aWNfYXNz
ZXJ0KCFVOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CisgICAgICAgIHVpbnQ4X3QqIHB0
ciB7IG51bGxwdHIgfTsKKyAgICAgICAgc2l6ZV90IGNhcGFjaXR5IHsgMCB9OworICAgICAgICBt
X3N0cmVhbS53cml0ZXAocHRyLCBjYXBhY2l0eSk7CisgICAgICAgIHdoaWxlIChjYXBhY2l0eSA8
IEVuY29kZXI6Om91dE9mTGluZVN0cmVhbU1lc3NhZ2VTaXplKSB7CisgICAgICAgICAgICBUaHJl
YWQ6OnlpZWxkKCk7CisgICAgICAgICAgICBtX3N0cmVhbS53cml0ZShwdHIsIGNhcGFjaXR5KTsK
KyAgICAgICAgfQorICAgICAgICBhdXRvIGRlc3RpbmF0aW9uSUQgPSBzdGF0aWNfY2FzdDxTZWxm
Kj4odGhpcyktPm1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCk7CisgICAgICAgIGF1dG8gZW5j
b2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCBwdHIs
IGNhcGFjaXR5KTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkp
OworICAgICAgICBpZiAoZW5jb2Rlci0+aXNFbmNvZGluZ1RvU3RyZWFtKCkpIHsKKyAgICAgICAg
ICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gbV9zdHJlYW0uY29tbWl0V3JpdGUoZW5jb2Rlci0+YnVm
ZmVyU2l6ZSgpKTsKKyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gRGVzdGluYXRpb25T
dHJlYW1Xcml0ZXI6Oldha2VVcFJlYWRlcjo6Tm8pCisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0cmVhbVdha2VVcDo6bmFtZSgpLCBkZXN0aW5hdGlv
bklEKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0g
bV9zdHJlYW0uY29tbWl0V3JpdGUoRW5jb2Rlcjo6b3V0T2ZMaW5lU3RyZWFtTWVzc2FnZVNpemUp
OworICAgICAgICAgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBEZXN0aW5hdGlvblN0cmVhbVdyaXRl
cjo6V2FrZVVwUmVhZGVyOjpZZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbm5lY3Rpb24t
PnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgZW5jb2RlciA9IG1ha2VV
bmlxdWU8RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdHJlYW1X
YWtlVXA6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2Rlciks
IHNlbmRPcHRpb25zKTsKKyAgICB9CisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0
aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFNlbmRT
eW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5
bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBzZW5kU3luYyBkb2VzIG5vdCBnbyB0aHJvdWdoIHRoZSBzdHJlYW0gYmVjYXVzZSB0aGUgY29u
c3RydWN0b3Igb2YgdGhlIHN5bmMgZW5jb2RlciBpcyB0aWVkIHRvIHRoZQorICAgICAgICAvLyBD
b25uZWN0aW9uLiBJdCdzIGEgbWVjaGFuaWNhbCByZWZhY3RvciB0byBmaXggaXQuCisgICAgICAg
IHN0YXRpY19hc3NlcnQoVDo6aXNTeW5jLCAiTWVzc2FnZSBpcyBub3Qgc3luYyEiKTsKKyAgICAg
ICAgYXV0byBjb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8U2VsZio+KHRoaXMpLT5tZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpOworICAgICAgICBBU1NFUlQoY29ubmVjdGlvbik7CisgICAgICAgIGF1
dG8gZGVzdGluYXRpb25JRCA9IHN0YXRpY19jYXN0PFNlbGYqPih0aGlzKS0+bWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKTsKKyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24tPnNlbmRTeW5jKFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCBz
ZW5kU3luY09wdGlvbnMpOworICAgIH0KKworICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgZGVzdGluYXRpb25TdHJlYW1IYW5kbGUoKSB7IHJldHVybiBtX3N0cmVhbS5kZXN0aW5h
dGlvblN0cmVhbUhhbmRsZSgpOyB9Citwcml2YXRlOgorICAgIERlc3RpbmF0aW9uU3RyZWFtV3Jp
dGVyIG1fc3RyZWFtOworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA4OWZiOGFiYWY5YWVjZTA3YzYzNDcwZGEzZGI4
M2M4ODMyNmRkM2YyLi4zOTIxZTUxZjQ2NjU2M2I3ODVhZjJlM2NjYzViMzU0N2FmN2ZhM2Q1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTMzLDYgKzMzLDcg
QEAgTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSA9ICdMZWdhY3lSZWNlaXZlcicKIE5PVF9SRUZD
T1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSA9ICdOb3RSZWZDb3VudGVkJwogU1lOQ0hST05PVVNf
QVRUUklCVVRFID0gJ1N5bmNocm9ub3VzJwogQVNZTkNfQVRUUklCVVRFID0gJ0FzeW5jJworU1RS
RUFNX0FUVFJJQlVURSA9ICdTdHJlYW0nCiAKIF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBA
IC00OTYsNyArNDk3LDggQEAgZGVmIGFzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBt
ZXNzYWdlKToKIAogICAgIHJlc3VsdCA9IFtdCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OiVzOjolczo6bmFtZSgpKSB7XG4nICUg
KHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgICAg
ICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24s
IHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKGRpc3BhdGNoX2Z1bmN0aW9u
X2FyZ3MpKSkKKyAgICBpZiBub3QgKHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJ
QlVURSkgYW5kIG1lc3NhZ2UubmFtZSA9PSAnU3RyZWFtV2FrZVVwJyk6CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglcyk7XG4nICUgKGRp
c3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICcsICcuam9pbihk
aXNwYXRjaF9mdW5jdGlvbl9hcmdzKSkpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1
cm47XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9XG4nKQogICAgIHJldHVybiBzdXJyb3Vu
ZF9pbl9jb25kaXRpb24oJycuam9pbihyZXN1bHQpLCBtZXNzYWdlLmNvbmRpdGlvbikKQEAgLTg1
Niw4ICs4NTgsMTMgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkK
IAorICAgIHJlY2VpdmVfdmFyaWFudCA9ICcnCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0
ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKToKKyAgICAgICAgcmVjZWl2ZV92YXJpYW50ID0g
cmVjZWl2ZXIubmFtZQorICAgIGVsaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRU
UklCVVRFKToKKyAgICAgICAgcmVjZWl2ZV92YXJpYW50ID0gJ1N0cmVhbScKICAgICBpZiBhc3lu
Y19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NB
R0VfQVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BB
VENIX01FU1NBR0VfQVRUUklCVVRFKToKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6
ZGlkUmVjZWl2ZSVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNl
aXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQor
ICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNl
aXZlci5uYW1lLCByZWNlaXZlX3ZhcmlhbnQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4n
KQogICAgICAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9S
RUNFSVZFUl9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGF1dG8g
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpO1xuJykKQEAgLTg3NCw2ICs4ODEsMTMgQEAg
ZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCd9XG4nKQogCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRU
UklCVVRFKToKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4n
ICUgKHJlY2VpdmVyLm5hbWUpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7XG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RyZWFtV2FrZVVwKGNv
bm5lY3Rpb24pO1xuJykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKwogICAgIGlmIHN5
bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSk6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN5bmMlc01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVy
Lm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRF
KSBlbHNlICcnKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGU5NDJhZDY3YzkyNWEzNzY0ZGM4MjhhNDllY2ZiNGEwZjI5YzU4NTYuLmI4
ZmYwMzEzYTY1MTA2NmQ2OTdiYzExYTVlYTFhOGUwYTQzYWExNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMxOCw2ICsxMzE4LDgg
QEAKIAkJN0FGQkQzNjcyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2RjIxRTU0NkY4MDA1REJBQ0IgLyogUGVyc2lzdGVu
Y3lVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FGQkQzNkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLzsgfTsKIAkJ
N0IxREIyNjYyNTY2OENFMTAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2
QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLzsgfTsKKwkJN0JFNzI2N0EyNTdBNzNENjAwRTg1RDk4
IC8qIE1lc3NhZ2VTdHJlYW1TZW5kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCRTcyNjc5MjU3QTczRDYwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFt
U2VuZGVyLmggKi87IH07CisJCTdCRTcyNjdDMjU3QTc5QzgwMEU4NUQ5OCAvKiBNZXNzYWdlU3Ry
ZWFtUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCRTcyNjdCMjU3QTc5QzgwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaCAq
LzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
ckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVn
aW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzFCQTMz
RTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQ
SURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTQ0MTQsNiArNDQxNiw4IEBACiAJCTdCOTA0MTZEMjU1
MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVy
YXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1NzRGNjcyMDBF
ODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2Njgy
NTc2ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjc5MjU3QTczRDYwMEU4NUQ5OCAvKiBNZXNzYWdl
U3RyZWFtU2VuZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VT
dHJlYW1TZW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JFNzI2N0IyNTdB
NzlDODAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1SZWNlaXZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BsdWdpbkluZm9y
bWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3NDMsNiArNjc0Nyw4
IEBACiAJCQkJMUEzRUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5o
ICovLAogCQkJCTFBQUIwMzc3MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmNwcCAq
LywKIAkJCQkxQUFCMDM3ODE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oICovLAor
CQkJCTdCRTcyNjdCMjU3QTc5QzgwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaCAq
LywKKwkJCQk3QkU3MjY3OTI1N0E3M0Q2MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVNlbmRlci5o
ICovLAogCQkJCTJEQzE4MDAxRDkwREREMTVGQzY5OTFBOSAvKiBTaGFyZWRCdWZmZXJDb3B5LmNw
cCAqLywKIAkJCQk1Q0M1REI5MTIxNDg4RTE2MDA2Q0I4QTggLyogU2hhcmVkQnVmZmVyQ29weS5o
ICovLAogCQkJCTJEQzE4NTVFREJGQjg1MEJBMEI2RDA2RCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmNwcCAqLywKQEAgLTExNDM5LDYgKzExNDQ1LDggQEAKIAkJCQkxQTNFRUQxMjE2MUE1
M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNF
RUQwRjE2MUE1MzU0MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUFCMDM3QTE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0JFNzI2N0MyNTdBNzlDODAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1S
ZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JFNzI2N0EyNTdBNzNENjAwRTg1RDk4IC8q
IE1lc3NhZ2VTdHJlYW1TZW5kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExM0IzREEyMjA3RjM5
REUwMDkwQzU4RCAvKiBNb2JpbGVXaUZpU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURD
QjIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcAppbmRleCAzNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Li42MjFk
YmE0ZDgxNjY1MmZmMjY1MmVhOWM1ODBkYTQ0ODg2ZmUwZTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTQ4LDE5ICs0OCwyMyBAQCBSZWZQdHI8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3JlYXRlKGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsKIH0KIAorLy9zdGF0aWMgY29uc3RleHByIHNpemVfdCBk
ZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMTA7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZh
dWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjQ7IC8vIEZJWE1FOiB3cmFwYXJvdW5kIGhhcyBvZmYtYnkt
c29tZSBidWdzLgorCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMp
Ci0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShhdHRycykKKyAgICA6IElQ
Qzo6TWVzc2FnZVN0cmVhbVNlbmRlcjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PihkZWZh
dWx0U3RyZWFtU2l6ZSkKKyAgICAsIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0
dHJzKQogewogICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1l
c3NhZ2VSZWNlaXZlck1hcCgpOwogICAgIG1lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRo
aXMpOwotICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciks
IDApOworICAgIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgZGVzdGluYXRpb25TdHJlYW1IYW5kbGUoKSksIDAp
OwogfQogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eSgpCiB7CiAgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNl
aXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAgICAgbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7Ci0gICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKSwgMCk7CisgICAgbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZUdyYXBoaWNzQ29udGV4
dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgcGxhdGZvcm1Td2FwQ2hhaW4oKS5yZWN5Y2xlQnVmZmVyKCk7CiAjZW5kaWYKQEAg
LTgwLDE0ICs4NCwxNCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc2hh
cGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIG1fY3VycmVudFdpZHRoID0gd2lkdGg7
CiAgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OwotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXNoYXBlKHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQ7Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpS
ZXBseShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpQcmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIDEwX3Mp
OwogICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdo
dChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsK
ICAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBhdXRvJiBzYyA9IHBsYXRmb3JtU3dh
cENoYWluKCk7CkBAIC05NSwxOSArOTksMTkgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgICAgIHNjLnByZXNlbnQoeyBXVEZNb3Zl
KGRpc3BsYXlCdWZmZXIpLCBudWxscHRyIH0pOwogICAgIH0KICNlbHNlCi0gICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBs
eSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBs
eSgpLCAxMF9zKTsKICNlbmRpZgogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbiksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQo
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpOb3RpZnlN
YXJrQ29udGV4dENoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpOb3RpZnlNYXJrQ29udGV4
dENoYW5nZWQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2lt
dWxhdGVDb250ZXh0Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oCmluZGV4IGQ5OWVkYTI5ZjZkYjVlMTgxOTcxMzE3OGYyYWE1MzFiNGY1ZGQ2ZTAuLmQxYWMw
MWJiNmZjYTA2NmNmYTcyYzY3NzVhYTI0N2I1ZTBmYTBhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
LSNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVN0cmVhbVNlbmRl
ci5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTCBpbiBHUFUgcHJvY2Vzcy4KIC8vIFRoZSBpbXBsZW1lbnRhdGlv
biBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbC4KIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgZmluYWwKLSAg
ICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VT
dHJlYW1TZW5kZXI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4KICAgICAsIHByaXZhdGUg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5PgogICAgICwgcHVibGljIFdlYkNvcmU6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlIHsKQEAgLTU1LDkgKzU1LDkgQEAgcHVibGljOgogICAgIHN0
YXRpYyBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOwogICAgIH5SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5KCkgZmluYWw7CiAKLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3Zl
cnJpZGVzLgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdCBmaW5hbDsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IGZpbmFsOworICAgIC8vIElQQzo6TWVzc2FnZVN0cmVhbVNlbmRlciB0ZW1wbGF0ZSBjb250
cmFjdC4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3Q7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdDsKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9u
c0dlbmVyYXRlZC5jcHAKaW5kZXggZjdlY2Y4NjU1NmEwMDczYWY4ZjU1NGNmY2ZjMGVmMzM5ZjYx
ZTg5YS4uM2MxN2MyNGFkYzczYjBiZmYyYzYwYzU5MzRkZWQ3YzdkMGU3YmViZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuY3BwCkBAIC0zMiwzMjQgKzMyLDMyNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRGYWlsTmV4dEdQVVN0YXR1
c0NoZWNrKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
U2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxO
ZXh0R1BVU3RhdHVzQ2hlY2soKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN5bnRoZXNpemVHTEVycm9yKGVycm9yKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJvcikpOwogfQogCiBib29s
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9y
TGlzdCgpCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9y
TGlzdCgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5
bnRoZXRpY0Vycm9yTGlzdDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Q6OlJl
cGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUoR0NHTGVudW0g
dGV4dHVyZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
QWN0aXZlVGV4dHVyZSh0ZXh0dXJlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVUZXh0dXJl
KHRleHR1cmUpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRh
Y2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRl
cikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNo
U2hhZGVyKHByb2dyYW0sIHNoYWRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVy
KHByb2dyYW0sIHNoYWRlcikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1aW50IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJpbmRBdHRyaWJMb2NhdGlvbihhcmcwLCBpbmRleCwgbmFtZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmluZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJn
ZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcxKSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUoR0NHTGVudW0gdGFyZ2V0
LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBn
cmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJs
dWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJs
dWUsIGFscGhhKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxl
bmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9uKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJsZW5kRXF1YXRpb24obW9kZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBt
b2RlQWxwaGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMoR0NHTGVudW0gc2Zh
Y3RvciwgR0NHTGVudW0gZGZhY3RvcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jU2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBH
Q0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jU2Vw
YXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBo
YSkpOwogfQogCiBHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFy
Z2V0KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhcihHQ0dMYml0
ZmllbGQgbWFzaykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzaykpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQ29sb3IoR0NHTGNsYW1wZiBy
ZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJDb2xv
cihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJDb2xv
cihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0aChkZXB0aCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0aChkZXB0aCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDbGVhclN0ZW5jaWwocykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdy
ZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJv
b2w+KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1
ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JN
YXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3Rh
dGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDb21waWxlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBpbGVTaGFk
ZXIoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlU
ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
aW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwg
d2lkdGgsIGhlaWdodCkpOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUg
PSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVC
dWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlQnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRl
QnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0g
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVGcmFt
ZWJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1l
YnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZUZyYW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJu
IHJldHVyblZhbHVlOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0oKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlUHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVBy
b2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlUHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVByb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVS
ZW5kZXJidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVS
ZW5kZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlUmVuZGVyYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIoR0NHTGVudW0gYXJnMCkKIHsKICAgICB1aW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9z
KTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVGV4dHVyZSgpCiB7CiAgICAgdWludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVUZXh0dXJlKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3VsbEZhY2UoR0NHTGVudW0gbW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Vs
bEZhY2UobW9kZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
bGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZWxldGVCdWZmZXIoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVi
dWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZmZXIoYXJnMCkp
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVByb2dyYW0o
UGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZWxldGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRl
bGV0ZVByb2dyYW0oYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcihh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVSZW5kZXJidWZmZXIoYXJnMCkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcihQbGF0Zm9y
bUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTaGFk
ZXIoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVRleHR1cmUoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1bmMoZnVuYyksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RGVwdGhGdW5jKGZ1bmMpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZXB0aE1hc2soR0NHTGJvb2xlYW4gZmxhZykKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0YXRpY19jYXN0PGJvb2w+
KGZsYWcpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4o
ZmxhZykpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJh
bmdlKEdDR0xjbGFtcGYgek5lYXIsIEdDR0xjbGFtcGYgekZhcikKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhSYW5nZSh6TmVhciwgekZhciksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGVwdGhSYW5nZSh6TmVhciwgekZhcikpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGV0YWNoU2hhZGVyKGFyZzAsIGFyZzEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRldGFjaFNoYWRlcihhcmcwLCBhcmcxKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZShHQ0dMZW51bSBjYXApCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUoY2FwKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEaXNhYmxlKGNhcCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkoaW5kZXgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
cmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBjb3VudCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5
cyhtb2RlLCBmaXJzdCwgY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXMobW9k
ZSwgZmlyc3QsIGNvdW50KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50cyht
b2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUoR0NHTGVudW0gY2FwKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGUoY2Fw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGUoY2FwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5k
ZXgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShpbmRleCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmZpbmlzaCgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkZpbmlzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCgpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZsdXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Rmx1c2goKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50
LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0
YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBhcmczKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMywgR0NHTGludCBsZXZlbCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0
ZXh0YXJnZXQsIGFyZzMsIGxldmVsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRl
eHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2ZWwpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpmcm9udEZhY2UoR0NHTGVudW0g
bW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJv
bnRGYWNlKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyb250RmFjZShtb2RlKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXAoR0NHTGVu
dW0gdGFyZ2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZW5lcmF0ZU1pcG1hcCh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlw
bWFwKHRhcmdldCkpOwogfQogCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBB
Y3RpdmVJbmZvJiBhcmcyKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWIo
cHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFj
dGl2ZUF0dHJpYjo6UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYjo6UmVwbHkocmV0dXJuVmFsdWUs
IGFyZzIpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIGJvb2wgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQogewogICAgIGJvb2wg
cmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtOjpSZXBseShyZXR1cm5WYWx1
ZSwgYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0o
cHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFj
dGl2ZVVuaWZvcm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgMTBfcyk7CiAgICAgcmV0dXJu
IHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBu
YW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlv
bjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRB
dHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRBdHRyaWJMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
KQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwg
cG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFt
ZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIDEw
X3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogU3RyaW5nIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFN0cmluZyhHQ0dMZW51bSBuYW1lKQogewogICAgIFN0cmluZyBy
ZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFN0cmluZyhuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTdHJpbmc6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Rmxv
YXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHYo
cG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEZsb2F0djo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2OjpSZXBseSh2YWx1ZVJl
cGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweSh2YWx1ZS5k
YXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihmbG9hdCkpOwog
ICAgIApAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+CiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBH
Q0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+IHZhbHVlUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5
KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCAxMF9zKTsK
ICAgICBpZiAoc2VuZFJlc3VsdCkKICAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVw
bHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKICAgICAKQEAgLTM2
NywyOCArMzY3LDI4IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50
ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+CiBHQ0dMaW50NjQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQogewog
ICAgIGludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NDo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NDo6UmVwbHkocmV0dXJuVmFs
dWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1
ZSk7CiB9CiAKIEdDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRl
Z2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKIHsKICAgICBpbnQ2NF90IHJl
dHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVy
blZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4ocmV0dXJu
VmFsdWUpOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFBy
b2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAg
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWk6OlJlcGx5
KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1l
LCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5j
ZTxib29sPiB2YWx1ZVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlLmJ1
ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52OjpS
ZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52OjpSZXBseSh2YWx1ZVJlcGx5KSwgMTBf
cyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1
ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihib29sKSk7CiAgICAgCkBAIC0z
OTcsNDIgKzM5Nyw0MiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJv
b2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbAogR0NHTGVudW0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQogewogICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRF
cnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRFcnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEVycm9yOjpS
ZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAog
R0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NH
TGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOwogfQogCiBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0cmluZyByZXR1
cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5W
YWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51bSBwbmFt
ZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpKGFyZzAsIHBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpOjpSZXBs
eShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogU3Ry
aW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlckluZm9Mb2coUGxhdGZv
cm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9M
b2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5m
b0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRTaGFkZXJJbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFNoYWRlckluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJu
IHJldHVyblZhbHVlOwogfQogCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVy
VHlwZSwKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdlUmVwbHk7
CiAgICAgaW50MzJfdCBwcmVjaXNpb25SZXBseSA9IHsgfTsKLSAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ6OlJlcGx5KHJhbmdl
UmVwbHksIHByZWNpc2lvblJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNp
c2lvblR5cGUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lzaW9uUmVwbHkpLCAxMF9zKTsK
ICAgICBpZiAoc2VuZFJlc3VsdCkgewogICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VS
ZXBseS5kYXRhKCksIHJhbmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOwogICAgICAgICBp
ZiAocHJlY2lzaW9uKQpAQCAtNDUxLDI4ICs0NTEsMjggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlw
ZSwKIFN0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJTb3VyY2Uo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsK
LSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRl
clNvdXJjZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFk
ZXJTb3VyY2U6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xmbG9hdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7
CiAgICAgZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmY6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1l
dGVyZih0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRUZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAg
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyaTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJp
KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRl
eFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZv
cm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFs
dWVSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUu
YnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2
OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXpl
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnY6OlJlcGx5
KHZhbHVlUmVwbHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkKICAgICAgICAgbWVtY3B5
KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGZs
b2F0KSk7CiAgICAgCkBAIC00ODEsNyArNDgxLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW4K
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGludD4gdmFs
dWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OwotICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVl
UmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdjo6UmVwbHkodmFsdWVSZXBseSks
IDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwg
dmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOwogICAg
IApAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGluCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUpCiB7CiAg
ICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gdmFsdWVSZXBseTsKLSAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXY6OlJlcGx5KHZhbHVlUmVwbHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlm
b3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgMTBf
cyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1
ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZih1aW50MzJfdCkpOwogICAgIApA
QCAtNDk5LDMyNSArNDk5LDMyNSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaQogR0NHTGludCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbjo6
UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAK
IEdDR0xzaXplaXB0ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIHVpbnQ2NF90
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJp
Yk9mZnNldChpbmRleCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFZlcnRleEF0dHJpYk9mZnNldDo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludChHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIG1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpIaW50KHRhcmdldCwgbW9k
ZSkpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1
ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsg
fTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVm
ZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVy
KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBs
eShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc0VuYWJsZWQoR0NHTGVudW0gY2FwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c0VuYWJsZWQoY2FwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0VuYWJs
ZWQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNF
bmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVk
OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dM
Ym9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAg
ICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUp
LCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVl
KTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQcm9n
cmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9
OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNQcm9n
cmFtKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3JhbTo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dy
YW0oYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNQcm9ncmFtOjpS
ZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1
ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFs
dWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1No
YWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsg
fTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hh
ZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hhZGVyOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hhZGVy
KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hhZGVyOjpSZXBs
eShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc1RleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIGJvb2wgcmV0
dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1RleHR1cmUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzVGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1RleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6bGluZVdpZHRoKEdDR0xmbG9hdCBhcmcwKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5lV2lkdGgoYXJnMCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmtQcm9ncmFtKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmtQcm9ncmFtKGFyZzApKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaShHQ0dMZW51bSBwbmFtZSwg
R0NHTGludCBwYXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhl
bFN0b3JlaShwbmFtZSwgcGFyYW0pKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9seWdvbk9m
ZnNldChmYWN0b3IsIHVuaXRzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb2x5Z29uT2Zmc2V0KGZh
Y3RvciwgdW5pdHMpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpy
ZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5k
ZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVDb3ZlcmFnZShH
Q0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNf
Y2FzdDxib29sPihpbnZlcnQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVDb3ZlcmFnZSh2
YWx1ZSwgc3RhdGljX2Nhc3Q8Ym9vbD4oaW52ZXJ0KSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNjaXNzb3IoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpTY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBh
cmcwLCBjb25zdCBTdHJpbmcmIGFyZzEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlNoYWRlclNvdXJjZShhcmcwLCBhcmcxKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpTaGFkZXJTb3VyY2UoYXJnMCwgYXJnMSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBH
Q0dMdWludCBtYXNrKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0
ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzaykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVudW0g
ZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywg
cmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2Us
IGZ1bmMsIHJlZiwgbWFzaykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlN0ZW5jaWxNYXNrKG1hc2spKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2sp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxN
YXNrU2VwYXJhdGUoZmFjZSwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2tT
ZXBhcmF0ZShmYWNlLCBtYXNrKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6
cGFzcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3Rl
bmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9w
KGZhaWwsIHpmYWlsLCB6cGFzcykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZhaWwsIEdD
R0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWws
IHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWls
LCB6ZmFpbCwgenBhc3MpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9h
dCBwYXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xZihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtMWYobG9jYXRpb24sIHgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTFmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xpbnQgeCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtMWkobG9jYXRpb24sIHgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQ+IHYpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm0xaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmKEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmKGxvY2F0aW9uLCB4LCB5KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24sIHgsIHkpKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRh
dGEpLCB2LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5KQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmkobG9j
YXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaShsb2NhdGlvbiwgeCwg
eSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMy
X3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMml2
KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZs
b2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRpb24sIHgsIHksIHopKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYu
YnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRh
dGEpLCB2LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dM
aW50IHopCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm0zaShsb2NhdGlvbiwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNp
KGxvY2F0aW9uLCB4LCB5LCB6KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
PiB2KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0zaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dMZmxv
YXQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
NGYobG9jYXRpb24sIHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRpKGxv
Y2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGkobG9jYXRp
b24sIHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00
aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gdmFsdWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9z
ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2
YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDNmdihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1
ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZT
aXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1N
YXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxi
b29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0
cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVzZVBy
b2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmFsaWRhdGVQcm9ncmFtKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmFsaWRhdGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZhbGlk
YXRlUHJvZ3JhbShhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4KQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIxZihpbmRl
eCwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHgpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZnYoR0NH
THVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIxZnYo
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAx
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVm
U2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIyZihp
bmRleCwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmYoaW5kZXgsIHgs
IHkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMj4gdmFsdWVz
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWIyZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2
YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5
LCBHQ0dMZmxvYXQgeikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliM2Z2KGluZGV4LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0LCAzPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRh
dGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNm
dihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWI0ZihpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
NGYoaW5kZXgsIHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdCwgND4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVl
cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBH
Q0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xz
aXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0
eXBlLCBzdGF0aWNfY2FzdDxib29sPihub3JtYWxpemVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRl
cihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlk
ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTAodGFyZ2V0LCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYXJnMSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRh
MCh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVtIHVzYWdlKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMSh0YXJn
ZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJ1ZmZlckRhdGExKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUp
LCB1c2FnZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29u
c3QgR0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PiBkYXRhUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAoeCwgeSwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwKHgsIHksIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczA6OlJlcGx5KGRhdGFSZXBseSksIDEwX3Mp
OwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVw
bHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOwogICAgIApAQCAtODI1
LDk3ICs4MjUsOTcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBp
eGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHcKIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczEoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UmVhZG5QaXhlbHMxKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwg
cGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMCh0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQxKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBw
aXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQwKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UyRDEo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1h
Z2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1Yklt
YWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZv
cm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
LmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwg
Zm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZChH
Q0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBw
cmltY291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBw
cmltY291bnQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3
RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFu
Y2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJp
bWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwg
Y291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBwcmltY291bnQpKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZp
c29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBk
aXZpc29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBk
aXZpc29yKSk7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVh
dGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5KGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5KGFyZzApKTsKIH0KIAog
R0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheShQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJy
YXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJh
eTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Zl
cnRleEFycmF5KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVy
dGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFy
cmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheShhcmcwKSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEo
R0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVh
ZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJE
YXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9m
ZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVp
bnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weUJ1ZmZlclN1YkRhdGEocmVh
ZFRhcmdldCwgd3JpdGVUYXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWFkT2Zmc2V0KSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGFyZzQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVm
ZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3BhbjxH
Q0dMdm9pZD4gZGF0YSkKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGFS
ZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhOjpSZXBseShkYXRhUmVwbHkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhKHRhcmdl
dCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIGRhdGEuYnVmU2l6ZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YTo6UmVwbHkoZGF0YVJl
cGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweShkYXRhLmRh
dGEsIGRhdGFSZXBseS5kYXRhKCksIGRhdGEuYnVmU2l6ZSAqIHNpemVvZih1aW50OF90KSk7CiAg
ICAgCkBAIC05MjMsNDUxICs5MjMsNDUxIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIKIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBz
cmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGlu
dCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NH
TGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3Jj
WDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3Jj
WTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihH
Q0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4
dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0
LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2
ZWwsIGxheWVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52
YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVu
dW0+IGF0dGFjaG1lbnRzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMu
ZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlk
YXRlRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1l
bnRzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3Qg
R0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0
YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQz
Ml90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0
aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVh
ZEJ1ZmZlcihHQ0dMZW51bSBzcmMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlJlYWRCdWZmZXIoc3JjKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVm
ZmVyKHNyYykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1w
bGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZv
cm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9y
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlMkQodGFyZ2V0LCBs
ZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpUZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3RvcmFn
ZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9y
YWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0QwKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRh
dGEpLCBwaXhlbHMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
c2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDEodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZv
cm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xp
bnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHBpeGVscykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0
YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSkp
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQg
eW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9m
ZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlM0QoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zm
c2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QwKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFn
ZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q29tcHJlc3NlZFRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwg
ZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdl
M0QxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Ym9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VT
aXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwg
aW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXpl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29t
cHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0g
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0
YUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEZyYWdEYXRhTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9ncmFtLCBuYW1lKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpSZXBs
eShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0x1aW50IHYwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtMXVpKGxvY2F0aW9uLCB2MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTF1aShsb2NhdGlvbiwgdjApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWlu
dCB2MSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVp
KGxvY2F0aW9uLCB2MCwgdjEpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2
MSwgR0NHTHVpbnQgdjIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpKGxvY2F0aW9u
LCB2MCwgdjEsIHYyLCB2MyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlv
biwgdjAsIHYxLCB2MiwgdjMpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTF1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMXVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTN1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTR1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3Rh
dGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3gy
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4o
dHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRy
aXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDRm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3Rh
dGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDNm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDNmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHos
IEdDR0xpbnQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpWZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4o
dmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRl
eEF0dHJpYkk0aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJ
NHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWludCB6LCBH
Q0dMdWludCB3KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQz
Ml90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMu
YnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSVBvaW50ZXIoaW5k
ZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXplLCB0eXBl
LCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9k
ZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291
bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZl
cnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBi
dWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdmFsdWVz
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1
ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZm
ZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBp
bnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIs
IEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJ1
aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIs
IEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVy
ZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFs
dWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3
YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmaShidWZmZXIsIGRy
YXdidWZmZXIsIGRlcHRoLCBzdGVuY2lsKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZl
cmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpKTsKIH0KIAogUGxhdGZvcm1H
TE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSgpCiB7CiAg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeSgpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEZWxldGVRdWVyeShxdWVyeSkpOwogfQogCiBHQ0dMYm9vbGVhbiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVl
cnkpCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNRdWVyeShxdWVyeSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KEdDR0xlbnVtIHRhcmdl
dCwgUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeShHQ0dMZW51bSB0YXJnZXQpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFF1ZXJ5KHRhcmdldCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RW5kUXVlcnkodGFyZ2V0KSk7CiB9CiAKIFBsYXRmb3JtR0xPYmpl
Y3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRh
cmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1
ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKIH0KIAogR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlP
YmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICB1
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWko
cXVlcnksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVy
eU9iamVjdHVpOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVTYW1wbGVyKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBs
ZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNh
bXBsZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVy
OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBsYXRm
b3JtR0xPYmplY3Qgc2FtcGxlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
ZWxldGVTYW1wbGVyKHNhbXBsZXIpKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6aXNTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKIHsKICAg
ICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyKHNhbXBsZXIpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1wbGVyKEdDR0x1aW50IHVu
aXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2FtcGxlciksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcikpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBs
ZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmko
c2FtcGxlciwgcG5hbWUsIHBhcmFtKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFy
YW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1l
LCBwYXJhbSkpOwogfQogCiBHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBw
bmFtZSkKIHsKICAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBs
ZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVy
UGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZh
bHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xP
YmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1
ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaShzYW1w
bGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxl
clBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQogCiBHQ0dMc3luYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5j
ZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxhZ3MpCiB7CiAgICAgdWlu
dDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZlbmNlU3luYyhjb25kaXRpb24sIGZsYWdzKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmM6OlJlcGx5KHJldHVy
blZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0
YXRpY19jYXN0PGludHB0cl90PihyZXR1cm5WYWx1ZSkpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMoR0NHTHN5bmMgYXJnMCkKIHsKICAgICBi
b29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9j
YXN0PGludHB0cl90PihhcmcwKSkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jOjpSZXBs
eShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRl
cnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVT
eW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihhcmcw
KSkpKTsKIH0KIAogR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xpZW50
V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMdWludDY0IHRp
bWVvdXQpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGll
bnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFN5bmMo
R0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50NjQgdGltZW91dCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6V2FpdFN5bmMoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxh
Z3MsIHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVvdXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpX
YWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
YXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGltZW91dCkpKTsKIH0KIAogR0NH
TGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3luYyBhcmcw
LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2koc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIHBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTeW5jaTo6UmVwbHkocmV0
dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3Jt
R0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVl
ZGJhY2soKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJh
Y2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1G
ZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3Mp
OwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayhpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVHJhbnNmb3JtRmVl
ZGJhY2soaWQpKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKQogewogICAgIGJvb2wg
cmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrKGlkKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5
KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBp
ZCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRy
YW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFu
c2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2Rl
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblRy
YW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJlZ2lu
VHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRUcmFuc2Zvcm1GZWVkYmFjaygpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlpbmdzLCBH
Q0dMZW51bSBidWZmZXJNb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLCBi
dWZmZXJNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmdz
KHByb2dyYW0sIHZhcnlpbmdzLCBidWZmZXJNb2RlKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCiB7Ci0gICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9n
cmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nOjpSZXBseShhcmcyKSwgMTBfcyk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBhdXNlVHJhbnNmb3JtRmVl
ZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc3VtZVRyYW5zZm9ybUZl
ZWRiYWNrKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXN1bWVUcmFu
c2Zvcm1GZWVkYmFjaygpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9y
bUdMT2JqZWN0IGJ1ZmZlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyUmFuZ2UoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIsIEdDR0xp
bnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1
ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90
Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5k
ZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0PHVp
bnQ2NF90Pihhcmc0KSkpOwogfQogCiBWZWN0b3I8R0NHTHVpbnQ+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykKIHsKICAgICBWZWN0b3I8dWludDMy
X3Q+IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVzKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlczo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3Jt
SW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwog
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBu
YW1lKQogewogICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1z
KHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9y
bUluZGljZXMsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRB
Y3RpdmVVbmlmb3Jtczo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiB9CiAKIEdDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5n
JiB1bmlmb3JtQmxvY2tOYW1lKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9Owot
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9y
bUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgocHJv
Z3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQogewogICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9
IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0
aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZTo6UmVw
bHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2NrQmluZGluZyhQbGF0
Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMdWlu
dCB1bmlmb3JtQmxvY2tCaW5kaW5nKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0lu
ZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtQmxv
Y2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5n
KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5p
Zm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgs
IEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCiB7CiAgICAgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVu
aWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1
ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZv
cm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNS
ZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkocGFyYW1z
LmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJf
dCkpOwogICAgIApAQCAtMTM3Niw5MCArMTM3Niw5MCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdD
RwogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZh
bHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAs
IEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0
WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRm
aWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3Jj
WDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gx
LCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlcikpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpKTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUg
PSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVWZXJ0ZXhBcnJheU9FUygpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZVZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVl
KSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4
QXJyYXlPRVMoYXJnMCkpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBi
b29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVMoYXJnMCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0
dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJl
dHVyblZhbHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5k
VmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJnMCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5T0VTKGFyZzApKTsKIH0KIAogU3RyaW5n
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgU3RyaW5nIHJldHVyblZhbHVlID0g
eyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwog
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50TWFya2Vy
RVhUKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50TWFya2VyRVhUKGFyZzAp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJr
ZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpQdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UHVzaEdyb3VwTWFya2VyRVhUKGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpwb3BHcm91cE1hcmtlckVYVCgpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvcEdyb3VwTWFya2VyRVhUKCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+
IGJ1ZnMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRy
YXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXpl
KSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291
bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQs
IEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCkpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWlu
dCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29y
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRp
dmlzb3IpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRl
cm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCiB7CiAgICAgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVybmFsZm9y
bWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIHBhcmFtcy5idWZTaXplKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlcm5hbGZvcm1hdGl2OjpSZXBs
eShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUs
IHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJ
bnRlcm5hbGZvcm1hdGl2OjpSZXBseShwYXJhbXNSZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5k
UmVzdWx0KQogICAgICAgICBtZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwg
cGFyYW1zLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYwMDYyY2JmNzkxMGE1MWQyYzc1
YTI1YjU5MzhmZDlhMGZhMzA1YmUuLjRhM2Q3YTIyM2FiZDczYzM4MWQxYWY1ZGE5OGRkNjA4YmJk
Mjg0ZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAyMC0xMi0wOCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5A
YXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIEdQVSBwcm9jZXNzIElQQyBzaG91bGQgYmUgZmFz
dGVyIHRoYW4gY3VycmVudCBXZWJLaXQgSVBDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICB3aXAKKworICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbDoKKwogMjAyMC0xMi0wMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEltcGxlbWVudCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9n
ZW5lcmF0ZS1ncHVwLXdlYmdsCmluZGV4IGYxNmI0MjIyOWNmMmY4MjhjNjZjN2U3YjQxNzczYzJl
YmU0NDMxMTQuLjI3ZDEzMGFkYTIxMmY4ZDljMzYwNDFiMmQ3MDIyZDk1ODdjODQzMDAgMTAwNzU1
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorKysgYi9Ub29scy9TY3Jp
cHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTg5LDcgKzg5LDcgQEAgY29udGV4dF9tZXNzYWdl
c190ZW1wbGF0ZSA9ICgKICAgICB0ZW1wbGF0ZV9wcmVhbWJsZQogICAgICsgIiIiI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAgIHZvaWQgUmVzaGFwZShpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3lu
Y2hyb25vdXMKQEAgLTk5LDYgKzk5LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgTm90UmVmQ291bnRlZCB7ewogI2VuZGlmCiAgICAgdm9pZCBFbnN1cmVFeHRlbnNpb25F
bmFibGVkKFN0cmluZyBleHRlbnNpb24pCiAgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4dENoYW5n
ZWQoKQorICAgIHZvaWQgU3RyZWFtV2FrZVVwKCkgV2FudHNDb25uZWN0aW9uIC8vIFRPRE86IHRo
aXMgc2hvdWxkIGJlIG1vdmVkIHRvIG1lc3NhZ2VzLnB5CiB7fQogfX0KIApAQCAtNTg3LDcgKzU4
OCw3IEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKICAgICAgICAg
aXNfYXN5bmMgPSBzZWxmLnJldHVybl90eXBlLmlzX3ZvaWQoKSBhbmQgbGVuKG91dF9leHBycykg
PT0gMAogICAgICAgICBpZiBpc19hc3luYzoKICAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyAr
PSBbCi0gICAgICAgICAgICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7IiwKKyAgICAgICAgICAgICAgICBmInNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSkpOyIsCiAgICAgICAgICAg
ICBdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZW5kX3Jlc3VsdCA9ICIiCkBAIC01OTks
NyArNjAwLDcgQEAgY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJveHlfaW1wbChvYmplY3QpOgogICAg
ICAgICAgICAgICAgICAgICAoIn0iIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVs
c2UgIiIpCiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9
IFsKLSAgICAgICAgICAgICAgICBmIntzZW5kX3Jlc3VsdH1zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX06OlJlcGx5KHtvdXRf
ZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOyIsCisgICAgICAg
ICAgICAgICAgZiJ7c2VuZF9yZXN1bHR9c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9OjpSZXBseSh7b3V0X2V4cHJzfSksIDEw
X3MpOyIsCiAgICAgICAgICAgICBdCiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416239</attachid>
            <date>2020-12-15 06:18:07 -0800</date>
            <delta_ts>2020-12-15 07:07:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20201215161804.patch</filename>
            <type>text/plain</type>
            <size>186685</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY4NGM5ZjE3M2Y3M2ExOTYy
YjRjZjRmNjliNTg1ZmEzMDU0NmVhZTYuLjRjODQ3NGYxNzhmMjU5ODIyMGQ5NzFmMzc3Yzk2YTcw
OTlmYTNkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMxIEBACisyMDIwLTEyLTA4ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBjdXJyZW50IFdlYktpdCBJUEMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNl
cHQgb2YgZGVzdGluYXRpb24gbWVzc2FnZSBzdHJlYW0uIElQQyBtZXNzYWdlcyBjYW4KKyAgICAg
ICAgYmUgc2VudCBkaXJlY3RseSB0byB0aGUgcmVjZWl2aW5nIGRlc3RpbmF0aW9uIHdpdGggTWVz
c2FnZVN0cmVhbVNlbmRlcgorICAgICAgICBhbmQgcmVjZWl2ZWQgd2l0aCBNZXNzYWdlU3RyZWFt
UmVjZWl2ZXIuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYXMgZm9sbG93czoKKyAgICAgICAgU2Vu
ZGVyIHNoYXJlcyB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhIHdpdGggdGhlIGRlc3RpbmF0aW9uIHdo
ZW4gY3JlYXRpbmcKKyAgICAgICAgdGhlIGRlc3RpbmF0aW9uLgorCisgICAgICAgIElmIHRoZSBt
ZXNzYWdlIGZpdHMgdG8gdGhlIHN0cmVhbSBzaGFyZWQgbWVtb3J5IGFyZWEsIHdyaXRlIGl0IHRo
ZXJlLgorICAgICAgICBPdGhlcndpc2Ugc2VuZCBpdCB2aWEgbm9ybWFsIElQQyBhcyBvdXQgb2Yg
bGluZSBtZXNzYWdlLgorCisgICAgICAgIFJlY2VpdmVyIHdhaXRzIGZvciBub3JtYWwgSVBDIG1l
c3NhZ2VzLCBpdCBkb2VzIG5vdCBkbyBhbnl0aGluZyBvdXQgb2Ygb3JkaW5hcnkKKyAgICAgICAg
dW50aWwgYSB3YWtldXAgbWVzc2FnZSBpcyByZWNlaXZlZC4gVGhlbiByZWNlaXZlciB3aWxsIHBy
b2Nlc3MgdGhlIHN0cmVhbQorICAgICAgICB1bnRpbCBzdHJlYW0gaGFzIG5vIG1vcmUgbWVzc2Fn
ZXMgb3IgdW50aWwgb3V0IG91dCBvZiBsaW5lIG1lc3NhZ2UgbWFya2VyIGlzIHJlYWNoZWQuCisK
KyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9uIGFycml2ZSBhcyBiZWZvcmUsIGlu
IG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAgICBtZXNzYWdlLCBhbiBlbnRyeSBp
cyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2lsbCBzdG9wIHByb2Nlc3NpbmcgdGhl
CisgICAgICAgIHN0cmVhbSBhbmRtIHByb2Nlc3Npbmcgd2lsbCBjb250aW51ZSBvbmNlIHRoZSBv
dXQtb2YtbGluZQorICAgICAgICBtZXNzYWdlIGhhcyBiZWVuIHByb2Nlc3NlZC4KKworICAgICAg
ICBTZW5kZXIgY2FuIHdyaXRlIG1lc3NhZ2VzIHRvIHRoZSBzdHJlYW0gc2ltdWx0YW5lb3VzIHRv
IHRoZSByZWNlaXZlciByZWFkaW5nCisgICAgICAgIHRoZSBtZXNzYWdlcy4gVGhpcyBpcyBpbXBs
ZW1lbnRlZCBhcyBhIHJpbmcgYnVmZmVyIHdpdGggYXRvbWljIHNlbmRlciBhbmQgcmVjZWl2ZXIK
KyAgICAgICAgcG9pbnRlcnMuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBy
byk6CisgICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiA4MDAgcG9pbnRzIC0+IDQ1
MDAgcG9pbnRzCisgICAgICAgICAgICAgICh+ODgwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAg
ICAgIC0gV2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiAxMDAwMCBm
aXNoIH42MGZwcworICAgICAgICAgICAgICAofjEwMDAwIGZpc2ggd2l0aCBuby1HUFVQKQorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgdGVzdGVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wp
OgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6RGVjb2Rlcjo6aXNPdXRP
ZkxpbmVTdHJlYW1NZXNzYWdlIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZXN0aW5hdGlvblN0cmVhbS5oOiBBZGRlZC4K
KyAgICAgICAgKElQQzo6RGVzdGluYXRpb25TdHJlYW1CYXNlOjpEZXN0aW5hdGlvblN0cmVhbUJh
c2UpOgorICAgICAgICAoSVBDOjpEZXN0aW5hdGlvblN0cmVhbUJhc2U6OmhlYWRlclNpemUpOgor
ICAgICAgICAoSVBDOjpEZXN0aW5hdGlvblN0cmVhbUJhc2U6OmhlYWRlciBjb25zdCk6CisgICAg
ICAgIChJUEM6OkRlc3RpbmF0aW9uU3RyZWFtQmFzZTo6ZGF0YSBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpFbmNvZGVyOjpFbmNvZGVy
KToKKyAgICAgICAgKElQQzo6RW5jb2Rlcjo6cmVzZXJ2ZSk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL0VuY29kZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZUZsYWdzLmg6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1SZWNlaXZlci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaC4KKyAgICAgICAgKElQ
Qzo6TWVzc2FnZVN0cmVhbVJlY2VpdmVyOjpNZXNzYWdlU3RyZWFtUmVjZWl2ZXIpOgorICAgICAg
ICAoSVBDOjpNZXNzYWdlU3RyZWFtUmVjZWl2ZXI6OnN0cmVhbVdha2VVcCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1TZW5kZXIuaDogQWRkZWQuCisgICAgICAgIChJUEM6
Ok1lc3NhZ2VTdHJlYW1TZW5kZXI6Ok1lc3NhZ2VTdHJlYW1TZW5kZXIpOgorICAgICAgICAoSVBD
OjpNZXNzYWdlU3RyZWFtU2VuZGVyOjpzZW5kKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVN0cmVh
bVNlbmRlcjo6c2VuZFN5bmMpOgorICAgICAgICAoSVBDOjpNZXNzYWdlU3RyZWFtU2VuZGVyOjpk
ZXN0aW5hdGlvblN0cmVhbUhhbmRsZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlz
cGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmluZFRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyRGVwdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpjb2xvck1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2spOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJs
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmZyb250RmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
QnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJp
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJp
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dy
YW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Jl
bmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmlzU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bGluZVdpZHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29y
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVy
U291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c3RlbmNpbEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm00ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtNGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYjFmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dmVydGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRm
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliNGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRl
eEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWJEaXZpc29yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1
ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpibGl0RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlYWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNE
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvcHlUZXhTdWJJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9j
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMXVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTJ1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0zdWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0
cml4M3gyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtTWF0cml4Mng0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWJJNGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VF
bGVtZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJCdWZmZXJpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVy
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1
ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aXNTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2Ft
cGxlclBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmZlbmNlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2kpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNm
b3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm1JbmRpY2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
QmxvY2tCaW5kaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVy
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJy
YXlPRVMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZFZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRN
YXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwdXNoR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpwb3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KToKKwog
MjAyMC0xMi0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1NPVVBdIFdlYlNvY2tldHM6IHdyb25nIGRhdGEgc2VudCBpbiBzb21lIGNhc2Vz
IHdpdGggbGlic291cCA8IDIuNjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA1YzRjYTI1ZDRkYWE3ZDU4MTMx
MTcwYzk3MjAzZjQwNmViYjFkYmE2Li41ZDJmM2VlNjBjZjMxYWEwZjZkMDA4ODc3ODA4ZWU0ZGI1
ZWM5MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMDMsMTAgKzMwMywxMCBAQCB2b2lkIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaQogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQotdm9pZCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFtKQogewog
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUo
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgICAgICByZXR1cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCAqdGhpcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBXVEZNb3ZlKHN0cmVhbSkpOwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA0ZjJkNDRmZmI1NTBhYTZk
ZTgxMGI5YmY5NTI2MjA3ZDU3OWRiNDc5Li40OGIxMWYzYWNhZGYwNzdiMjBhY2NhMTFiM2VkZjQw
MmIyZjg3NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwog
CiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFtKTsKICAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0Nv
bnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOGZjMGVmYWM5MzIxODIyMmJiMGJjN2MyMWFhYjkxOWU1
M2E5NzM0ZS4uMjRmMzZkZjQyZWUzNWU5NzUzYWQ2ZTU3NmQxN2VkOGZjNGJkNDc3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDcgQEAgbWVzc2FnZXMgLT4gR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAgdm9pZCBD
cmVhdGVSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFj
a2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKQogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29u
dGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmli
dXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKQorICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6Okdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdl
YktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgc3RyZWFtKQogICAgIHZvaWQgUmVsZWFzZUdy
YXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNlbmRpZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5n
SW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCBkODA0ZDFmYTk5OTRkNWZmZjMx
NDM2NGQ1OWJlZjk1ZWI0OWVhOTk5Li43YTU4YjRmZGI1MzFkNmFhMjE1MjEyMDA3YWIyODg4MDM2
YmQ0NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTM5LDE1ICszOSwxNiBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAjaWYgIVBMQVRG
T1JNKENPQ09BKQotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcikKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZlB0cjxTaGFyZWRNZW1vcnk6
OkhhbmRsZT4mJikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KICNlbmRpZgogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCi0gICAgOiBtX2Nv
bnRleHQoV1RGTW92ZShjb250ZXh0KSkKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFtLCBSZWY8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCisgICAgOiBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIo
V1RGTW92ZShzdHJlYW0pKQorICAgICwgbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCiAgICAg
LCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIoZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcykpCiAgICAgLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcihncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDdkYjBj
ZjUxOGFiZjliYjI1YWIzMzZkZGRlMDM5OTkyNWFhMDVmMzIuLjBiMWFkNTk3YjA4NTA2NjZkMDcx
MjE4ZmJmMmU1NjJjNjQ1MDJjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0yOSw4ICsy
OSw4IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTdHJlYW1SZWNlaXZlci5oIgog
CiAjaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CkBAIC01NywxNiArNTcsMTUgQEAgY2xhc3MgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCiAgICAg
OiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCisgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlU3RyZWFtUmVjZWl2ZXI8UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w+CiAgICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pOwogICAgIH5SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCgpIG92ZXJyaWRlOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyog
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0OwogCi1wcm90ZWN0ZWQ6Ci0gICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPik7Ci0KK3B1Ymxp
YzoKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgogICAgIElQQzo6Q29ubmVj
dGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKICAgICB1aW50NjRf
dCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwpAQCAtNzUsNiArNzQs
MTIgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mKSBmaW5hbDsKIAorICAgIC8vIElQQzo6TWVzc2FnZVN0cmVhbVJlY2VpdmVyIHRl
bXBsYXRlIGNvbnRyYWN0LgorICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKK3Byb3RlY3RlZDoKKyAgICBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0cmVhbSwgUmVmPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPik7CisKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IG92
ZXJyaWRlcy4KICAgICB2b2lkIGRpZENvbXBvc2l0ZSgpIGZpbmFsOwogICAgIHZvaWQgZm9yY2VD
b250ZXh0TG9zdCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluCmluZGV4IGFhMDM0NzI1ZjlhYTQyZjQyYmQzYzhhMDBiMGFhMTgwOTBhNTliOWEuLmE2N2Vi
ZWY0ZmExMDI2ZDE2YzI5ZjYzNTY5NDNmMDc2OTk2NzlkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIC8vIFRoaXMgZmlsZSBp
cyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgeworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQgUmVzaGFwZShpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3lu
Y2hyb25vdXMKQEAgLTM0LDYgKzM0LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgTm90UmVmQ291bnRlZCB7CiAjZW5kaWYKICAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQoU3RyaW5nIGV4dGVuc2lvbikKICAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdl
ZCgpCisgICAgdm9pZCBTdHJlYW1XYWtlVXAoKSBXYW50c0Nvbm5lY3Rpb24gLy8gVE9ETzogdGhp
cyBzaG91bGQgYmUgbW92ZWQgdG8gbWVzc2FnZXMucHkKIAogICAgIHZvaWQgU2V0RmFpbE5leHRH
UFVTdGF0dXNDaGVjaygpCiAgICAgdm9pZCBTeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCBlN2M0MGM5ODVjYjdk
MjcyMjg2OWE1ZGZmOTY5MTk0NzA3N2FmNDZjLi4zOTQ5Y2NkYzgxNzU2YzNkMTM3MDQ3YTBmMTQ3
NWZhZjFlZmEwM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wsIHByaXZhdGUgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gewogcHVibGljOgotICAg
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSYmIHN0cmVhbSk7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoKSBm
aW5hbCA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBvdmVycmlk
ZXMuCkBAIC01NSwxMyArNTUsMTMgQEAgcHJpdmF0ZToKIAogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMQ29jb2EoYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EoYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBXVEZNb3ZlKHN0cmVhbSkpKTsKIH0KIAotUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlm
aWVyKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgY29ubmVjdGlv
biwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nl
c3MoYXR0cmlidXRlcywgdGhpcykpCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVj
dGlvbiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlJiYgc3RyZWFtKQorICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0
cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgV1RGTW92ZShzdHJlYW0pLCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhhdHRyaWJ1dGVzLCB0aGlzKSkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCAyY2I3OWI3
MzFjOGQzNTFhMmQwNTk0NjM2MmM1YWI4YmJhZGJkYzVlLi5iMmVhZDM0N2Q1YWQyMzU1ZTZlYjk4
OGYyZTA0NDE2ZWVjMDRhYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNw
cApAQCAtNzQsNiArNzQsMjYgQEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2EKICAgICAgICAgcmV0
dXJuOwogfQogCitEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90
IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCisgICAgOiBtX2J1ZmZlciB7IHN0
cmVhbSB9CisgICAgLCBtX2J1ZmZlclBvcyB7IG1fYnVmZmVyIH0KKyAgICAsIG1fYnVmZmVyRW5k
IHsgbV9idWZmZXIgKyBzdHJlYW1TaXplIH0KKyAgICAsIG1fYnVmZmVyRGVhbGxvY2F0b3IoW10g
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfSkKKyAgICAsIG1fZGVzdGluYXRpb25JRChkZXN0
aW5hdGlvbklEKQoreworICAgIEFTU0VSVChzdHJlYW1TaXplID49IG91dE9mTGluZVN0cmVhbU1l
c3NhZ2VTaXplKTsKKyAgICBpZiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fYnVmZmVy
KSAlIHN0cmVhbU1lc3NhZ2VBbGlnbm1lbnQpIHsKKyAgICAgICAgbWFya0ludmFsaWQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VGbGFncykpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmICghZGVjb2RlKG1fZGVzdGluYXRpb25JRCkpCisgICAgICAgIHJldHVy
bjsKK30KKwogRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBi
dWZmZXJTaXplLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGVyVGFnKQogICAgIDogbV9idWZmZXIgeyBi
dWZmZXIgfQogICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CkBAIC04NCw2ICsxMDQsNyBA
QCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNp
emUsIENvbnN0cnVjdFdpdGhvdXRIZWFkZQogICAgICAgICBtYXJrSW52YWxpZCgpOwogfQogCisK
IERlY29kZXI6On5EZWNvZGVyKCkKIHsKICAgICBBU1NFUlQobV9idWZmZXIpOwpAQCAtMTE1LDYg
KzEzNiwxMiBAQCBib29sIERlY29kZXI6OnNob3VsZFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9y
VGVzdGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fbWVzc2FnZUZsYWdzLmNvbnRhaW5zKE1lc3Nh
Z2VGbGFnczo6VXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKTsKIH0KIAorYm9vbCBE
ZWNvZGVyOjppc091dE9mTGluZVN0cmVhbU1lc3NhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBt
X21lc3NhZ2VGbGFncy5jb250YWlucyhNZXNzYWdlRmxhZ3M6OlN0cmVhbU1lc3NhZ2VPdXRPZkxp
bmUpOworfQorCisKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIERlY29kZXI6OnNldEltcG9ydGFu
Y2VBc3NlcnRpb24oc3RkOjp1bmlxdWVfcHRyPEltcG9ydGFuY2VBc3NlcnRpb24+IGFzc2VydGlv
bikKIHsKQEAgLTE2NSw3ICsxOTIsNyBAQCBib29sIERlY29kZXI6OmFsaWduQnVmZmVyUG9zaXRp
b24oc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCiAgICAgICAgIG1hcmtJbnZhbGlkKCk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBtX2J1ZmZlclBvcyA9
IGFsaWduZWRQb3NpdGlvbjsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuaAppbmRleCAzNDRjZTY4ODJmYzkwOTg0YjJmYTU3YmY5YzQ4Yjk2NTBlMGZm
NzRlLi5jMGVjYzU5NjIwYzQ5NmU1ZGIyOTA3ZDg5YzM4MjkzMmI0M2VlZGI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC00OSwxMSArNDksMTUgQEAgY2xhc3MgRGVjb2Rl
ciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGUo
Y29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRl
YWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYp
OwogICAgIGV4cGxpY2l0IERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90
KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOworICAgIGV4cGxpY2l0IERlY29kZXIoY29uc3QgdWlu
dDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7
CiAgICAgfkRlY29kZXIoKTsKIAogICAgIERlY29kZXIoY29uc3QgRGVjb2RlciYpID0gZGVsZXRl
OwogICAgIERlY29kZXIoRGVjb2RlciYmKSA9IGRlbGV0ZTsKIAorICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IHN0cmVhbU1lc3NhZ2VBbGlnbm1lbnQgPSBhbGlnbm9mKHVpbnQ2NF90KTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBvdXRPZkxpbmVTdHJlYW1NZXNzYWdlU2l6ZSA9IHNp
emVvZih1aW50NjRfdCkgKiAyOworCiAgICAgUmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5h
bWUoKSBjb25zdCB7IHJldHVybiByZWNlaXZlck5hbWUobV9tZXNzYWdlTmFtZSk7IH0KICAgICBN
ZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZU5hbWU7IH0K
ICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bklEOyB9CkBAIC02MSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3luY01lc3NhZ2Uo
KSBjb25zdDsKICAgICBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5IHNob3Vs
ZERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5KCkgY29uc3Q7CiAgICAgYm9v
bCBzaG91bGRVc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcoKSBjb25zdDsKKyAgICBi
b29sIGlzT3V0T2ZMaW5lU3RyZWFtTWVzc2FnZSgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIHZvaWQgc2V0SW1wb3J0YW5jZUFzc2VydGlvbihzdGQ6OnVuaXF1ZV9wdHI8SW1wb3J0
YW5jZUFzc2VydGlvbj4pOwpAQCAtMTUzLDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgdCA9
IEFyZ3VtZW50Q29kZXI8VD46OmRlY29kZSgqdGhpcyk7CiAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICB9Ci0gICAgCisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90
PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlICYmICFzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVl
ICYmICFVc2VzTW9kZXJuRGVjb2RlcjxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRGVjb2Rl
ciYgb3BlcmF0b3I+PihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVzdGluYXRpb25TdHJlYW0uaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Rlc3RpbmF0aW9uU3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FkYjhj
NjA1MDUwODkyNmVjNzc3MTM3ZDFlOWYyOTk5YWE1YjRkYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rlc3RpbmF0aW9uU3RyZWFtLmgKQEAgLTAsMCArMSwz
MTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRlY29kZXIuaCIK
KyNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVk
ZSA8d3RmL0F0b21pY3MuaD4KKworbmFtZXNwYWNlIElQQyB7CisKKworLy8gVGhlIElQQyBkZXN0
aW5hdGlvbiBzdHJlYW0gaXMgYSB0d28td2F5IHN0cmVhbSBvZiBtZXNzYWdlcyB0byBhIGJldHdl
ZW4gYSBzZW5kZXIgYW5kIHRoZQorLy8gZGVzdGluYXRpb24gcmVjZWl2ZXIuCisvLworLy8gSXQg
aXMgaW1wbGVtZW50ZWQgYXMgRGVzdGluYXRpb25TdHJlYW1TZW5kZXIgYW5kIERlc3RpbmF0aW9u
U3RyZWFtUmVjZWl2ZXIuIEVpdGhlciBvZiB0aGVzZQorLy8gY2FuIGJlICJ3cml0aW5nIiBvciAi
cmVhZGluZyIuIFNlbmRlciBpcyB0aGUgaW5zdGFuY2Ugc2VuZGluZyB0aGUgc3RyZWFtIG92ZXIg
dG8gdGhlIHJlY2VpdmVyLgorLy8gRklYTUU6IEluIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25s
eSBhc3luY2hyb25vdXMgbWVzc2FnZXMgZ28gdGhyb3VnaCB0aGUgc3RyZWFtLiBUaGlzIG1lYW5z
CisvLyB0aGUgc2VuZGVyIGlzIG9ubHkgd3JpdGluZyBhbmQgcmVjZWl2ZXIgaXMgb25seSByZWFk
aW5nLgorLy8KKy8vIFRoZSBkZXN0aW5hdGlvbiByZWNlaXZlciB3aWxsIHJlY2VpdmUgbWVzc2Fn
ZXMgaW4gb3JkZXIgX2ZvciB0aGUgZGVzdGluYXRpb24gbWVzc2FnZXNfLgorLy8gVGhlIHdob2xl
IGNvbm5lY3Rpb24gbWVzc2FnZSBvcmRlciBpcyBub3QgcHJlc2VydmVkLgorCisKKy8vIFN0cmVh
bUJ1ZmZlciBpcyBhIHNoYXJlZCBtZW1vcnkgImJpLXBhcnRpdGUiIGNpcmN1bGFyIGJ1ZmZlciBz
dXBwb3J0aW5nCisvLyB2YXJpYWJsZSBsZW5ndGggbWVzc2FnZXMsIHNwZWNpZmljIGRhdGEgYWxp
Z25tZW50IHdpdGggbWFuZGF0ZWQgbWluaW11bSBzaXplLgorLy8gRGVzdGluYXRpb25TdHJlYW1T
ZW5kZXIgYW5kIERlc3RpbmF0aW9uU3RyZW1hUmVjZWl2ZXIgdXNlIFN0cmVhbUJ1ZmZlciB0byBj
b21tdW5pY2F0ZS4KKy8vCisvLyBUaGUgImJpLXBhcnRpdGUiIGlzIGhlcmUgdG8gbWVhbiB0aGF0
IHdyaXRlcyBhbmQgcmVhZHMgdG8gdGhlIGJ1ZmZlciBtdXN0IGJlCisvLyBjb250aW51b3VzLgor
Ly8KKy8vIFRoZSBjbGllbnQgKHNlbmRlciBvciByZWNlaXZlcikgImFjcXVpcmVzIiBzb21lIGFt
b3VudCBvZiBidWZmZXIgZGF0YS4gSWYgYnVmZmVyIGhhcyBubworLy8gY2FwYWNpdHksIGFjcXVp
cmUgcmV0dXJucyB3aXRoIHplcm8gY2FwYWNpdHkuIElmIGJ1ZmZlciBoYXMgYXQgbGVhc3QgYWNx
dWlyZWQKKy8vIGNhcGFjaXR5LCBhbGwgdGhlIGF2YWlsYWJsZSBjYXBhY2l0eSBpcyByZXR1cm5l
ZC4KKy8vCisvLyBUaGUgY2xpZW50ICJyZWxlYXNlcyIgdGhlIHNvbWUgYW1vdW50IG9mIGRhdGEs
IGF0IGxlYXN0IHRoZSBhbW91bnQgYWNxdWlyZWQgYnV0IHBvdGVudGlhbGx5CisvLyBtb3JlLgor
Ly8KKy8vIEJvdGggc2VuZGVyIGFuZCByZWNlaXZlciBtdXN0IGFjcXVpcmUgc2FtZSBhbW91bnQg
b2YgZGF0YSBhdCB0aGUgc2FtZSBzdGVwIG9mIHRoZSBhY3F1aXJlIHNlcXVlbmNlLgorLy8gSWYg
c2VuZGVyIGFjcXVpcmVzIFggYW5kIHRoZW4gWSBhbW91bnQsIHJlY2VpdmVyIG11c3QgZG8gdGhl
IHNhbWUuCisvLworLy8gVGhlIGNpcmN1bGFyIGJ1ZmZlciBoYXMgZm9sbG93aW5nIGltcGxlbWVu
dGF0aW9uOgorLy8gKiBTZW5kZXIgb3ducyB0aGUgZGF0YSBiZXR3ZWVuIFtzZW5kZXJPZmZzZXQs
IHJlY2VpdmVyT2Zmc2V0Wy4gV2hlbiBzZW5kZXJPZmZzZXQgPT0KKy8vIHJlY2VpdmVyT2Zmc2V0
LCBzZW5kZXIgb3ducyBhbGwgdGhlIGRhdGEuCisvLyAqIFJlY2VpdmVyIG93bnMgdGhlIGRhdGEg
YmV0d2VlbiBbcmVjZWl2ZXJPZmZzZXQsIHNlbmRlck9mZnNldFsuCisvLyAqIFRoZSBidWZmZXIg
Y2FuIGhvbGQgbWF4aW11bSBvZiBzaXplIC0gMSB2YWx1ZXMuIFRoZSBsYXN0IHZhbHVlIGlzIHJl
c2VydmVkIGZvcgorLy8gaW5kaWNhdGluZyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbC4gRklYTUU6
IE1heWJlIHdvdWxkIGJlIHNpbXBsZXIgaW1wbGVtZW50YXRpb24gaWYKKy8vIGl0IHdvdWxkIHVz
ZSB0aGUgIndyYXAiIGZsYWcgaW5zdGVhZCBvZiB0aGUgaG9sZSBhcyB0aGUgaW5kaWNhdG9yLiBU
aGlzIHdvdWxkIG1vdmUKKy8vIHRoZSBhbGlnbmVkU3BhbiBpbXBsZW1lbnRhdGlvbiB0byB0aGUg
U3RyZWFtQnVmZmVyLgorLy8gKiBBbGwgYXRvbWljIHZhcmlhYmxlIGxvYWRzIGFyZSB1bnRydXN0
ZWQsIHNvIHRoZXkncmUgY2xhbXBlZC4gVmlvbGF0aW9ucyBhcmUgbm90IHJlcG9ydGVkLAorLy8g
dGhvdWdoLgorLy8gU2VlIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLgordGVtcGxhdGU8c2l6ZV90
IG1lc3NhZ2VBbGlnbm1lbnQ+CitjbGFzcyBTdHJlYW1CdWZmZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0cmVhbUJ1ZmZlcik7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgU3RyZWFtQnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9y
eT4mJiBtZW1vcnksIHNpemVfdCBtZW1vcnlTaXplKQorICAgICAgICA6IG1fZGF0YVNpemUobWVt
b3J5U2l6ZSAtIGhlYWRlclNpemUoKSkKKyAgICAgICAgLCBtX3NoYXJlZE1lbW9yeShXVEZNb3Zl
KG1lbW9yeSkpCisgICAgeworICAgIH0KKworICAgIH5TdHJlYW1CdWZmZXIoKSA9IGRlZmF1bHQ7
CisgICAgc3RydWN0IEhlYWRlciB7CisgICAgICAgIEF0b21pYzxzaXplX3Q+IHJlY2VpdmVyT2Zm
c2V0OworICAgICAgICB1aW50NjRfdCBjYWNoZUxpbmVQYWRkaW5nWzJdOworICAgICAgICBBdG9t
aWM8c2l6ZV90PiBzZW5kZXJPZmZzZXQ7CisgICAgfTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IGhlYWRlclNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvdW5kVXBUb011bHRp
cGxlT2Y8c2l6ZW9mKHN0ZDo6bWF4X2FsaWduX3QpPihzaXplb2YoSGVhZGVyKSk7CisgICAgfQor
CisgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChvZmZzZXQgPD0gZGF0YVNpemUoKSk7CisgICAgICAgIGlmIChvZmZzZXQgPT0g
ZGF0YVNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gb2Zmc2V0
OworICAgIH0KKworICAgIHNpemVfdCBhbGlnbk9mZnNldChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
YWNxdWlyZVNpemUpIGNvbnN0CisgICAgeworICAgICAgICBvZmZzZXQgPSByb3VuZFVwVG9NdWx0
aXBsZU9mPG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCk7CisgICAgICAgIGlmIChvZmZzZXQgKyBh
Y3F1aXJlU2l6ZSA+PSBkYXRhU2l6ZSgpKQorICAgICAgICAgICAgb2Zmc2V0ID0gMDsKKyAgICAg
ICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICBIZWFkZXImIGhlYWRlcigpIGNvbnN0IHsg
cmV0dXJuICpyZWludGVycHJldF9jYXN0PEhlYWRlcio+KG1fc2hhcmVkTWVtb3J5LT5kYXRhKCkp
OyB9CisKKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KG1fc2hhcmVkTWVtb3J5LT5kYXRhKCkpICsgaGVhZGVyU2l6ZSgpOyB9CisKKyAgICBz
aXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTaXplOyB9CisKKyAgICAvLyBU
YWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6c2VuZGVyT2Zmc2V0IHdoZW4gcmVjZWl2ZXIgaXMg
c2xlZXBpbmcuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1NlbmRlck9mZnNldFJlY2Vp
dmVySXNTbGVlcGluZ1RhZyA9IDEgPDwgMzE7CisKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIGhhbmRsZUZvclJlY2VpdmVyKCkKKyAgICB7CisgICAgICAgIFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgICAgICBpZiAoIW1fc2hhcmVkTWVtb3J5LT5j
cmVhdGVIYW5kbGUoaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZFdyaXRlKSkKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybiB7IFdURk1vdmUo
aGFuZGxlKSwgbV9zaGFyZWRNZW1vcnktPnNpemUoKSB9OworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBjb25zdCBzaXplX3QgbV9kYXRhU2l6ZTsKKyAgICBSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+
IG1fc2hhcmVkTWVtb3J5OworfTsKKworY2xhc3MgRGVzdGluYXRpb25TdHJlYW1TZW5kZXIgIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
ZXN0aW5hdGlvblN0cmVhbVNlbmRlcik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgbWluTWVzc2FnZVNpemUgPSBFbmNvZGVyOjpvdXRPZkxpbmVTdHJlYW1NZXNzYWdlU2l6
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50ID0gRW5jb2Rl
cjo6c3RyZWFtTWVzc2FnZUFsaWdubWVudDsKKworICAgIGV4cGxpY2l0IERlc3RpbmF0aW9uU3Ry
ZWFtU2VuZGVyKHNpemVfdCBzaXplKQorICAgICAgICA6IG1fYnVmZmVyKGNyZWF0ZU1lbW9yeShz
aXplKSwgc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIFJlYWQgc3RhcnRzIGZyb20gMCB3aXRoIGxp
bWl0IG9mIDAgYW5kIHJlYWRlciBzbGVlcGluZy4KKyAgICAgICAgaGVhZGVyKCkuc2VuZGVyT2Zm
c2V0LnN0b3JlKFN0cmVhbUJ1ZmZlclR5cGU6OmtTZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBp
bmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICAgICAgICAvLyBXcml0ZSBzdGFy
dHMgZnJvbSAwIHdpdGggYSBsaW1pdCBvZiB0aGUgd2hvbGUgYnVmZmVyLgorICAgICAgICBoZWFk
ZXIoKS5yZWNlaXZlck9mZnNldC5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsK
KyAgICB9CisgICAgc3RydWN0IFNwYW4geworICAgICAgICB1aW50OF90KiBwdHI7CisgICAgICAg
IHNpemVfdCBjYXBhY2l0eTsKKyAgICB9OworCisgICAgU3BhbiB0cnlBY3F1aXJlKCkKKyAgICB7
CisgICAgICAgIHNpemVfdCBzZW5kZXJMaW1pdCA9IHN0ZDo6bWluKGhlYWRlcigpLnJlY2VpdmVy
T2Zmc2V0LmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSksIGRhdGFTaXplKCkpOworICAg
ICAgICByZXR1cm4gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKKyAg
ICB9CisKKyAgICBlbnVtIGNsYXNzIFdha2VVcFJlYWRlciA6IGJvb2wgeworICAgICAgICBObywK
KyAgICAgICAgWWVzCisgICAgfTsKKworICAgIFdha2VVcFJlYWRlciByZWxlYXNlKHNpemVfdCBz
aXplKQorICAgIHsKKyAgICAgICAgc2l6ZV90IGV4cGVjdGVkUmVjZWl2ZXJMaW1pdCA9IG1fc2Vu
ZGVyT2Zmc2V0OworICAgICAgICBtX3NlbmRlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZz
ZXQobV9zZW5kZXJPZmZzZXQpICsgc2l6ZSk7CisgICAgICAgIEFTU0VSVChtX3NlbmRlck9mZnNl
dCA8IGRhdGFTaXplKCkpOworICAgICAgICAvLyBJZiByZWNlaXZlciBvdmVyd3JvdGUgdGhlIHNl
bmRlck9mZnNldCB3aXRoIGtTZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHdlIGtu
b3cgaXQgaXMgc2xlZXBpbmcuCisgICAgICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gaGVhZGVy
KCkuc2VuZGVyT2Zmc2V0LmV4Y2hhbmdlKG1fc2VuZGVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRl
cl9hY3FfcmVsKTsKKyAgICAgICAgaWYgKHJlY2VpdmVyTGltaXQgIT0gZXhwZWN0ZWRSZWNlaXZl
ckxpbWl0KQorICAgICAgICAgICAgcmV0dXJuIFdha2VVcFJlYWRlcjo6WWVzOworICAgICAgICBy
ZXR1cm4gV2FrZVVwUmVhZGVyOjpObzsKKyAgICB9CisKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlIGRlc3RpbmF0aW9uU3RyZWFtSGFuZGxlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2J1ZmZlci5oYW5kbGVGb3JSZWNlaXZlcigpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBzdGF0aWMgUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBjcmVhdGVNZW1vcnkoc2l6ZV90IHNp
emUpCisgICAgeworICAgICAgICBhdXRvIG1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5Ojph
bGxvY2F0ZShzaXplKTsKKyAgICAgICAgaWYgKCFtZW1vcnkpCisgICAgICAgICAgICBDUkFTSCgp
OworICAgICAgICByZXR1cm4gbWVtb3J5LnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCisgICAg
c2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
d3JhcE9mZnNldChvZmZzZXQpOyB9CisKKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9m
ZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQob2Zmc2V0LCBtaW5NZXNz
YWdlU2l6ZSk7IH0KKworICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxpbWl0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8IGRhdGFTaXplKCkpOworICAg
ICAgICBBU1NFUlQobGltaXQgPCBkYXRhU2l6ZSgpKTsKKyAgICAgICAgc2l6ZV90IGFsaWduZWQg
PSBhbGlnbk9mZnNldChvZmZzZXQpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgICAg
IGlmIChvZmZzZXQgPCBsaW1pdCkgeworICAgICAgICAgICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0
ICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgICAgICBzaXplID0gbGVuKGFsaWduZWQs
IGxpbWl0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChhbGlnbmVkID49IG9m
ZnNldCB8fCBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAgICAgICAgc2l6ZSA9IGxlbihhbGln
bmVkLCBsaW1pdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgZGF0YSgpICsgYWxpZ25l
ZCwgc2l6ZSB9OworICAgIH0KKworICAgIHNpemVfdCBsZW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxpbWl0KQorICAgIHsKKyAgICAgICAgaWYgKCFsaW1pdCkKKyAgICAgICAgICAgIHJldHVybiBk
YXRhU2l6ZSgpIC0gMSAtIG9mZnNldDsKKyAgICAgICAgaWYgKGxpbWl0IDw9IG9mZnNldCkKKyAg
ICAgICAgICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gb2Zmc2V0OworICAgICAgICByZXR1cm4gbGlt
aXQgLSBvZmZzZXQgLSAxOworICAgIH0KKworICAgIHVzaW5nIFN0cmVhbUJ1ZmZlclR5cGUgPSBT
dHJlYW1CdWZmZXI8bWVzc2FnZUFsaWdubWVudD47CisKKyAgICBTdHJlYW1CdWZmZXJUeXBlOjpI
ZWFkZXImIGhlYWRlcigpIHsgcmV0dXJuIG1fYnVmZmVyLmhlYWRlcigpOyB9CisKKyAgICB1aW50
OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CisKKyAgICBzaXpl
X3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CisKKyAg
ICBTdHJlYW1CdWZmZXJUeXBlIG1fYnVmZmVyOworICAgIHNpemVfdCBtX3NlbmRlck9mZnNldCB7
IDAgfTsKK307CisKK2NsYXNzIERlc3RpbmF0aW9uU3RyZWFtUmVjZWl2ZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlc3RpbmF0aW9u
U3RyZWFtUmVjZWl2ZXIpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1p
bk1lc3NhZ2VTaXplID0gRW5jb2Rlcjo6b3V0T2ZMaW5lU3RyZWFtTWVzc2FnZVNpemU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IEVuY29kZXI6OnN0cmVh
bU1lc3NhZ2VBbGlnbm1lbnQ7CisKKyAgICBleHBsaWNpdCBEZXN0aW5hdGlvblN0cmVhbVJlY2Vp
dmVyKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pCisgICAgeworICAg
ICAgICBpZiAoc3RyZWFtLmRhdGFTaXplIDwgU3RyZWFtQnVmZmVyVHlwZTo6aGVhZGVyU2l6ZSgp
ICsgbWluTWVzc2FnZVNpemUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gc2hh
cmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6Om1hcChzdHJlYW0uaGFuZGxlLCBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKyAgICAgICAgaWYgKHNo
YXJlZE1lbW9yeS0+c2l6ZSgpIDwgc3RyZWFtLmRhdGFTaXplKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX2J1ZmZlciA9IG1ha2VVbmlxdWU8U3RyZWFtQnVmZmVyVHlwZT4oc2hhcmVk
TWVtb3J5LnJlbGVhc2VOb25OdWxsKCksIHN0YXRpY19jYXN0PHNpemVfdD4oc3RyZWFtLmRhdGFT
aXplKSk7CisgICAgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX2J1
ZmZlcjsgfQorCisgICAgc3RydWN0IFNwYW4geworICAgICAgICB1aW50OF90KiBwdHI7CisgICAg
ICAgIHNpemVfdCBjYXBhY2l0eTsKKyAgICB9OworCisgICAgU3BhbiB0cnlBcXVpcmUoKQorICAg
IHsKKyAgICAgICAgc2l6ZV90IHJlY2VpdmVyTGltaXQgPSBoZWFkZXIoKS5zZW5kZXJPZmZzZXQu
bG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCAm
PSB+U3RyZWFtQnVmZmVyVHlwZTo6a1NlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZzsK
KyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IHN0ZDo6bWluKHJlY2VpdmVyTGltaXQsIGRhdGFTaXpl
KCkpOworICAgICAgICByZXR1cm4gYWxpZ25lZFNwYW4obV9yZWNlaXZlck9mZnNldCwgcmVjZWl2
ZXJMaW1pdCk7CisgICAgfQorCisgICAgU3BhbiByZWxlYXNlKHNpemVfdCByZWFkU2l6ZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChyZWFkU2l6ZSk7CisgICAgICAgIG1fcmVjZWl2ZXJPZmZzZXQg
PSB3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1fcmVjZWl2ZXJPZmZzZXQpICsgcmVhZFNpemUpOwor
ICAgICAgICBoZWFkZXIoKS5yZWNlaXZlck9mZnNldC5zdG9yZShtX3JlY2VpdmVyT2Zmc2V0LCBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKKyAgICAgICAgc2l6ZV90IHJlY2VpdmVyTGltaXQg
PSBoZWFkZXIoKS5zZW5kZXJPZmZzZXQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsK
KyAgICAgICAgaWYgKHJlY2VpdmVyTGltaXQgPT0gbV9yZWNlaXZlck9mZnNldCkKKyAgICAgICAg
ICAgIHJlY2VpdmVyTGltaXQgPSBoZWFkZXIoKS5zZW5kZXJPZmZzZXQuY29tcGFyZUV4Y2hhbmdl
U3Ryb25nKHJlY2VpdmVyTGltaXQsIG1fcmVjZWl2ZXJPZmZzZXQgfCBTdHJlYW1CdWZmZXJUeXBl
OjprU2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9h
Y3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAgICAgcmVjZWl2ZXJMaW1p
dCA9IHN0ZDo6bWluKHJlY2VpdmVyTGltaXQsIGRhdGFTaXplKCkpOworICAgICAgICByZXR1cm4g
YWxpZ25lZFNwYW4obV9yZWNlaXZlck9mZnNldCwgcmVjZWl2ZXJMaW1pdCk7CisgICAgfQorcHJp
dmF0ZToKKyAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci0+d3JhcE9mZnNldChvZmZzZXQpOyB9CisKKyAgICBzaXplX3QgYWxpZ25PZmZz
ZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXItPmFsaWduT2Zmc2V0KG9m
ZnNldCwgbWluTWVzc2FnZVNpemUpOyB9CisKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsaW1pdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvZmZzZXQgPCBkYXRh
U2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKGxpbWl0IDwgZGF0YVNpemUoKSk7CisgICAgICAgIHNp
emVfdCBhbGlnbmVkID0gYWxpZ25PZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgc2l6ZV90IHNpemUg
PSAwOworICAgICAgICBpZiAob2Zmc2V0IDwgbGltaXQpIHsKKyAgICAgICAgICAgIGlmIChvZmZz
ZXQgPD0gYWxpZ25lZCAmJiBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAgICAgICAgc2l6ZSA9
IGxlbihhbGlnbmVkLCBsaW1pdCk7CisgICAgICAgIH0gZWxzZSBpZiAob2Zmc2V0ID4gbGltaXQp
IHsKKyAgICAgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwgbGltaXQp
CisgICAgICAgICAgICAgICAgc2l6ZSA9IGxlbihhbGlnbmVkLCBsaW1pdCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHsgZGF0YSgpICsgYWxpZ25lZCwgc2l6ZSB9OworICAgIH0KKworICAg
IHNpemVfdCBsZW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQorICAgIHsKKyAgICAgICAg
aWYgKG9mZnNldCA8PSBsaW1pdCkKKyAgICAgICAgICAgIHJldHVybiBsaW1pdCAtIG9mZnNldDsK
KyAgICAgICAgcmV0dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7CisgICAgfQorCisgICAgdXNpbmcg
U3RyZWFtQnVmZmVyVHlwZSA9IFN0cmVhbUJ1ZmZlcjxtZXNzYWdlQWxpZ25tZW50PjsKKworICAg
IFN0cmVhbUJ1ZmZlclR5cGU6OkhlYWRlciYgaGVhZGVyKCkgeyByZXR1cm4gbV9idWZmZXItPmhl
YWRlcigpOyB9CisKKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIt
PmRhdGEoKTsgfQorCisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXItPmRhdGFTaXplKCk7IH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdHJlYW1CdWZmZXJUeXBl
PiBtX2J1ZmZlcjsKKyAgICBzaXplX3QgbV9yZWNlaXZlck9mZnNldCB7IDAgfTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcApp
bmRleCBlODNhM2U0YWZmNDJhNTc1NTA1ZGM4ZjA3MzE3YTFjMWFjMTlkZWFlLi5jODUxZDJjNGI0
Mzc5MTliZjQxNDU5YjM0YzY0NTc3NmRjYjgzZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9FbmNvZGVyLmNwcApAQCAtNzMsNiArNzMsMjAgQEAgRW5jb2Rlcjo6RW5jb2RlcihNZXNzYWdl
TmFtZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKICAgICBlbmNvZGVIZWFk
ZXIoKTsKIH0KIAorRW5jb2Rlcjo6RW5jb2RlcihNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCwgdWludDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtQ2FwYWNp
dHkpCisgICAgOiBtX21lc3NhZ2VOYW1lKG1lc3NhZ2VOYW1lKQorICAgICwgbV9kZXN0aW5hdGlv
bklEKGRlc3RpbmF0aW9uSUQpCisgICAgLCBtX2J1ZmZlcihzdHJlYW0pCisgICAgLCBtX2J1ZmZl
clBvaW50ZXIoc3RyZWFtKQorICAgICwgbV9idWZmZXJTaXplKDApCisgICAgLCBtX2J1ZmZlckNh
cGFjaXR5KHN0cmVhbUNhcGFjaXR5KQorICAgICwgbV9pc0VuY29kaW5nVG9TdHJlYW0odHJ1ZSkK
K3sKKyAgICBlbmNvZGVIZWFkZXIoKTsKKyAgICAvLyBGSVhNRTogSGVyZSB3ZSBzaG91bGQgZW5j
b2RlIHN0cmVhbSBoZWFkZXIgaW5zdGVhZCwgd2l0aG91dCB0aGUgZGVzdGluYXRpb24gSUQuCisg
ICAgLy8gSG93ZXZlciwgdGhlIGN1cnJlbnQgY29kZSBkb2VzIG5vdCBlYXNpbHkgc3VwcG9ydCBz
d2l0Y2hpbmcgdGhlIGVuY29kaW5nIHNpemUuCit9CisKIEVuY29kZXI6OkVuY29kZXIoQ29uc3Ry
dWN0V2l0aG91dEhlYWRlclRhZykKICAgICA6IG1fbWVzc2FnZU5hbWUoKQogICAgICwgbV9kZXN0
aW5hdGlvbklEKDApCkBAIC04NSw5ICs5OSwxMSBAQCBFbmNvZGVyOjpFbmNvZGVyKENvbnN0cnVj
dFdpdGhvdXRIZWFkZXJUYWcpCiAKIEVuY29kZXI6On5FbmNvZGVyKCkKIHsKLSAgICBpZiAobV9i
dWZmZXIgIT0gbV9pbmxpbmVCdWZmZXIpCi0gICAgICAgIGZyZWVCdWZmZXIobV9idWZmZXIsIG1f
YnVmZmVyQ2FwYWNpdHkpOwotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGRpc3Bvc2Ugb2YgdGhl
IGF0dGFjaG1lbnRzIGluIGNhc2VzIG9mIGZhaWx1cmUuCisgICAgaWYgKCFtX2lzRW5jb2RpbmdU
b1N0cmVhbSkgeworICAgICAgICBpZiAobV9idWZmZXIgIT0gbV9pbmxpbmVCdWZmZXIpCisgICAg
ICAgICAgICBmcmVlQnVmZmVyKG1fYnVmZmVyLCBtX2J1ZmZlckNhcGFjaXR5KTsKKyAgICAgICAg
Ly8gRklYTUU6IFdlIG5lZWQgdG8gZGlzcG9zZSBvZiB0aGUgYXR0YWNobWVudHMgaW4gY2FzZXMg
b2YgZmFpbHVyZS4KKyAgICB9CiB9CiAKIGJvb2wgRW5jb2Rlcjo6aXNTeW5jTWVzc2FnZSgpIGNv
bnN0CkBAIC0xNjAsMjEgKzE3NiwyNCBAQCB2b2lkIEVuY29kZXI6OnJlc2VydmUoc2l6ZV90IHNp
emUpCiAgICAgaWYgKHNpemUgPD0gbV9idWZmZXJDYXBhY2l0eSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc2l6ZV90IG5ld0NhcGFjaXR5ID0gcm91bmRVcFRvQWxpZ25tZW50KG1fYnVmZmVyQ2Fw
YWNpdHkgKiAyLCA0MDk2KTsKLSAgICB3aGlsZSAobmV3Q2FwYWNpdHkgPCBzaXplKQotICAgICAg
ICBuZXdDYXBhY2l0eSAqPSAyOworICAgIHNpemVfdCBjYXBhY2l0eSA9IHJvdW5kVXBUb0FsaWdu
bWVudChtX2J1ZmZlckNhcGFjaXR5ICogMiwgNDA5Nik7CisgICAgd2hpbGUgKGNhcGFjaXR5IDwg
c2l6ZSkKKyAgICAgICAgY2FwYWNpdHkgKj0gMjsKIAotICAgIHVpbnQ4X3QqIG5ld0J1ZmZlcjsK
LSAgICBpZiAoIWFsbG9jQnVmZmVyKG5ld0J1ZmZlciwgbmV3Q2FwYWNpdHkpKQorICAgIHVpbnQ4
X3QqIGJ1ZmZlcjsKKyAgICBpZiAoIWFsbG9jQnVmZmVyKGJ1ZmZlciwgY2FwYWNpdHkpKQogICAg
ICAgICBDUkFTSCgpOwotCi0gICAgbWVtY3B5KG5ld0J1ZmZlciwgbV9idWZmZXIsIG1fYnVmZmVy
U2l6ZSk7Ci0KLSAgICBpZiAobV9idWZmZXIgIT0gbV9pbmxpbmVCdWZmZXIpCi0gICAgICAgIGZy
ZWVCdWZmZXIobV9idWZmZXIsIG1fYnVmZmVyQ2FwYWNpdHkpOwotCi0gICAgbV9idWZmZXIgPSBu
ZXdCdWZmZXI7Ci0gICAgbV9idWZmZXJDYXBhY2l0eSA9IG5ld0NhcGFjaXR5OworICAgIHN0ZDo6
c3dhcChtX2J1ZmZlciwgYnVmZmVyKTsKKyAgICBzdGQ6OnN3YXAobV9idWZmZXJDYXBhY2l0eSwg
Y2FwYWNpdHkpOworICAgIG1lbWNweShtX2J1ZmZlciwgYnVmZmVyLCBtX2J1ZmZlclNpemUpOwor
CisgICAgaWYgKG1faXNFbmNvZGluZ1RvU3RyZWFtKSB7CisgICAgICAgIG1faXNFbmNvZGluZ1Rv
U3RyZWFtID0gZmFsc2U7CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8T3B0aW9uU2V0PE1lc3Nh
Z2VGbGFncz4qPihidWZmZXIpLT5hZGQoTWVzc2FnZUZsYWdzOjpTdHJlYW1NZXNzYWdlT3V0T2ZM
aW5lKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYnVmZmVyICE9IG1faW5saW5lQnVmZmVy
KQorICAgICAgICAgICAgZnJlZUJ1ZmZlcihidWZmZXIsIGNhcGFjaXR5KTsKKyAgICB9CiB9CiAK
IHZvaWQgRW5jb2Rlcjo6ZW5jb2RlSGVhZGVyKCkKQEAgLTIwMCw5ICsyMTksMTAgQEAgdWludDhf
dCogRW5jb2Rlcjo6Z3JvdyhzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBz
aXplX3QgYWxpZ25lZFNpemUgPSByb3VuZFVwVG9BbGlnbm1lbnQobV9idWZmZXJTaXplLCBhbGln
bm1lbnQpOwogICAgIHJlc2VydmUoYWxpZ25lZFNpemUgKyBzaXplKTsKLQotICAgIHN0ZDo6bWVt
c2V0KG1fYnVmZmVyICsgbV9idWZmZXJTaXplLCAwLCBhbGlnbmVkU2l6ZSAtIG1fYnVmZmVyU2l6
ZSk7Ci0KKyNpZiAwCisgICAgaWYgKG1fYnVmZmVyU2l6ZSA8IGFsaWduZWRTaXplKQorICAgICAg
ICBzdGQ6Om1lbXNldChtX2J1ZmZlciArIG1fYnVmZmVyU2l6ZSwgMCwgYWxpZ25lZFNpemUgLSBt
X2J1ZmZlclNpemUpOworI2VuZGlmCiAgICAgbV9idWZmZXJTaXplID0gYWxpZ25lZFNpemUgKyBz
aXplOwogICAgIG1fYnVmZmVyUG9pbnRlciA9IG1fYnVmZmVyICsgYWxpZ25lZFNpemUgKyBzaXpl
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCmluZGV4IGVhNjE5NjdiZTFl
YmNiZDhiNmZiYmFhOGI4NWFmNDE4ZThkNTBjY2EuLjM3Mjk3NTNlMDg1MTJhYTFhMTBhMzBhOThj
ZTdmYjE2YzgzYjdlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Vu
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKQEAgLTQ0
LDggKzQ0LDEyIEBAIGNsYXNzIEVuY29kZXIgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIEVuY29kZXIoTWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOworICAgIEVuY29kZXIoTWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbUNhcGFjaXR5KTsKICAgICB+RW5jb2Rl
cigpOwogCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc3RyZWFtTWVzc2FnZUFsaWdubWVu
dCA9IGFsaWdub2YodWludDY0X3QpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG91dE9m
TGluZVN0cmVhbU1lc3NhZ2VTaXplID0gc2l6ZW9mKHVpbnQ2NF90KSAqIDI7CisKICAgICBSZWNl
aXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFt
ZShtX21lc3NhZ2VOYW1lKTsgfQogICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQogICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBj
b25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uSUQ7IH0KQEAgLTk2LDYgKzEwMCw4IEBAIHB1Ymxp
YzoKICAgICBWZWN0b3I8QXR0YWNobWVudD4gcmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAgICAgdm9p
ZCByZXNlcnZlKHNpemVfdCk7CiAKKyAgICBib29sIGlzRW5jb2RpbmdUb1N0cmVhbSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNFbmNvZGluZ1RvU3RyZWFtOyB9CisKICAgICBzdGF0aWMgY29uc3QgYm9v
bCBpc0lQQ0VuY29kZXIgPSB0cnVlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTEy
OCw2ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzQXR0YWNobWVudHMoKSBjb25zdDsK
IAogICAgIHZvaWQgZW5jb2RlSGVhZGVyKCk7CisKICAgICBjb25zdCBPcHRpb25TZXQ8TWVzc2Fn
ZUZsYWdzPiYgbWVzc2FnZUZsYWdzKCkgY29uc3Q7CiAgICAgT3B0aW9uU2V0PE1lc3NhZ2VGbGFn
cz4mIG1lc3NhZ2VGbGFncygpOwogCkBAIC0xMzgsMTAgKzE0NSwxMiBAQCBwcml2YXRlOgogCiAg
ICAgdWludDhfdCogbV9idWZmZXI7CiAgICAgdWludDhfdCogbV9idWZmZXJQb2ludGVyOwotICAg
IAorCiAgICAgc2l6ZV90IG1fYnVmZmVyU2l6ZTsKICAgICBzaXplX3QgbV9idWZmZXJDYXBhY2l0
eTsKIAorICAgIGJvb2wgbV9pc0VuY29kaW5nVG9TdHJlYW0geyBmYWxzZSB9OworCiAgICAgVmVj
dG9yPEF0dGFjaG1lbnQ+IG1fYXR0YWNobWVudHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL01lc3NhZ2VGbGFncy5oCmluZGV4IGFkNGQ0NTJlMWVjZGU5M2FhYjEyMGRmMWIxNDk5
NmE5MDdjMzFkMWUuLmUyNzJmYTliOTIzNTg3YmIxOTVhYWRkZTFmNTcwODQ0ODFmZjUyN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VGbGFncy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VGbGFncy5oCkBAIC0zMiw2ICszMiw3
IEBAIGVudW0gY2xhc3MgTWVzc2FnZUZsYWdzIDogdWludDhfdCB7CiAgICAgRGlzcGF0Y2hNZXNz
YWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgPSAxIDw8IDEsCiAgICAgRGlzcGF0Y2hNZXNzYWdl
V2hlbldhaXRpbmdGb3JVbmJvdW5kZWRTeW5jUmVwbHkgPSAxIDw8IDIsCiAgICAgVXNlRnVsbHlT
eW5jaHJvbm91c01vZGVGb3JUZXN0aW5nID0gMSA8PCAzLAorICAgIFN0cmVhbU1lc3NhZ2VPdXRP
ZkxpbmUgPSAxIDw8IDQsCiB9OwogCiBlbnVtIGNsYXNzIFNob3VsZERpc3BhdGNoV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHkgOiB1aW50OF90IHsKQEAgLTUwLDcgKzUxLDggQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxJUEM6Ok1lc3NhZ2VGbGFncz4gewogICAgICAgICBJUEM6Ok1lc3Nh
Z2VGbGFnczo6U3luY01lc3NhZ2UsCiAgICAgICAgIElQQzo6TWVzc2FnZUZsYWdzOjpEaXNwYXRj
aE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSwKICAgICAgICAgSVBDOjpNZXNzYWdlRmxh
Z3M6OkRpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5LAotICAg
ICAgICBJUEM6Ok1lc3NhZ2VGbGFnczo6VXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5n
CisgICAgICAgIElQQzo6TWVzc2FnZUZsYWdzOjpVc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRl
c3RpbmcsCisgICAgICAgIElQQzo6TWVzc2FnZUZsYWdzOjpTdHJlYW1NZXNzYWdlT3V0T2ZMaW5l
CiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01l
c3NhZ2VTdHJlYW1SZWNlaXZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVN0cmVhbVJlY2VpdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJmOTU4YjcyNzc2YTM2NGQyODgxNjIyYjYy
MDY5MjEyZmFiNzBlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTdHJlYW1SZWNlaXZlci5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IkRlY29kZXIuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvblN0cmVhbS5oIgorI2luY2x1ZGUgIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFNlbGY+CitjbGFzcyBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIgIHsKK3B1
YmxpYzoKKyAgICBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSYmIHN0cmVhbSkKKyAgICAgICAgOiBtX3N0cmVhbShXVEZNb3ZlKHN0cmVhbSkpCisg
ICAgeyB9CisgICAgfk1lc3NhZ2VTdHJlYW1SZWNlaXZlcigpID0gZGVmYXVsdDsKKworICAgIHZv
aWQgc3RyZWFtV2FrZVVwKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCisgICAgeworICAgICAgICBp
ZiAoIW1fc3RyZWFtLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IGNsb3NlIHRo
ZSBjb25uZWN0aW9uLgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEZJWE1F
OiBSZW1vdmUgb25jZSBkZWJ1Z2dpbmcgZW5kcy4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBhdXRvIGRlc3RpbmF0aW9uSUQgPSBzdGF0aWNfY2FzdDxTZWxmKj4odGhp
cyktPm1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCk7CisgICAgICAgIGF1dG8gc3BhbiA9IG1f
c3RyZWFtLnRyeUFxdWlyZSgpOworICAgICAgICB3aGlsZSAoc3Bhbi5jYXBhY2l0eSA+PSBEZWNv
ZGVyOjpvdXRPZkxpbmVTdHJlYW1NZXNzYWdlU2l6ZSkgeworICAgICAgICAgICAgSVBDOjpEZWNv
ZGVyIGRlY29kZXIgeyBzcGFuLnB0ciwgc3Bhbi5jYXBhY2l0eSwgZGVzdGluYXRpb25JRCB9Owor
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBjbG9zZSB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgLy8gRklYTUU6IFJlbW92ZSBvbmNlIGRlYnVnZ2luZyBlbmRzLgorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkZWNvZGVy
LmlzT3V0T2ZMaW5lU3RyZWFtTWVzc2FnZSgpKSB7CisgICAgICAgICAgICAgICAgc3BhbiA9IG1f
c3RyZWFtLnJlbGVhc2UoRGVjb2Rlcjo6b3V0T2ZMaW5lU3RyZWFtTWVzc2FnZVNpemUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8U2VsZio+KHRoaXMpLT5kaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogY2xvc2UgdGhlIGNvbm5lY3Rpb24uCisgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IC8vIEZJWE1FOiBSZW1vdmUgb25jZSBkZWJ1Z2dpbmcgZW5kcy4K
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzcGFu
ID0gbV9zdHJlYW0ucmVsZWFzZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsKKyAg
ICAgICAgfQorICAgIH0KK3ByaXZhdGU6CisgICAgRGVzdGluYXRpb25TdHJlYW1SZWNlaXZlciBt
X3N0cmVhbTsKK307CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVNlbmRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzN2RiM2VmZjMy
ZDAwYWZhNzc0N2FjZjgwNTU4ZDk0NTdkNDRlMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU3RyZWFtU2VuZGVyLmgKQEAgLTAsMCArMSw5MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25TdHJlYW0uaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFw
aGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCitu
YW1lc3BhY2UgSVBDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgU2VsZj4KK2NsYXNzIE1lc3NhZ2VT
dHJlYW1TZW5kZXIgIHsKK3B1YmxpYzoKKyAgICBNZXNzYWdlU3RyZWFtU2VuZGVyKHNpemVfdCBz
dHJlYW1TaXplKQorICAgICAgICA6IG1fc3RyZWFtKHN0cmVhbVNpemUpCisgICAgeyB9CisgICAg
fk1lc3NhZ2VTdHJlYW1TZW5kZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNl
bmRPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgYXV0byogY29ubmVjdGlvbiA9IHN0YXRp
Y19jYXN0PFNlbGYqPih0aGlzKS0+bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKTsKKyAgICAgICAg
QVNTRVJUKGNvbm5lY3Rpb24pOworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFVOjppc1N5bmMsICJN
ZXNzYWdlIGlzIHN5bmMhIik7CisKKyAgICAgICAgYXV0byBzcGFuID0gbV9zdHJlYW0udHJ5QWNx
dWlyZSgpOworICAgICAgICB3aGlsZSAoc3Bhbi5jYXBhY2l0eSA8IEVuY29kZXI6Om91dE9mTGlu
ZVN0cmVhbU1lc3NhZ2VTaXplKSB7CisgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisgICAg
ICAgICAgICBzcGFuID0gbV9zdHJlYW0udHJ5QWNxdWlyZSgpOworICAgICAgICB9CisgICAgICAg
IGF1dG8gZGVzdGluYXRpb25JRCA9IHN0YXRpY19jYXN0PFNlbGYqPih0aGlzKS0+bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKTsKKyAgICAgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxF
bmNvZGVyPihVOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQsIHNwYW4ucHRyLCBzcGFuLmNhcGFjaXR5
KTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOworICAgICAg
ICBpZiAoZW5jb2Rlci0+aXNFbmNvZGluZ1RvU3RyZWFtKCkpIHsKKyAgICAgICAgICAgIGF1dG8g
d2FrZXVwUmVzdWx0ID0gbV9zdHJlYW0ucmVsZWFzZShlbmNvZGVyLT5idWZmZXJTaXplKCkpOwor
ICAgICAgICAgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBEZXN0aW5hdGlvblN0cmVhbVNlbmRlcjo6
V2FrZVVwUmVhZGVyOjpObykKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6U3RyZWFtV2FrZVVwOjpuYW1lKCksIGRlc3RpbmF0aW9uSUQpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGhlIEVuY29kZXIgd3JvdGUgdGhlIG91dC1vZi1s
aW5lIG1lc3NhZ2UgaW5kaWNhdG9yIHRvIHRoZSBidWZmZXIuIFJlbGVhc2UKKyAgICAgICAgICAg
IC8vIHRoaXMgcGllY2Ugb2YgdGhlIGJ1ZmZlci4KKyAgICAgICAgICAgIGF1dG8gd2FrZXVwUmVz
dWx0ID0gbV9zdHJlYW0ucmVsZWFzZShFbmNvZGVyOjpvdXRPZkxpbmVTdHJlYW1NZXNzYWdlU2l6
ZSk7CisgICAgICAgICAgICBpZiAod2FrZXVwUmVzdWx0ID09IERlc3RpbmF0aW9uU3RyZWFtU2Vu
ZGVyOjpXYWtlVXBSZWFkZXI6OlllcykgeworICAgICAgICAgICAgICAgIGlmICghY29ubmVjdGlv
bi0+c2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlvbnMpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0cmVh
bVdha2VVcDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVy
KSwgc2VuZE9wdGlvbnMpOworICAgIH0KKyAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IENvbm5l
Y3Rpb246OlNlbmRTeW5jUmVzdWx0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgU2Vu
ZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVw
bHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5k
U3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgLy8gRklY
TUU6IHNlbmRTeW5jIGRvZXMgbm90IGdvIHRocm91Z2ggdGhlIHN0cmVhbSBiZWNhdXNlIHRoZSBj
b25zdHJ1Y3RvciBvZiB0aGUgc3luYyBlbmNvZGVyIGlzIHRpZWQgdG8gdGhlCisgICAgICAgIC8v
IENvbm5lY3Rpb24uIEl0J3MgYSBtZWNoYW5pY2FsIHJlZmFjdG9yIHRvIGZpeCBpdC4KKyAgICAg
ICAgc3RhdGljX2Fzc2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOworICAg
ICAgICBhdXRvIGNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxTZWxmKj4odGhpcyktPm1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCk7CisgICAgICAgIEFTU0VSVChjb25uZWN0aW9uKTsKKyAgICAgICAg
YXV0byBkZXN0aW5hdGlvbklEID0gc3RhdGljX2Nhc3Q8U2VsZio+KHRoaXMpLT5tZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCgpOworICAgICAgICByZXR1cm4gY29ubmVjdGlvbi0+c2VuZFN5bmMo
V1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQs
IHNlbmRTeW5jT3B0aW9ucyk7CisgICAgfQorCisgICAgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSBkZXN0aW5hdGlvblN0cmVhbUhhbmRsZSgpIHsgcmV0dXJuIG1fc3RyZWFtLmRlc3Rp
bmF0aW9uU3RyZWFtSGFuZGxlKCk7IH0KK3ByaXZhdGU6CisgICAgRGVzdGluYXRpb25TdHJlYW1T
ZW5kZXIgbV9zdHJlYW07Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDBkOGRlMDQ5ZjRiNTBjYmU3Yzk5ZTcxMDY4
Mjk2NjkzZWU1MTg4MWMuLjA1ZmUwYzZjNWIyMzUzZDI3ZDQ0MDQ2MmIzNDQxNzc4MmQwYTlmYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMzMsNiArMzMs
NyBAQCBMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFID0gJ0xlZ2FjeVJlY2VpdmVyJwogTk9UX1JF
RkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFID0gJ05vdFJlZkNvdW50ZWQnCiBTWU5DSFJPTk9V
U19BVFRSSUJVVEUgPSAnU3luY2hyb25vdXMnCiBBU1lOQ19BVFRSSUJVVEUgPSAnQXN5bmMnCitT
VFJFQU1fQVRUUklCVVRFID0gJ1N0cmVhbScKIAogX2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
QEAgLTQ5Nyw3ICs0OTgsOCBAQCBkZWYgYXN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIs
IG1lc3NhZ2UpOgogCiAgICAgcmVzdWx0ID0gW10KICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6JXM6OiVzOjpuYW1lKCkpIHtcbicg
JSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKLSAgICByZXN1bHQuYXBwZW5kKCcgICAg
ICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlv
biwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oZGlzcGF0Y2hfZnVuY3Rp
b25fYXJncykpKQorICAgIGlmIG5vdCAocmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRU
UklCVVRFKSBhbmQgbWVzc2FnZS5uYW1lID09ICdTdHJlYW1XYWtlVXAnKToKKyAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgICAgICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzKTtcbicgJSAo
ZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJywgJy5qb2lu
KGRpc3BhdGNoX2Z1bmN0aW9uX2FyZ3MpKSkKICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJl
dHVybjtcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCiAgICAgcmV0dXJuIHN1cnJv
dW5kX2luX2NvbmRpdGlvbignJy5qb2luKHJlc3VsdCksIG1lc3NhZ2UuY29uZGl0aW9uKQpAQCAt
ODU4LDggKzg2MCwxMyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToK
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFzeW5jX21lc3NhZ2VzLmFwcGVuZChtZXNzYWdl
KQogCisgICAgcmVjZWl2ZV92YXJpYW50ID0gJycKKyAgICBpZiByZWNlaXZlci5oYXNfYXR0cmli
dXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpOgorICAgICAgICByZWNlaXZlX3ZhcmlhbnQg
PSByZWNlaXZlci5uYW1lCisgICAgZWxpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9B
VFRSSUJVVEUpOgorICAgICAgICByZWNlaXZlX3ZhcmlhbnQgPSAnU3RyZWFtJwogICAgIGlmIGFz
eW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVT
U0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElT
UEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgotICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVz
OjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykp
CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJl
Y2VpdmVyLm5hbWUsIHJlY2VpdmVfdmFyaWFudCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tc
bicpCiAgICAgICAgIGlmIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVE
X1JFQ0VJVkVSX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgYXV0
byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7XG4nKQpAQCAtODc2LDYgKzg4MywxMyBA
QCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ31cbicpCiAKKyAgICBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9B
VFRSSUJVVEUpOgorICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlcilc
bicgJSAocmVjZWl2ZXIubmFtZSkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTtcbicpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdHJlYW1XYWtlVXAo
Y29ubmVjdGlvbik7XG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQorCiAgICAgaWYg
c3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01F
U1NBR0VfQVRUUklCVVRFKToKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlU3luYyVzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRy
PElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2
ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJV
VEUpIGVsc2UgJycpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggN2VlZDYzYTUxNjNhYmQ4Zjg3ZDJkMDZhNmEyOGZjYmUzNmMyODExZi4u
NTVhYzFjZjJlNmJhMTU3ZTg3YjgxZjZlMGQyNTliM2Y3ZDIwNjEzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzI2LDYgKzEzMjYs
OCBAQAogCQk3QUZCRDM2NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmggKi87IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJzaXN0
ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovOyB9Owog
CQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhDRTAwMDBF
MjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovOyB9OworCQk3QkU3MjY3QTI1N0E3M0Q2MDBFODVE
OTggLyogTWVzc2FnZVN0cmVhbVNlbmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0JFNzI2NzkyNTdBNzNENjAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJl
YW1TZW5kZXIuaCAqLzsgfTsKKwkJN0JFNzI2N0MyNTdBNzlDODAwRTg1RDk4IC8qIE1lc3NhZ2VT
dHJlYW1SZWNlaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0JFNzI2N0IyNTdBNzlDODAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1SZWNlaXZlci5o
ICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1Bs
dWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJB
MzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyog
QVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtNDUxNiw2ICs0NTE4LDggQEAKIAkJN0I5MDQxNkQy
NTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJh
dGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIw
MEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5j
dGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2
ODI1NzY4MEVGMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JFNzI2NzkyNTdBNzNENjAwRTg1RDk4IC8qIE1lc3Nh
Z2VTdHJlYW1TZW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2Fn
ZVN0cmVhbVNlbmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkU3MjY3QjI1
N0E3OUM4MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VTdHJlYW1SZWNlaXZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5m
b3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg5NCw2ICs2ODk4
LDggQEAKIAkJCQkxQTNFRUQwRDE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFw
LmggKi8sCiAJCQkJMUFBQjAzNzcxODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuY3Bw
ICovLAogCQkJCTFBQUIwMzc4MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmggKi8s
CisJCQkJN0JFNzI2N0IyNTdBNzlDODAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1SZWNlaXZlci5o
ICovLAorCQkJCTdCRTcyNjc5MjU3QTczRDYwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFtU2VuZGVy
LmggKi8sCiAJCQkJMkRDMTgwMDFEOTBEREQxNUZDNjk5MUE5IC8qIFNoYXJlZEJ1ZmZlckNvcHku
Y3BwICovLAogCQkJCTVDQzVEQjkxMjE0ODhFMTYwMDZDQjhBOCAvKiBTaGFyZWRCdWZmZXJDb3B5
LmggKi8sCiAJCQkJMkRDMTg1NUVEQkZCODUwQkEwQjZEMDZEIC8qIFNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuY3BwICovLApAQCAtMTE2NjUsNiArMTE2NzEsOCBAQAogCQkJCTFBM0VFRDEyMTYx
QTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
M0VFRDBGMTYxQTUzNTQwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBQUIwMzdBMTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3QkU3MjY3QzI1N0E3OUM4MDBFODVEOTggLyogTWVzc2FnZVN0cmVh
bVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkU3MjY3QTI1N0E3M0Q2MDBFODVEOTgg
LyogTWVzc2FnZVN0cmVhbVNlbmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEzQjNEQTIyMDdG
MzlERTAwOTBDNThEIC8qIE1vYmlsZVdpRmlTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENF
RENCMjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwCmluZGV4IDM0YTA2ZmIwMDc2YWNkM2ZkMzJiM2E0YjZiMDlkNjhkMDI3YmI1ODguLjA1
ZjllZTJiNjAwOGQ1ZDY3YWM4NmMyNGQzYzA1MTIwYWYxNzUyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtNDgsMTkgKzQ4LDIyIEBAIFJlZlB0cjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkoYXR0cmlidXRlcykpOwogfQogCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBk
ZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjI7CisKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoY29uc3QgR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRycykKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNl
KGF0dHJzKQorICAgIDogSVBDOjpNZXNzYWdlU3RyZWFtU2VuZGVyPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk+KGRlZmF1bHRTdHJlYW1TaXplKQorICAgICwgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UoYXR0cnMpCiB7CiAgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1l
c3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAgICAgbWVzc2FnZVJlY2VpdmVy
TWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0gICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKSwgMCk7CisgICAgbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250
ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBkZXN0aW5hdGlvblN0
cmVhbUhhbmRsZSgpKSwgMCk7CiB9CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKIHsKICAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ck1hcCYgbWVzc2FnZVJlY2VpdmVyTWFwID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKICAgICBtZXNzYWdl
UmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wo
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsKKyAgICBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWxl
YXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwKTsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBwbGF0Zm9ybVN3YXBDaGFpbigpLnJlY3ljbGVCdWZm
ZXIoKTsKICNlbmRpZgpAQCAtODAsMTQgKzgzLDE0IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgbV9jdXJy
ZW50V2lkdGggPSB3aWR0aDsKICAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdo
dCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzaGFwZSh3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkoKQogewog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlclNlbmRS
aWdodDsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBy
ZXBhcmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJl
cGFyZUZvckRpc3BsYXk6OlJlcGx5KGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseShkaXNwbGF5QnVmZmVy
U2VuZFJpZ2h0KSwgMTBfcyk7CiAgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpj
cmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIHNSR0JD
b2xvclNwYWNlUmVmKCkpOwogICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIGF1dG8m
IHNjID0gcGxhdGZvcm1Td2FwQ2hhaW4oKTsKQEAgLTk1LDE5ICs5OCwxOSBAQCB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICAgICAgc2Mu
cHJlc2VudCh7IFdURk1vdmUoZGlzcGxheUJ1ZmZlciksIG51bGxwdHIgfSk7CiAgICAgfQogI2Vs
c2UKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBh
cmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFy
ZUZvckRpc3BsYXk6OlJlcGx5KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBh
cmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFy
ZUZvckRpc3BsYXk6OlJlcGx5KCksIDEwX3MpOwogI2VuZGlmCiAgICAgbWFya0xheWVyQ29tcG9z
aXRlZCgpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuc3VyZUV4
dGVuc2lvbkVuYWJsZWQoY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoZXh0
ZW5zaW9uKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVu
c2lvbikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om5vdGlmeU1h
cmtDb250ZXh0Q2hhbmdlZCgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6Ok5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
Ok5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzaW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggZDk5ZWRhMjlmNmRiNWUxODE5NzEzMTc4ZjJhYTUz
MWI0ZjVkZDZlMC4uZDFhYzAxYmI2ZmNhMDY2Y2ZhNzJjNjc3NWFhMjQ3YjVlMGZhMGFmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTI5LDcgKzI5LDcgQEAK
IAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlU3RyZWFtU2VuZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGluIEdQVSBwcm9jZXNzLgogLy8g
VGhlIGltcGxlbWVudGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgVG9vbHMv
U2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsLgogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eSBmaW5hbAotICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgorICAgIDogcHVi
bGljIElQQzo6TWVzc2FnZVN0cmVhbVNlbmRlcjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
PgogICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgICwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+CiAgICAgLCBwdWJsaWMgV2Vi
Q29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UgewpAQCAtNTUsOSArNTUsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJik7CiAg
ICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKSBmaW5hbDsKIAotICAgIC8vIElQQzo6
TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCi0gICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwotICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisgICAgLy8gSVBDOjpNZXNzYWdlU3RyZWFtU2Vu
ZGVyIHRlbXBsYXRlIGNvbnRyYWN0LgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0OwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAppbmRleCBmN2VjZjg2NTU2YTAwNzNhZjhm
NTU0Y2ZjZmMwZWYzMzlmNjFlODlhLi4zYzE3YzI0YWRjNzNiMGJmZjJjNjBjNTkzNGRlZDdjN2Qw
ZTdiZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKQEAgLTMyLDMyNCArMzIsMzI0IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNl
dEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpTZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6U2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3ludGhlc2l6
ZUdMRXJyb3IoZXJyb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN5bnRoZXNpemVHTEVycm9yKGVy
cm9yKSk7CiB9CiAKIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9y
c1RvU3ludGhldGljRXJyb3JMaXN0KCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9Owot
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9y
c1RvU3ludGhldGljRXJyb3JMaXN0KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6TW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlz
dCgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5bnRo
ZXRpY0Vycm9yTGlzdDo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0aXZl
VGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpBY3RpdmVUZXh0dXJlKHRleHR1cmUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkFjdGl2ZVRleHR1cmUodGV4dHVyZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIFBsYXRm
b3JtR0xPYmplY3Qgc2hhZGVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpBdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpBdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCwgR0NHTHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEF0dHJpYkxvY2F0aW9uKGFyZzAs
IGluZGV4LCBuYW1lKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQXR0cmliTG9jYXRpb24oYXJn
MCwgaW5kZXgsIG5hbWUpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpiaW5kQnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyKHRh
cmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZm
ZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQs
IGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVuZGVyYnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kUmVuZGVyYnVmZmVyKHRhcmdl
dCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIGFy
ZzEpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVGV4dHVy
ZShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRleHR1cmUodGFyZ2V0LCBhcmcx
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZENvbG9yKEdDR0xjbGFtcGYg
cmVkLCBHQ0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kQ29s
b3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kQ29s
b3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uKEdDR0xlbnVtIG1vZGUpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb24obW9kZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDR0xlbnVtIG1v
ZGVSR0IsIEdDR0xlbnVtIG1vZGVBbHBoYSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBo
YSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1v
ZGVBbHBoYSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5k
RnVuYyhHQ0dMZW51bSBzZmFjdG9yLCBHQ0dMZW51bSBkZmFjdG9yKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3Rv
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZShH
Q0dMZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xl
bnVtIGRzdEFscGhhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhh
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwg
c3JjQWxwaGEsIGRzdEFscGhhKSk7CiB9CiAKIEdDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFyZ2V0KQogewogICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXM6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyh0YXJnZXQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNoZWNrRnJhbWVidWZmZXJTdGF0dXM6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhcihtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVh
cihtYXNrKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJD
b2xvcihHQ0dMY2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBH
Q0dMY2xhbXBmIGFscGhhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRo
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckRl
cHRoKGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJTdGVuY2lsKEdDR0xpbnQg
cykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJT
dGVuY2lsKHMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29sb3JNYXNrKEdDR0xib29sZWFuIHJl
ZCwgR0NHTGJvb2xlYW4gZ3JlZW4sIEdDR0xib29sZWFuIGJsdWUsIEdDR0xib29sZWFuIGFscGhh
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb2xvck1h
c2soc3RhdGljX2Nhc3Q8Ym9vbD4ocmVkKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oZ3JlZW4pLCBzdGF0
aWNfY2FzdDxib29sPihibHVlKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYWxwaGEpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDb2xvck1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4ocmVkKSwgc3RhdGljX2Nhc3Q8
Ym9vbD4oZ3JlZW4pLCBzdGF0aWNfY2FzdDxib29sPihibHVlKSwgc3RhdGljX2Nhc3Q8Ym9vbD4o
YWxwaGEpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGls
ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBpbGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q29tcGlsZVNoYWRlcihhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhJbWFnZTJEKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UyRCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0
LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVmZmVyKCkKIHsKICAgICB1aW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKIHsKICAgICB1aW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZUZyYW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCAx
MF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUHJvZ3JhbSgpCiB7CiAgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFtKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKIHsKICAgICB1aW50MzJfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXIoKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXI6OlJlcGx5KHJldHVyblZh
bHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0Zm9ybUdMT2Jq
ZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dMZW51bSBh
cmcwKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXIoYXJnMCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyOjpSZXBseShy
ZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogUGxhdGZv
cm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUZXh0dXJlKCkK
IHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmUoKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmUoKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1
ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZShHQ0dMZW51bSBtb2RlKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVsZXRlQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlQnVmZmVyKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVGcmFtZWJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVG
cmFtZWJ1ZmZlcihhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVByb2dyYW0oYXJnMCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlUHJvZ3JhbShhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlUmVuZGVyYnVmZmVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1
ZmZlcihhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVs
ZXRlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRleHR1cmUoYXJn
MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVGV4dHVyZShhcmcwKSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKEdDR0xlbnVtIGZ1bmMpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoRnVuYyhm
dW5jKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1bmMoZnVuYykpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aE1hc2so
c3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoTWFzayhz
dGF0aWNfY2FzdDxib29sPihmbGFnKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlcHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aFJhbmdl
KHpOZWFyLCB6RmFyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aFJhbmdlKHpOZWFyLCB6RmFy
KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVy
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwg
YXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGV0YWNoU2hhZGVyKGFyZzAsIGFyZzEpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxlKEdDR0xlbnVtIGNh
cCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJs
ZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUoY2FwKSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1
aW50IGluZGV4KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRyYXdBcnJheXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwg
R0NHTHNpemVpIGNvdW50KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50
LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
b2Zmc2V0KSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJs
ZShHQ0dMZW51bSBjYXApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkVuYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZShjYXApKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShHQ0dMdWludCBpbmRleCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmluaXNoKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmluaXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Rmlu
aXNoKCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Rmx1c2goKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpGbHVzaCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm1H
TE9iamVjdCBhcmczKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1
ZmZlcnRhcmdldCwgYXJnMyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1cmUy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleHRhcmdl
dCwgUGxhdGZvcm1HTE9iamVjdCBhcmczLCBHQ0dMaW50IGxldmVsKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJn
ZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2ZWwpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBh
cmczLCBsZXZlbCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
b250RmFjZShHQ0dMZW51bSBtb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpGcm9udEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJvbnRG
YWNlKG1vZGUpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZW5l
cmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2VuZXJhdGVNaXBtYXAodGFyZ2V0KSk7CiB9CiAKIGJvb2wgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
R0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1
ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRl
eCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliOjpS
ZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAogYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3Jt
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFy
ZzIpCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5k
ZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm06
OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybTo6UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCAx
MF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcw
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
LSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEF0dHJp
YkxvY2F0aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEF0dHJpYkxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1
ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBh
cmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5
KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBTdHJp
bmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3RyaW5nKEdDR0xlbnVtIG5hbWUp
CiB7CiAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmcobmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3Mp
OwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xmbG9hdD4g
dmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVSZXBseTsKLSAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2KHBuYW1lLCB2
YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9h
dHY6OlJlcGx5KHZhbHVlUmVwbHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkKICAgICAg
ICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICog
c2l6ZW9mKGZsb2F0KSk7CiAgICAgCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdD
R0xmbG9hdD4KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcnYo
R0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAgIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXJ2KHBu
YW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRJbnRlZ2Vydjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2Vydjo6UmVwbHkodmFs
dWVSZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkodmFs
dWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJf
dCkpOwogICAgIApAQCAtMzY3LDI4ICszNjcsMjggQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4K
IEdDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjQoR0NH
TGVudW0gcG5hbWUpCiB7CiAgICAgaW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NChwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0OjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2
NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0
OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dM
aW50NjQ+KHJldHVyblZhbHVlKTsKIH0KIAogR0NHTGludDY0IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVnZXI2NGkoR0NHTGVudW0gcG5hbWUsIEdDR0x1aW50IGluZGV4KQog
ewogICAgIGludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpKHBuYW1lLCBpbmRleCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpKHBu
YW1lLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdl
cjY0aTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbWkoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51
bSBwbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWkocHJvZ3JhbSwg
cG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1pOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dy
YW1pKHByb2dyYW0sIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRQcm9ncmFtaTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVh
bnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkKIHsKICAgICBJ
UEM6OkFycmF5UmVmZXJlbmNlPGJvb2w+IHZhbHVlUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFu
dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0Qm9vbGVhbnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudihwbmFtZSwgdmFsdWUuYnVmU2l6
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnY6OlJlcGx5
KHZhbHVlUmVwbHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkKICAgICAgICAgbWVtY3B5
KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGJv
b2wpKTsKICAgICAKQEAgLTM5Nyw0MiArMzk3LDQyIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xib29s
CiBHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcigpCiB7CiAg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEVycm9yOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEVycm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0RXJyb3I6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBh
dHRhY2htZW50LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9z
KTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFN0cmluZyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7
CiAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2coYXJnMCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2c6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2co
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9M
b2c6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwog
fQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJu
VmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xpbnQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzAsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0g
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJp
KGFyZzAsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFk
ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFNoYWRlcmkoYXJnMCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFNoYWRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQogCiBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hh
ZGVySW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgU3RyaW5nIHJldHVyblZh
bHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCAx
MF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclByZWNpc2lvbkZvcm1h
dChHQ0dMZW51bSBzaGFkZXJUeXBlLAogewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dCwgMj4gcmFuZ2VSZXBseTsKICAgICBpbnQzMl90IHByZWNpc2lvblJlcGx5ID0geyB9OwotICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclByZWNpc2lvbkZv
cm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lzaW9uUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQo
c2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBseShyYW5nZVJlcGx5LCBwcmVjaXNp
b25SZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KSB7CiAgICAgICAgIG1lbWNweShy
YW5nZS5kYXRhLCByYW5nZVJlcGx5LmRhdGEoKSwgcmFuZ2UuYnVmU2l6ZSAqIHNpemVvZihpbnQz
Ml90KSk7CiAgICAgICAgIGlmIChwcmVjaXNpb24pCkBAIC00NTEsMjggKzQ1MSwyOCBAQCB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChH
Q0dMZW51bSBzaGFkZXJUeXBlLAogU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgU3RyaW5nIHJl
dHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJTb3VyY2UoYXJnMCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlOjpSZXBseShyZXR1cm5WYWx1ZSks
IDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGZsb2F0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBwbmFtZSkKIHsKICAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmYo
dGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4
UGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBf
cyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyaSh0YXJn
ZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJh
bWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsK
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBs
b2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1ZSkKIHsKICAgICBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRVbmlmb3JtZnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRp
b24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFVuaWZvcm1mdjo6UmVwbHkodmFsdWVSZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0
KQogICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1
ZlNpemUgKiBzaXplb2YoZmxvYXQpKTsKICAgICAKQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0
IHByb2dyYW0sIEdDR0xpbgogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRV
bmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
U3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
IHZhbHVlUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZh
bHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZv
cm1pdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVm
U2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2OjpS
ZXBseSh2YWx1ZVJlcGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1l
bWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVv
ZihpbnQzMl90KSk7CiAgICAgCkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaW4KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1
aW50PiB2YWx1ZSkKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZVJl
cGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVm
U2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdjo6
UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXY6OlJlcGx5
KHZhbHVlUmVwbHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkKICAgICAgICAgbWVtY3B5
KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKHVp
bnQzMl90KSk7CiAgICAgCkBAIC00OTksMzI1ICs0OTksMzI1IEBAIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0s
IEdDR0xpCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1M
b2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAg
ICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9j
YXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VW5pZm9ybUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAogR0NHTHNpemVpcHRyIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwgR0NHTGVudW0gcG5hbWUp
CiB7CiAgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoaW5kZXgs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1
ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMc2l6ZWlwdHI+KHJldHVyblZh
bHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpoaW50KEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SGludCh0YXJnZXQsIG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkhpbnQodGFyZ2V0LCBtb2RlKSk7CiB9CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmlzQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29s
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNCdWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNCdWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIEdDR0xib29sZWFuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZChHQ0dMZW51bSBjYXApCiB7CiAgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzRW5hYmxlZChjYXApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzRW5hYmxlZDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc0VuYWJsZWQoY2FwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc0VuYWJsZWQ6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIEdDR0xib29sZWFu
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyKGFyZzApLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXI6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcihh
cmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyOjpS
ZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIGJvb2wg
cmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1Byb2dyYW0oYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzUHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1Byb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIEdDR0xib29sZWFuIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNSZW5kZXJidWZmZXIoYXJnMCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNSZW5kZXJidWZmZXI6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNSZW5kZXJidWZmZXIo
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNSZW5kZXJidWZmZXI6
OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xi
b29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmlzU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29s
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNTaGFkZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNTaGFkZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIEdDR0xib29sZWFuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
CiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJlKGFyZzApLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5lV2lkdGgoR0NHTGZsb2F0IGFy
ZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmVX
aWR0aChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5lV2lkdGgoYXJnMCkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6TGlua1Byb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGlua1Byb2dyYW0oYXJn
MCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVp
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSkpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3Rvciwg
R0NHTGZsb2F0IHVuaXRzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpQb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZm
ZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVydCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlQ292ZXJh
Z2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxib29sPihpbnZlcnQpKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2Npc3NvcihHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTY2lzc29yKHgsIHksIHdpZHRoLCBo
ZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCkp
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZShQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgYXJnMSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2hhZGVyU291cmNlKGFyZzAsIGFyZzEp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlNoYWRlclNvdXJjZShhcmcwLCBhcmcxKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmMoR0NHTGVudW0gZnVu
YywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShHQ0dMZW51
bSBmYWNlLCBHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFzaykKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmNTZXBh
cmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxG
dW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2soR0NHTHVpbnQgbWFzaykKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2sobWFzayks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2sobWFzaykpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0NHTGVudW0gZmFj
ZSwgR0NHTHVpbnQgbWFzaykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6U3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3AoR0NHTGVudW0gZmFpbCwgR0NHTGVudW0g
emZhaWwsIEdDR0xlbnVtIHpwYXNzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpTdGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpTdGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwg
R0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNzKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3BTZXBhcmF0ZShm
YWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNl
cGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51
bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFtKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFtKSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0ZXJpKHRhcmdldCwg
cG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0ZXJpKHRhcmdldCwg
cG5hbWUsIHBhcmFtKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWYobG9jYXRpb24sIHgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZihsb2NhdGlvbiwgeCkpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFmdihsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSks
IHYuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4KQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWkobG9jYXRpb24sIHgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCkpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0
YSksIHYuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYo
bG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZihsb2NhdGlvbiwg
eCwgeSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmZ2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJm
dihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4
LCBHQ0dMaW50IHkpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTJpKGxvY2F0aW9uLCB4LCB5KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
PiB2KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtMml2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0yaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRp
b24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZihsb2NhdGlvbiwgeCwg
eSwgeikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0z
ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2Z2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNm
dihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xpbnQgeikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xpbnQ+IHYpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0zaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEp
LCB2LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NH
TGZsb2F0IHosIEdDR0xmbG9hdCB3KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwgdykpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSks
IHYuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtNGkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQg
eiwgR0NHTGludCB3KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwgdykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYu
YnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9v
bD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IHZhbHVlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
dmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
TWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUu
ZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRp
b24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHN0
YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFtKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVc2VQcm9n
cmFtKGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2YWxp
ZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWYWxpZGF0ZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VmFsaWRhdGVQcm9ncmFtKGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZs
b2F0IHgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZl
cnRleEF0dHJpYjFmKGluZGV4LCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIx
ZihpbmRleCwgeCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZl
cnRleEF0dHJpYjFmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAx
PiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlZlcnRleEF0dHJpYjFmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDE+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMu
ZGF0YSksIHZhbHVlcy5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NH
TGZsb2F0IHkpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWIyZihpbmRleCwgeCwgeSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0LCAyPiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlZlcnRleEF0dHJpYjJmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dCwgMj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVz
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQq
Pih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxv
YXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeiksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVp
bnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIzZnYoaW5k
ZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
ZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliM2Z2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6
ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQg
eiwgR0NHTGZsb2F0IHcpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdykpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRmdihpbmRleCwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZh
bHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWI0ZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYlBvaW50ZXIo
R0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4g
bm9ybWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYlBvaW50
ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0PGJvb2w+KG5vcm1hbGl6ZWQpLCBzdHJp
ZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxib29sPihu
b3JtYWxpemVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZpZXdwb3J0KEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZpZXdwb3J0KHgsIHksIHdpZHRo
LCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWln
aHQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVzYWdlKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMCh0
YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJ1ZmZlckRhdGEwKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzEpLCB1
c2FnZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRh
dGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVu
dW0gdXNhZ2UpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJ1ZmZlckRhdGExKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpLCB1c2Fn
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSksIHVzYWdlKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihvZmZzZXQpLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGFSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxz
MCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwOjpSZXBseShkYXRhUmVw
bHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFk
blBpeGVsczAoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHko
ZGF0YVJlcGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweShk
YXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRhdGEuYnVmU2l6ZSAqIHNpemVvZih1aW50OF90
KSk7CiAgICAgCkBAIC04MjUsOTcgKzgyNSw5NyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgdwog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczEoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRl
eEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSkp
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1h
Z2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQxKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2Vk
VGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGJvcmRlciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQxKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBy
ZXNzZWRUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1
YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1h
Z2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
THNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdl
U2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xzaXplaSBj
b3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQs
IHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZChtb2Rl
LCBmaXJzdCwgY291bnQsIHByaW1jb3VudCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJp
bWNvdW50KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
cmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihvZmZzZXQpLCBwcmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50
c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNl
dCksIHByaW1jb3VudCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
YkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
YkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpKTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheSgpCiB7CiAgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5KCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZh
bHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJy
YXkoYXJnMCkpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojppc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29sIHJldHVy
blZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNWZXJ0ZXhBcnJheShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1ZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCaW5kVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRl
eEFycmF5KGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b3B5QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdl
dCwgR0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6
ZWlwdHIgYXJnNCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdldCwgd3JpdGVUYXJnZXQsIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHdyaXRlT2Zmc2V0
KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5
QnVmZmVyU3ViRGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlYWRPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4od3JpdGVPZmZzZXQpLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oYXJnNCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4gZGF0YVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRhdGFSZXBs
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1
ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgZGF0YS5i
dWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJE
YXRhOjpSZXBseShkYXRhUmVwbHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkKICAgICAg
ICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZTaXplICogc2l6
ZW9mKHVpbnQ4X3QpKTsKICAgICAKQEAgLTkyMyw0NTEgKzkyMyw0NTEgQEAgdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0cgogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFt
ZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dM
aW50IHNyY1kxLCBHQ0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBH
Q0dMaW50IGRzdFkxLCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXIo
c3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBt
YXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlcihzcmNYMCwg
c3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZp
bHRlcikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVm
ZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgUGxh
dGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRl
eHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllciksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2ht
ZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMy
X3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50
cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0
YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSksIHgs
IHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVTdWJGcmFt
ZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVm
U2l6ZSksIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZEJ1ZmZlcihzcmMpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlJlYWRCdWZmZXIoc3JjKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNh
bXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0
b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhTdG9yYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMc2l6ZWkgZGVwdGgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIGRlcHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlM0QodGFy
Z2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IHBpeGVscykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlw
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0QxKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5
cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpU
ZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdl
M0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xp
bnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpUZXhTdWJJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwg
cGl4ZWxzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQg
eG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9m
ZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4
U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0
YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4
SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QxKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNp
emUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b21wcmVzc2VkVGV4SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21w
cmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4
U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
MCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXpl
KSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Zm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1h
Z2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwogfQogCiBHQ0dMaW50IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uKHBy
b2dyYW0sIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdE
YXRhTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0x
dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWkobG9jYXRpb24sIHYwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMXVpKGxvY2F0aW9uLCB2MCkpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NH
THVpbnQgdjAsIEdDR0x1aW50IHYxKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVp
bnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2Miks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2MikpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWkoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MiwgR0NHTHVp
bnQgdjMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2MykpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMXVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWl2KGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWl2KGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWl2KGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1h
dHJpeDJ4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4
M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwg
ZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bv
c2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBz
dGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNf
Y2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDRmdihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdD
R0xmbG9hdD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFu
c3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2Up
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
Ym9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4
MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwg
ZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxv
Y2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgzeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNf
Y2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxi
b29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2Up
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdykpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0aXYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQsIDQ+IHZhbHVlcykKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRp
dihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0
PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSks
IHZhbHVlcy5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYkk0dWkoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50
IHksIEdDR0x1aW50IHosIEdDR0x1aW50IHcpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVp
dihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
STR1aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3QsIDQ+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3QsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih2YWx1
ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50
IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSVBvaW50ZXIo
aW5kZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVt
ZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFydCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6
ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3UmFuZ2VFbGVtZW50cyhtb2Rl
LCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQs
IGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0
IEdDR0xlbnVtPiBidWZzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVm
U2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1
ZmZlcml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMaW50PiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5k
YXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcml2
KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSkp
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVydWl2
KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
dWludD4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDbGVhckJ1ZmZlcnVpdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih2YWx1ZXMuZGF0
YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJ1aXYo
YnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZ2
KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IHZhbHVlcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZh
bHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmdihidWZmZXIs
IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVm
ZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2ls
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1
ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCkp
OwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVF1ZXJ5KCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5KCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnk6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeTo6UmVwbHkocmV0dXJu
VmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVy
eSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRl
UXVlcnkocXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSk7CiB9
CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUXVlcnkoUGxh
dGZvcm1HTE9iamVjdCBxdWVyeSkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNRdWVyeShxdWVy
eSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNRdWVyeTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5KHF1ZXJ5KSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5OjpSZXBseShyZXR1cm5W
YWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJu
VmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVl
cnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVl
cnkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeSkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRh
cmdldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5k
UXVlcnkodGFyZ2V0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQpKTsKIH0K
IAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVy
eShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0UXVlcnkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0UXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0UXVlcnkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0UXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMdWludCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3QgcXVlcnksIEdDR0xlbnVt
IHBuYW1lKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aShxdWVy
eSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2Jq
ZWN0dWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0UXVlcnlPYmplY3R1aShxdWVyeSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIoKQogewogICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJu
IHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
bGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTYW1wbGVyKHNhbXBsZXIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNhbXBsZXIoc2FtcGxlcikpOwogfQogCiBHQ0dMYm9vbGVh
biBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2FtcGxlcihzYW1wbGVyKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXI6OlJlcGx5KHJldHVy
blZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1
cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFNh
bXBsZXIoR0NHTHVpbnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kU2FtcGxlcih1bml0LCBz
YW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kU2FtcGxlcih1bml0LCBzYW1wbGVyKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRl
cmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJh
bSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxl
clBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpT
YW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSwgcGFyYW0pKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNh
bXBsZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRl
cmYoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSk7CiB9CiAKIEdDR0xmbG9hdCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNh
bXBsZXIsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9Owot
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxl
clBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVy
Zjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9
CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBp
bnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBs
ZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsK
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xzeW5jIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRmaWVsZCBm
bGFncykKIHsKICAgICB1aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZlbmNlU3luYyhjb25kaXRpb24sIGZs
YWdzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmM6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jKGNv
bmRpdGlvbiwgZmxhZ3MpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZlbmNl
U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHJldHVyblZhbHVlKSk7CiB9CiAK
IEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyhHQ0dMc3lu
YyBhcmcwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OklzU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1N5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU3luYyhHQ0dMc3luYyBhcmcwKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTeW5jKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8aW50cHRyX3Q+KGFyZzApKSkpOwogfQogCiBHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpjbGllbnRXYWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxh
Z3MsIEdDR0x1aW50NjQgdGltZW91dCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVu
dFdhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90
PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odGltZW91dCkpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5jOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5jKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdz
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odGltZW91dCkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwog
ICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp3YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xp
bnQ2NCB0aW1lb3V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGltZW91dCkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJl
dF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0aW1l
b3V0KSkpOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN5
bmNpKEdDR0xzeW5jIGFyZzAsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTeW5jaShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4oYXJnMCkpLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0U3luY2k6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U3luY2koc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGFyZzApKSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFN5bmNpOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7
IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVh
dGVUcmFuc2Zvcm1GZWVkYmFjaygpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJl
dHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRm
b3JtR0xPYmplY3QgaWQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
ZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCkpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3Qg
aWQpCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1G
ZWVkYmFjayhpZCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zv
cm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybUdMT2JqZWN0IGlkKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBpZCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdDR0xl
bnVtIHByaW1pdGl2ZU1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kVHJhbnNmb3JtRmVlZGJhY2so
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRUcmFu
c2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFRyYW5zZm9ybUZlZWRiYWNr
KCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ3MoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdmFyeWluZ3MsIEdDR0xlbnVtIGJ1ZmZlck1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJv
Z3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5m
byYgYXJnMikKIHsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nOjpS
ZXBseShhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmc6OlJlcGx5KGFyZzIpLCAxMF9zKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9ybUZl
ZWRiYWNrKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBhdXNlVHJhbnNm
b3JtRmVlZGJhY2soKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJCYXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVp
bnQgaW5kZXgsIFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBi
dWZmZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgs
IGJ1ZmZlcikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRC
dWZmZXJSYW5nZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2Jq
ZWN0IGJ1ZmZlciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBhcmc0KQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyUmFuZ2Uo
dGFyZ2V0LCBpbmRleCwgYnVmZmVyLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KGFyZzQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVy
UmFuZ2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzQpKSk7CiB9CiAKIFZlY3RvcjxHQ0dMdWludD4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUluZGljZXMoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVzKQogewog
ICAgIFZlY3Rvcjx1aW50MzJfdD4gcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFt
LCB1bmlmb3JtTmFtZXMpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVu
aWZvcm1JbmRpY2VzOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6OlJlcGx5KHJldHVy
blZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBWZWN0b3I8R0NH
TGludD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybXMoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVpbnQ+JiB1bmlmb3JtSW5k
aWNlcywgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVmVjdG9yPGludDMyX3Q+IHJldHVyblZhbHVl
ID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtczo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jt
cyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3Mp
OwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9n
cmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05hbWUpCiB7CiAgICAgdWludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleDo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlm
b3JtQmxvY2tJbmRleChwcm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFs
dWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFN0cmluZyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3Jt
R0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpCiB7CiAgICAgU3Ry
aW5nIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCB1bmlmb3Jt
QmxvY2tJbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIHVuaWZvcm1CbG9j
a0luZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlm
b3JtQmxvY2tOYW1lOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
QmxvY2tCaW5kaW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgsIEdDR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3Jh
bSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHVu
aWZvcm1CbG9ja0JpbmRpbmcpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1
bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFt
cykKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtc1JlcGx5OwotICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgs
IHBuYW1lLCBwYXJhbXMuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJs
b2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMuYnVmU2l6ZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAg
ICAgIG1lbWNweShwYXJhbXMuZGF0YSwgcGFyYW1zUmVwbHkuZGF0YSgpLCBwYXJhbXMuYnVmU2l6
ZSAqIHNpemVvZihpbnQzMl90KSk7CiAgICAgCkBAIC0xMzc2LDkwICsxMzc2LDkwIEBAIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NH
THVpbnQgcHJvZ3JhbSwgR0NHCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUg
PSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
Qjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVyQU5H
TEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGludCBz
cmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NHTGlu
dCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUo
c3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBt
YXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNy
Y1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFz
aywgZmlsdGVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6
ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVz
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICB1aW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVMoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUzo6
UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVWZXJ0ZXhBcnJheU9FUyhhcmcwKSk7CiB9CiAKIEdDR0xib29sZWFuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTKGFyZzApLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVM6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJh
eU9FUyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFy
cmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhB
cnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJn
MCkpOwogfQogCiBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNs
YXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBTdHJp
bmcgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFO
R0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEU6OlJlcGx5KHJldHVy
blZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmlu
ZyYgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SW5zZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW5zZXJ0RXZl
bnRNYXJrZXJFWFQoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJr
ZXJFWFQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb3BHcm91cE1hcmtlckVYVCgpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bh
bjxjb25zdCBHQ0dMZW51bT4gYnVmcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRh
dGEpLCBidWZzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdD
R0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUo
bW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBwcmltY291
bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUs
IGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2
aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShpbmRleCwgZGl2aXNvcikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykK
IHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtc1JlcGx5OwotICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwgcGFy
YW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVy
bmFsZm9ybWF0aXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQsIGludGVy
bmFsZm9ybWF0LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEludGVybmFsZm9ybWF0aXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgMTBf
cyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweShwYXJhbXMuZGF0YSwgcGFy
YW1zUmVwbHkuZGF0YSgpLCBwYXJhbXMuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CiAgICAg
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzg4
YTM0NDQ4Yzk1YTc5ZjUxZmRmMWE2YjVjMzgyYzI5YmQyZWU4OC4uMDRhOWFkOTVlZWU2YjAwODMw
N2MzZDI2ZjJlYjZkYTg5YTFlOTdkZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTEyLTA4ICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nlc3Mg
SVBDIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBjdXJyZW50IFdlYktpdCBJUEMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHdpcAorCisgICAgICAgICogU2Ny
aXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorCiAyMDIwLTEyLTE0ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBNZWRpYUZvcm1hdFJlYWRlci5idW5kbGUg
ZmFpbHMgdG8gbG9hZCBpbiBXZWJLaXRUZXN0UnVubmVyCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2Vi
Z2wKaW5kZXggZjE2YjQyMjI5Y2YyZjgyOGM2NmM3ZTdiNDE3NzNjMmViZTQ0MzExNC4uMjdkMTMw
YWRhMjEyZjhkOWMzNjA0MWIyZDcwMjJkOTU4N2M4NDMwMCAxMDA3NTUKLS0tIGEvVG9vbHMvU2Ny
aXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbApAQCAtODksNyArODksNyBAQCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlID0gKAog
ICAgIHRlbXBsYXRlX3ByZWFtYmxlCiAgICAgKyAiIiIjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoV0VCR0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5v
dFJlZkNvdW50ZWQge3sKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJl
ZkNvdW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3Bs
YXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cwpAQCAtOTks
NiArOTksNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3Vu
dGVkIHt7CiAjZW5kaWYKICAgICB2b2lkIEVuc3VyZUV4dGVuc2lvbkVuYWJsZWQoU3RyaW5nIGV4
dGVuc2lvbikKICAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCisgICAgdm9pZCBT
dHJlYW1XYWtlVXAoKSBXYW50c0Nvbm5lY3Rpb24gLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgbW92
ZWQgdG8gbWVzc2FnZXMucHkKIHt9CiB9fQogCkBAIC01ODcsNyArNTg4LDcgQEAgY2xhc3Mgd2Vi
a2l0X2lwY19jcHBfcHJveHlfaW1wbChvYmplY3QpOgogICAgICAgICBpc19hc3luYyA9IHNlbGYu
cmV0dXJuX3R5cGUuaXNfdm9pZCgpIGFuZCBsZW4ob3V0X2V4cHJzKSA9PSAwCiAgICAgICAgIGlm
IGlzX2FzeW5jOgogICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKLSAgICAgICAgICAg
ICAgICBmInNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2df
bmFtZX0oe2luX2V4cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsiLAorICAg
ICAgICAgICAgICAgIGYic2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ontz
ZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSk7IiwKICAgICAgICAgICAgIF0KICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gIiIKQEAgLTU5OSw3ICs2MDAsNyBAQCBjbGFz
cyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAg
ICgifSIgaWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKICAgICAgICAg
ICAgICAgICBdCiAgICAgICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWwotICAgICAgICAgICAg
ICAgIGYie3NlbmRfcmVzdWx0fXNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfTo6UmVwbHkoe291dF9leHByc30pLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7IiwKKyAgICAgICAgICAgICAgICBmIntzZW5k
X3Jlc3VsdH1zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxm
Lm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ojp7c2VsZi5tc2dfbmFtZX06OlJlcGx5KHtvdXRfZXhwcnN9KSwgMTBfcyk7IiwKICAgICAgICAg
ICAgIF0KIAogCg==
</data>
<flag name="commit-queue"
          id="433716"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416240</attachid>
            <date>2020-12-15 06:45:22 -0800</date>
            <delta_ts>2020-12-15 07:38:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20201215164520.patch</filename>
            <type>text/plain</type>
            <size>186996</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY4NGM5ZjE3M2Y3M2ExOTYy
YjRjZjRmNjliNTg1ZmEzMDU0NmVhZTYuLmYyYWExMDk4ZTk0NzM3MjYzYTRkNDg0MmY2NDM3NWI1
NThjZTQ0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMxIEBACisyMDIwLTEyLTA4ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBjdXJyZW50IFdlYktpdCBJUEMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNl
cHQgb2YgZGVzdGluYXRpb24gbWVzc2FnZSBzdHJlYW0uIElQQyBtZXNzYWdlcyBjYW4KKyAgICAg
ICAgYmUgc2VudCBkaXJlY3RseSB0byB0aGUgcmVjZWl2aW5nIGRlc3RpbmF0aW9uIHdpdGggTWVz
c2FnZVN0cmVhbVNlbmRlcgorICAgICAgICBhbmQgcmVjZWl2ZWQgd2l0aCBNZXNzYWdlU3RyZWFt
UmVjZWl2ZXIuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYXMgZm9sbG93czoKKyAgICAgICAgU2Vu
ZGVyIHNoYXJlcyB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhIHdpdGggdGhlIGRlc3RpbmF0aW9uIHdo
ZW4gY3JlYXRpbmcKKyAgICAgICAgdGhlIGRlc3RpbmF0aW9uLgorCisgICAgICAgIElmIHRoZSBt
ZXNzYWdlIGZpdHMgdG8gdGhlIHN0cmVhbSBzaGFyZWQgbWVtb3J5IGFyZWEsIHdyaXRlIGl0IHRo
ZXJlLgorICAgICAgICBPdGhlcndpc2Ugc2VuZCBpdCB2aWEgbm9ybWFsIElQQyBhcyBvdXQgb2Yg
bGluZSBtZXNzYWdlLgorCisgICAgICAgIFJlY2VpdmVyIHdhaXRzIGZvciBub3JtYWwgSVBDIG1l
c3NhZ2VzLCBpdCBkb2VzIG5vdCBkbyBhbnl0aGluZyBvdXQgb2Ygb3JkaW5hcnkKKyAgICAgICAg
dW50aWwgYSB3YWtldXAgbWVzc2FnZSBpcyByZWNlaXZlZC4gVGhlbiByZWNlaXZlciB3aWxsIHBy
b2Nlc3MgdGhlIHN0cmVhbQorICAgICAgICB1bnRpbCBzdHJlYW0gaGFzIG5vIG1vcmUgbWVzc2Fn
ZXMgb3IgdW50aWwgb3V0IG91dCBvZiBsaW5lIG1lc3NhZ2UgbWFya2VyIGlzIHJlYWNoZWQuCisK
KyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9uIGFycml2ZSBhcyBiZWZvcmUsIGlu
IG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAgICBtZXNzYWdlLCBhbiBlbnRyeSBp
cyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2lsbCBzdG9wIHByb2Nlc3NpbmcgdGhl
CisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxsIGNvbnRpbnVlIG9uY2UgdGhlIG91
dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4gcHJvY2Vzc2VkLgorCisgICAgICAg
IFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0cmVhbSBzaW11bHRhbmVvdXMgdG8g
dGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1lc3NhZ2VzLiBUaGlzIGlzIGltcGxl
bWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMgc2VuZGVyIGFuZCByZWNlaXZlcgor
ICAgICAgICBwb2ludGVycy4KKworICAgICAgICBQZXJmb3JtYW5jZSBpbXBhY3QgKGlNYWMgUHJv
KToKKyAgICAgICAgICAgIC0gTW90aW9uTWFyayB0cmlhbmdsZXM6IDgwMCBwb2ludHMgLT4gNDUw
MCBwb2ludHMKKyAgICAgICAgICAgICAgKH44ODAwIHBvaW50cyBuby1HUFVQKQorICAgICAgICAg
ICAgLSBXZWJHTCBzYW1wbGVzIEFxdWFyaXVtOiAxMDAwIGZpc2ggfjYwZnBzIC0+IDEwMDAwIGZp
c2ggfjYwZnBzCisgICAgICAgICAgICAgICh+MTAwMDAgZmlzaCB3aXRoIG5vLUdQVVApCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjppc091dE9m
TGluZVN0cmVhbU1lc3NhZ2UgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVy
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rlc3RpbmF0aW9uU3RyZWFtLmg6IEFkZGVkLgor
ICAgICAgICAoSVBDOjpEZXN0aW5hdGlvblN0cmVhbUJhc2U6OkRlc3RpbmF0aW9uU3RyZWFtQmFz
ZSk6CisgICAgICAgIChJUEM6OkRlc3RpbmF0aW9uU3RyZWFtQmFzZTo6aGVhZGVyU2l6ZSk6Cisg
ICAgICAgIChJUEM6OkRlc3RpbmF0aW9uU3RyZWFtQmFzZTo6aGVhZGVyIGNvbnN0KToKKyAgICAg
ICAgKElQQzo6RGVzdGluYXRpb25TdHJlYW1CYXNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OkVuY29kZXIp
OgorICAgICAgICAoSVBDOjpFbmNvZGVyOjpyZXNlcnZlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvRW5jb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VGbGFncy5oLgorICAgICAgICAoSVBD
OjpNZXNzYWdlU3RyZWFtUmVjZWl2ZXI6Ok1lc3NhZ2VTdHJlYW1SZWNlaXZlcik6CisgICAgICAg
IChJUEM6Ok1lc3NhZ2VTdHJlYW1SZWNlaXZlcjo6c3RyZWFtV2FrZVVwKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVNlbmRlci5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6
TWVzc2FnZVN0cmVhbVNlbmRlcjo6TWVzc2FnZVN0cmVhbVNlbmRlcik6CisgICAgICAgIChJUEM6
Ok1lc3NhZ2VTdHJlYW1TZW5kZXI6OnNlbmQpOgorICAgICAgICAoSVBDOjpNZXNzYWdlU3RyZWFt
U2VuZGVyOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTdHJlYW1TZW5kZXI6OmRl
c3RpbmF0aW9uU3RyZWFtSGFuZGxlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNw
bGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlG
dW5jdGlvbnNHZW5lcmF0ZWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YXR0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5k
ZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJsZW5kQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jU2VwYXJhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhckNvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xlYXJEZXB0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFzayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3Jl
YXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmN1bGxGYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlRnJh
bWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGVsZXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoRnVuYyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoTWFzayk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoUmFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXRhY2hTaGFkZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmluaXNoKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Zmx1c2gpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
YW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZnJvbnRGYWNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QXR0cmliTG9jYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRC
dWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbWkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFudik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlcmkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJJbmZvTG9nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlm
b3JtZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpsaW5lV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVDb3ZlcmFnZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNjaXNzb3Ip
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaGFkZXJT
b3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
dGVuY2lsRnVuYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFzayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3ApOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0xaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZnYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2kpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2l2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRm
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm00aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFtKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmFsaWRhdGVQcm9ncmFtKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2Z2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWI0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmlld3BvcnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
SW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YkRpdmlzb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVm
ZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsaXRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZVN1
YkZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cmVhZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UyRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UzRCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJ
bWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29weVRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFMb2Nh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0xdWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMnVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTN1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm00dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTN1aXYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDNmdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRy
aXgzeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYkk0aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdSYW5nZUVs
ZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5RdWVyeSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFF1ZXJ5
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVl
cnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRR
dWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1w
bGVyUGFyYW1ldGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZmVuY2VTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFN5bmMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRyYW5zZm9ybUZl
ZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5UcmFuc2Zv
cm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJCYXNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlclJhbmdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybUluZGljZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1C
bG9ja0JpbmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXJB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlz
VmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpiaW5kVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVudE1h
cmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnB1c2hHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYpOgorCiAy
MDIwLTEyLTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbU09VUF0gV2ViU29ja2V0czogd3JvbmcgZGF0YSBzZW50IGluIHNvbWUgY2FzZXMg
d2l0aCBsaWJzb3VwIDwgMi42OApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDVjNGNhMjVkNGRhYTdkNTgxMzEx
NzBjOTcyMDNmNDA2ZWJiMWRiYTYuLjVkMmYzZWU2MGNmMzFhYTBmNmQwMDg4Nzc4MDhlZTRkYjVl
YzkwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTMwMywxMCArMzAzLDEwIEBAIHZvaWQgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpCiB9CiAKICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pCiB7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Y3JlYXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IFdURk1vdmUoc3RyZWFtKSk7CiAgICAgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDRmMmQ0NGZmYjU1MGFhNmRl
ODEwYjliZjk1MjYyMDdkNTc5ZGI0NzkuLjQ4YjExZjNhY2FkZjA3N2IyMGFjY2ExMWIzZWRmNDAy
YjJmODc1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAK
ICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pOwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29u
dGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCA4ZmMwZWZhYzkzMjE4MjIyYmIwYmM3YzIxYWFiOTE5ZTUz
YTk3MzRlLi4yNGYzNmRmNDJlZTM1ZTk3NTNhZDZlNTc2ZDE3ZWQ4ZmM0YmQ0NzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQCBtZXNzYWdlcyAtPiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENy
ZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBy
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICAgICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNr
ZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250
ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1
dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpCisgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdHJlYW0pCiAgICAgdm9pZCBSZWxlYXNlR3Jh
cGhpY3NDb250ZXh0R0woV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKQogI2VuZGlmCiAgICAgdm9pZCBDbGVhck5vd1BsYXlpbmdJ
bmZvKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IGQ4MDRkMWZhOTk5NGQ1ZmZmMzE0
MzY0ZDU5YmVmOTVlYjQ5ZWE5OTkuLjdhNThiNGZkYjUzMWQ2YWEyMTUyMTIwMDdhYjI4ODgwMzZi
ZDQ2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtMzksMTUgKzM5LDE2IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiAhUExBVEZP
Uk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKQorc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmUHRyPFNoYXJlZE1lbW9yeTo6
SGFuZGxlPiYmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQogI2VuZGlmCiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkKLSAgICA6IG1fY29u
dGV4dChXVEZNb3ZlKGNvbnRleHQpKQorUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0sIFJlZjxHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkKKyAgICA6IE1lc3NhZ2VTdHJlYW1SZWNlaXZlcihX
VEZNb3ZlKHN0cmVhbSkpCisgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAgICAs
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKSkKICAgICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggN2RiMGNm
NTE4YWJmOWJiMjVhYjMzNmRkZGUwMzk5OTI1YWEwNWYzMi4uMGIxYWQ1OTdiMDg1MDY2NmQwNzEy
MThmYmYyZTU2MmM2NDUwMmM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI5LDggKzI5
LDggQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmgiCiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KQEAgLTU3LDE2ICs1NywxNSBAQCBjbGFzcyBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKICAgICA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKKyAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTdHJlYW1SZWNlaXZlcjxSZW1vdGVHcmFw
aGljc0NvbnRleHRHTD4KICAgICAsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFw
aGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0cmVhbSk7CiAgICAgflJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKCkgb3ZlcnJpZGU7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CiAKLXByb3RlY3RlZDoKLSAgICBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+KTsKLQorcHVibGlj
OgogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CkBAIC03NSw2ICs3NCwx
MiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpIGZpbmFsOwogCisgICAgLy8gSVBDOjpNZXNzYWdlU3RyZWFtUmVjZWl2ZXIgdGVt
cGxhdGUgY29udHJhY3QuCisgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKworcHJvdGVjdGVkOgorICAgIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYs
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFtLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+KTsKKwogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3Zl
cnJpZGVzLgogICAgIHZvaWQgZGlkQ29tcG9zaXRlKCkgZmluYWw7CiAgICAgdm9pZCBmb3JjZUNv
bnRleHRMb3N0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW4KaW5kZXggYWEwMzQ3MjVmOWFhNDJmNDJiZDNjOGEwMGIwYWExODA5MGE1OWI5YS4uYTY3ZWJl
ZjRmYTEwMjZkMTZjMjlmNjM1Njk0M2YwNzY5OTY3OWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogLy8gVGhpcyBmaWxlIGlz
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBSZXNoYXBlKGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQg
UHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5j
aHJvbm91cwpAQCAtMzQsNiArMzQsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChTdHJpbmcgZXh0ZW5zaW9uKQogICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KCkKKyAgICB2b2lkIFN0cmVhbVdha2VVcCgpIFdhbnRzQ29ubmVjdGlvbiAvLyBUT0RPOiB0aGlz
IHNob3VsZCBiZSBtb3ZlZCB0byBtZXNzYWdlcy5weQogCiAgICAgdm9pZCBTZXRGYWlsTmV4dEdQ
VVN0YXR1c0NoZWNrKCkKICAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4IGU3YzQwYzk4NWNiN2Qy
NzIyODY5YTVkZmY5NjkxOTQ3MDc3YWY0NmMuLjM5NDljY2RjODE3NTZjM2QxMzcwNDdhMGYxNDc1
ZmFmMWVmYTAzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTM5
LDcgKzM5LDcgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgcHJpdmF0ZSBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CiBwdWJsaWM6Ci0gICAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlJiYgc3RyZWFtKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSgpIGZp
bmFsID0gZGVmYXVsdDsKIAogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRl
cy4KQEAgLTU1LDEzICs1NSwxMyBAQCBwcml2YXRlOgogCiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCitzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0cmVhbSkKIHsKLSAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPihuZXcgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYShhdHRyaWJ1dGVzLCBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShhdHRyaWJ1dGVzLCBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOwogfQogCi1SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBjb25uZWN0aW9u
LCBpZGVudGlmaWVyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2Vz
cyhhdHRyaWJ1dGVzLCB0aGlzKSkKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0
aW9uLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmllciwgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmJiBzdHJlYW0pCisgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRy
aWJ1dGVzLCBjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHN0cmVhbSksIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGF0dHJpYnV0ZXMsIHRoaXMpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IDJjYjc5Yjcz
MWM4ZDM1MWEyZDA1OTQ2MzYyYzVhYjhiYmFkYmRjNWUuLjIzMjYzMTZlM2I4MzdiYjBkNDNlMmNl
ZGU4YzAxOTlhM2U4NmZmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CkBAIC03NCw2ICs3NCwyNiBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYQogICAgICAgICByZXR1
cm47CiB9CiAKK0RlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogc3RyZWFtLCBzaXplX3Qg
c3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICA6IG1fYnVmZmVyIHsgc3Ry
ZWFtIH0KKyAgICAsIG1fYnVmZmVyUG9zIHsgbV9idWZmZXIgfQorICAgICwgbV9idWZmZXJFbmQg
eyBtX2J1ZmZlciArIHN0cmVhbVNpemUgfQorICAgICwgbV9idWZmZXJEZWFsbG9jYXRvcihbXSAo
Y29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9KQorICAgICwgbV9kZXN0aW5hdGlvbklEKGRlc3Rp
bmF0aW9uSUQpCit7CisgICAgQVNTRVJUKHN0cmVhbVNpemUgPj0gb3V0T2ZMaW5lU3RyZWFtTWVz
c2FnZVNpemUpOworICAgIGlmIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9idWZmZXIp
ICUgc3RyZWFtTWVzc2FnZUFsaWdubWVudCkgeworICAgICAgICBtYXJrSW52YWxpZCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZUZsYWdzKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZU5hbWUpKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKCFkZWNvZGUobV9kZXN0aW5hdGlvbklEKSkKKyAgICAgICAgcmV0dXJu
OworfQorCiBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUsIENvbnN0cnVjdFdpdGhvdXRIZWFkZXJUYWcpCiAgICAgOiBtX2J1ZmZlciB7IGJ1
ZmZlciB9CiAgICAgLCBtX2J1ZmZlclBvcyB7IG1fYnVmZmVyIH0KQEAgLTg0LDYgKzEwNCw3IEBA
IERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6
ZSwgQ29uc3RydWN0V2l0aG91dEhlYWRlCiAgICAgICAgIG1hcmtJbnZhbGlkKCk7CiB9CiAKKwog
RGVjb2Rlcjo6fkRlY29kZXIoKQogewogICAgIEFTU0VSVChtX2J1ZmZlcik7CkBAIC0xMTUsNiAr
MTM2LDEyIEBAIGJvb2wgRGVjb2Rlcjo6c2hvdWxkVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JU
ZXN0aW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9tZXNzYWdlRmxhZ3MuY29udGFpbnMoTWVzc2Fn
ZUZsYWdzOjpVc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcpOwogfQogCitib29sIERl
Y29kZXI6OmlzT3V0T2ZMaW5lU3RyZWFtTWVzc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bWVzc2FnZUZsYWdzLmNvbnRhaW5zKE1lc3NhZ2VGbGFnczo6U3RyZWFtTWVzc2FnZU91dE9mTGlu
ZSk7Cit9CisKKwogI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgRGVjb2Rlcjo6c2V0SW1wb3J0YW5j
ZUFzc2VydGlvbihzdGQ6OnVuaXF1ZV9wdHI8SW1wb3J0YW5jZUFzc2VydGlvbj4gYXNzZXJ0aW9u
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IDM0NGNlNjg4MmZjOTA5
ODRiMmZhNTdiZjljNDhiOTY1MGUwZmY3NGUuLjFjMmE0YTI3Yzg4YTVjYzlhMGVlNjY1OTk1ODdj
ODc1ZDg3Mjg3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAgLTQ5LDEx
ICs0OSwxNSBAQCBjbGFzcyBEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
LCBWZWN0b3I8QXR0YWNobWVudD4mJik7CiAgICAgZXhwbGljaXQgRGVjb2Rlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3Ip
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJik7CisgICAgZXhw
bGljaXQgRGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1TaXplLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKICAgICB+RGVjb2RlcigpOwogCiAgICAgRGVjb2Rlcihj
b25zdCBEZWNvZGVyJikgPSBkZWxldGU7CiAgICAgRGVjb2RlcihEZWNvZGVyJiYpID0gZGVsZXRl
OwogCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc3RyZWFtTWVzc2FnZUFsaWdubWVudCA9
IGFsaWdub2YodWludDY0X3QpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG91dE9mTGlu
ZVN0cmVhbU1lc3NhZ2VTaXplID0gc2l6ZW9mKHVpbnQ2NF90KSAqIDI7CisKICAgICBSZWNlaXZl
ck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZSht
X21lc3NhZ2VOYW1lKTsgfQogICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQogICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uSUQ7IH0KQEAgLTYxLDYgKzY1LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNTeW5jTWVzc2FnZSgpIGNvbnN0OwogICAgIFNob3VsZERpc3BhdGNoV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkgc2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5j
UmVwbHkoKSBjb25zdDsKICAgICBib29sIHNob3VsZFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9y
VGVzdGluZygpIGNvbnN0OworICAgIGJvb2wgaXNPdXRPZkxpbmVTdHJlYW1NZXNzYWdlKCkgY29u
c3Q7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzZXRJbXBvcnRhbmNlQXNzZXJ0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxJbXBvcnRhbmNlQXNzZXJ0aW9uPik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXN0aW5hdGlvblN0cmVhbS5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGVzdGluYXRpb25TdHJlYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOWNkYzE0MWFm
NzIxMTZhYmQ4NTc2ZDQzMWIzMTI3ODllNzdmYWNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVzdGluYXRpb25TdHJlYW0uaApAQCAtMCwwICsxLDMyMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2lu
Y2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3
dGYvQXRvbWljcy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworCisvLyBUaGUgSVBDIGRlc3RpbmF0
aW9uIHN0cmVhbSBpcyBhIHR3by13YXkgc3RyZWFtIG9mIG1lc3NhZ2VzIHRvIGEgYmV0d2VlbiBh
IHNlbmRlciBhbmQgdGhlCisvLyBkZXN0aW5hdGlvbiByZWNlaXZlci4KKy8vCisvLyBJdCBpcyBp
bXBsZW1lbnRlZCBhcyBEZXN0aW5hdGlvblN0cmVhbVNlbmRlciBhbmQgRGVzdGluYXRpb25TdHJl
YW1SZWNlaXZlci4gRWl0aGVyIG9mIHRoZXNlCisvLyBjYW4gYmUgIndyaXRpbmciIG9yICJyZWFk
aW5nIi4gU2VuZGVyIGlzIHRoZSBpbnN0YW5jZSBzZW5kaW5nIHRoZSBzdHJlYW0gb3ZlciB0byB0
aGUgcmVjZWl2ZXIuCisvLyBGSVhNRTogSW4gY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IGFz
eW5jaHJvbm91cyBtZXNzYWdlcyBnbyB0aHJvdWdoIHRoZSBzdHJlYW0uIFRoaXMgbWVhbnMKKy8v
IHRoZSBzZW5kZXIgaXMgb25seSB3cml0aW5nIGFuZCByZWNlaXZlciBpcyBvbmx5IHJlYWRpbmcu
CisvLworLy8gVGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdpbGwgcmVjZWl2ZSBtZXNzYWdlcyBp
biBvcmRlciBfZm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdlc18uCisvLyBUaGUgd2hvbGUgY29u
bmVjdGlvbiBtZXNzYWdlIG9yZGVyIGlzIG5vdCBwcmVzZXJ2ZWQuCisKKworLy8gU3RyZWFtQnVm
ZmVyIGlzIGEgc2hhcmVkIG1lbW9yeSAiYmktcGFydGl0ZSIgY2lyY3VsYXIgYnVmZmVyIHN1cHBv
cnRpbmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdlcywgc3BlY2lmaWMgZGF0YSBhbGlnbm1l
bnQgd2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUuCisvLyBEZXN0aW5hdGlvblN0cmVhbVNlbmRl
ciBhbmQgRGVzdGluYXRpb25TdHJlbWFSZWNlaXZlciB1c2UgU3RyZWFtQnVmZmVyIHRvIGNvbW11
bmljYXRlLgorLy8KKy8vIFRoZSAiYmktcGFydGl0ZSIgaXMgaGVyZSB0byBtZWFuIHRoYXQgd3Jp
dGVzIGFuZCByZWFkcyB0byB0aGUgYnVmZmVyIG11c3QgYmUKKy8vIGNvbnRpbnVvdXMuCisvLwor
Ly8gVGhlIGNsaWVudCAoc2VuZGVyIG9yIHJlY2VpdmVyKSAiYWNxdWlyZXMiIHNvbWUgYW1vdW50
IG9mIGJ1ZmZlciBkYXRhLiBJZiBidWZmZXIgaGFzIG5vCisvLyBjYXBhY2l0eSwgYWNxdWlyZSBy
ZXR1cm5zIHdpdGggemVybyBjYXBhY2l0eS4gSWYgYnVmZmVyIGhhcyBhdCBsZWFzdCBhY3F1aXJl
ZAorLy8gY2FwYWNpdHksIGFsbCB0aGUgYXZhaWxhYmxlIGNhcGFjaXR5IGlzIHJldHVybmVkLgor
Ly8KKy8vIFRoZSBjbGllbnQgInJlbGVhc2VzIiB0aGUgc29tZSBhbW91bnQgb2YgZGF0YSwgYXQg
bGVhc3QgdGhlIGFtb3VudCBhY3F1aXJlZCBidXQgcG90ZW50aWFsbHkKKy8vIG1vcmUuCisvLwor
Ly8gQm90aCBzZW5kZXIgYW5kIHJlY2VpdmVyIG11c3QgYWNxdWlyZSBzYW1lIGFtb3VudCBvZiBk
YXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhlIGFjcXVpcmUgc2VxdWVuY2UuCisvLyBJZiBzZW5k
ZXIgYWNxdWlyZXMgWCBhbmQgdGhlbiBZIGFtb3VudCwgcmVjZWl2ZXIgbXVzdCBkbyB0aGUgc2Ft
ZS4KKy8vCisvLyBUaGUgY2lyY3VsYXIgYnVmZmVyIGhhcyBmb2xsb3dpbmcgaW1wbGVtZW50YXRp
b246CisvLyAqIFNlbmRlciBvd25zIHRoZSBkYXRhIGJldHdlZW4gW3NlbmRlck9mZnNldCwgcmVj
ZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9mZnNldCA9PQorLy8gcmVjZWl2ZXJPZmZzZXQsIHNl
bmRlciBvd25zIGFsbCB0aGUgZGF0YS4KKy8vICogUmVjZWl2ZXIgb3ducyB0aGUgZGF0YSBiZXR3
ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVyT2Zmc2V0Wy4KKy8vICogVGhlIGJ1ZmZlciBjYW4g
aG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhlIGxhc3QgdmFsdWUgaXMgcmVzZXJ2
ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsLiBGSVhNRTogTWF5
YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBpZgorLy8gaXQgd291bGQgdXNlIHRo
ZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9mIHRoZSBob2xlIGFzIHRoZSBpbmRpY2F0b3IuIFRoaXMg
d291bGQgbW92ZQorLy8gdGhlIGFsaWduZWRTcGFuIGltcGxlbWVudGF0aW9uIHRvIHRoZSBTdHJl
YW1CdWZmZXIuCisvLyAqIEFsbCBhdG9taWMgdmFyaWFibGUgbG9hZHMgYXJlIHVudHJ1c3RlZCwg
c28gdGhleSdyZSBjbGFtcGVkLiBWaW9sYXRpb25zIGFyZSBub3QgcmVwb3J0ZWQsCisvLyB0aG91
Z2guCisvLyBTZWUgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuCit0ZW1wbGF0ZTxzaXplX3QgbWVz
c2FnZUFsaWdubWVudD4KK2NsYXNzIFN0cmVhbUJ1ZmZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtQnVmZmVyKTsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBTdHJlYW1CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYm
IG1lbW9yeSwgc2l6ZV90IG1lbW9yeVNpemUpCisgICAgICAgIDogbV9kYXRhU2l6ZShtZW1vcnlT
aXplIC0gaGVhZGVyU2l6ZSgpKQorICAgICAgICAsIG1fc2hhcmVkTWVtb3J5KFdURk1vdmUobWVt
b3J5KSkKKyAgICB7CisgICAgfQorCisgICAgflN0cmVhbUJ1ZmZlcigpID0gZGVmYXVsdDsKKyAg
ICBzdHJ1Y3QgSGVhZGVyIHsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gcmVjZWl2ZXJPZmZzZXQ7
CisgICAgICAgIC8vIFBhZGRpbmcgc28gdGhhdCB0aGUgdmFyaWFibGVzIG1vc3RseSBhY2Nlc3Nl
ZCBieSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGRvIG5vdCBzaGFyZSBhIGNhY2hlIGxpbmUuCisgICAg
ICAgIC8vIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBhdm9pZCBjYWNoZS1saW5lIGluZHVjZWQgcmVk
dWN0aW9uIG9mIHBhcmFsbGVsIGFjY2Vzcy4KKyAgICAgICAgdWludDY0X3QgY2FjaGVMaW5lUGFk
ZGluZ1syXTsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gc2VuZGVyT2Zmc2V0OworICAgIH07CisK
KyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBoZWFkZXJTaXplKCkKKyAgICB7CisgICAgICAg
IHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihzdGQ6Om1heF9hbGlnbl90KT4oc2l6
ZW9mKEhlYWRlcikpOworICAgIH0KKworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZz
ZXQpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IGRhdGFTaXplKCkpOwor
ICAgICAgICBpZiAob2Zmc2V0ID09IGRhdGFTaXplKCkpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICBzaXplX3QgYWxpZ25PZmZzZXQo
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGFjcXVpcmVTaXplKSBjb25zdAorICAgIHsKKyAgICAgICAg
b2Zmc2V0ID0gcm91bmRVcFRvTXVsdGlwbGVPZjxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQpOwor
ICAgICAgICBpZiAob2Zmc2V0ICsgYWNxdWlyZVNpemUgPj0gZGF0YVNpemUoKSkKKyAgICAgICAg
ICAgIG9mZnNldCA9IDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgSGVh
ZGVyJiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxIZWFkZXIqPiht
X3NoYXJlZE1lbW9yeS0+ZGF0YSgpKTsgfQorCisgICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSArIGhl
YWRlclNpemUoKTsgfQorCisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhU2l6ZTsgfQorCisgICAgLy8gVGFnIHZhbHVlIHN0b3JlZCBpbiBIZWFkZXI6OnNlbmRlck9m
ZnNldCB3aGVuIHJlY2VpdmVyIGlzIHNsZWVwaW5nLgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZyA9IDEgPDwgMzE7CisKKyAgICBX
ZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZUZvclJlY2VpdmVyKCkKKyAgICB7
CisgICAgICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgICAgICBp
ZiAoIW1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAg
ICAgIHJldHVybiB7IFdURk1vdmUoaGFuZGxlKSwgbV9zaGFyZWRNZW1vcnktPnNpemUoKSB9Owor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBzaXplX3QgbV9kYXRhU2l6ZTsKKyAgICBSZWY8
V2ViS2l0OjpTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworfTsKKworY2xhc3MgRGVzdGlu
YXRpb25TdHJlYW1TZW5kZXIgIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShEZXN0aW5hdGlvblN0cmVhbVNlbmRlcik7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluTWVzc2FnZVNpemUgPSBFbmNvZGVyOjpvdXRP
ZkxpbmVTdHJlYW1NZXNzYWdlU2l6ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNz
YWdlQWxpZ25tZW50ID0gRW5jb2Rlcjo6c3RyZWFtTWVzc2FnZUFsaWdubWVudDsKKworICAgIGV4
cGxpY2l0IERlc3RpbmF0aW9uU3RyZWFtU2VuZGVyKHNpemVfdCBzaXplKQorICAgICAgICA6IG1f
YnVmZmVyKGNyZWF0ZU1lbW9yeShzaXplKSwgc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIFJlYWQg
c3RhcnRzIGZyb20gMCB3aXRoIGxpbWl0IG9mIDAgYW5kIHJlYWRlciBzbGVlcGluZy4KKyAgICAg
ICAgaGVhZGVyKCkuc2VuZGVyT2Zmc2V0LnN0b3JlKFN0cmVhbUJ1ZmZlclR5cGU6OnNlbmRlck9m
ZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7Cisg
ICAgICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAgd2l0aCBhIGxpbWl0IG9mIHRoZSB3aG9sZSBi
dWZmZXIuCisgICAgICAgIGhlYWRlcigpLnJlY2VpdmVyT2Zmc2V0LnN0b3JlKDAsIHN0ZDo6bWVt
b3J5X29yZGVyX3JlbGF4ZWQpOworICAgIH0KKyAgICBzdHJ1Y3QgU3BhbiB7CisgICAgICAgIHVp
bnQ4X3QqIHB0cjsKKyAgICAgICAgc2l6ZV90IGNhcGFjaXR5OworICAgIH07CisKKyAgICBTcGFu
IHRyeUFjcXVpcmUoKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHNlbmRlckxpbWl0ID0gc3RkOjpt
aW4oaGVhZGVyKCkucmVjZWl2ZXJPZmZzZXQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJl
KSwgZGF0YVNpemUoKSk7CisgICAgICAgIHJldHVybiBhbGlnbmVkU3BhbihtX3NlbmRlck9mZnNl
dCwgc2VuZGVyTGltaXQpOworICAgIH0KKworICAgIGVudW0gY2xhc3MgV2FrZVVwUmVhZGVyIDog
Ym9vbCB7CisgICAgICAgIE5vLAorICAgICAgICBZZXMKKyAgICB9OworCisgICAgV2FrZVVwUmVh
ZGVyIHJlbGVhc2Uoc2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBzaXplX3QgZXhwZWN0ZWRS
ZWNlaXZlckxpbWl0ID0gbV9zZW5kZXJPZmZzZXQ7CisgICAgICAgIG1fc2VuZGVyT2Zmc2V0ID0g
d3JhcE9mZnNldChhbGlnbk9mZnNldChtX3NlbmRlck9mZnNldCkgKyBzaXplKTsKKyAgICAgICAg
QVNTRVJUKG1fc2VuZGVyT2Zmc2V0IDwgZGF0YVNpemUoKSk7CisgICAgICAgIC8vIElmIHJlY2Vp
dmVyIG92ZXJ3cm90ZSB0aGUgc2VuZGVyT2Zmc2V0IHdpdGggc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJ
c1NsZWVwaW5nVGFnLCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgorICAgICAgICBzaXplX3QgcmVj
ZWl2ZXJMaW1pdCA9IGhlYWRlcigpLnNlbmRlck9mZnNldC5leGNoYW5nZShtX3NlbmRlck9mZnNl
dCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgICAgIGlmIChyZWNlaXZlckxpbWl0
ICE9IGV4cGVjdGVkUmVjZWl2ZXJMaW1pdCkKKyAgICAgICAgICAgIHJldHVybiBXYWtlVXBSZWFk
ZXI6OlllczsKKyAgICAgICAgcmV0dXJuIFdha2VVcFJlYWRlcjo6Tm87CisgICAgfQorCisgICAg
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBkZXN0aW5hdGlvblN0cmVhbUhhbmRsZSgp
CisgICAgeworICAgICAgICByZXR1cm4gbV9idWZmZXIuaGFuZGxlRm9yUmVjZWl2ZXIoKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gY3Jl
YXRlTWVtb3J5KHNpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgYXV0byBtZW1vcnkgPSBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZSk7CisgICAgICAgIGlmICghbWVtb3J5KQor
ICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuIG1lbW9yeS5yZWxlYXNlTm9uTnVs
bCgpOworICAgIH0KKworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zmc2V0KTsgfQorCisgICAgc2l6ZV90IGFs
aWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zm
c2V0KG9mZnNldCwgbWluTWVzc2FnZVNpemUpOyB9CisKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvZmZzZXQg
PCBkYXRhU2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKGxpbWl0IDwgZGF0YVNpemUoKSk7CisgICAg
ICAgIHNpemVfdCBhbGlnbmVkID0gYWxpZ25PZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgc2l6ZV90
IHNpemUgPSAwOworICAgICAgICBpZiAob2Zmc2V0IDwgbGltaXQpIHsKKyAgICAgICAgICAgIGlm
IChhbGlnbmVkID49IG9mZnNldCAmJiBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAgICAgICAg
c2l6ZSA9IGxlbihhbGlnbmVkLCBsaW1pdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgfHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAg
ICAgIHNpemUgPSBsZW4oYWxpZ25lZCwgbGltaXQpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB7IGRhdGEoKSArIGFsaWduZWQsIHNpemUgfTsKKyAgICB9CisKKyAgICBzaXplX3QgbGVuKHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKKyAgICB7CisgICAgICAgIGlmICghbGltaXQpCisg
ICAgICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAtIDEgLSBvZmZzZXQ7CisgICAgICAgIGlmIChs
aW1pdCA8PSBvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAtIG9mZnNldDsK
KyAgICAgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0IC0gMTsKKyAgICB9CisKKyAgICB1c2luZyBT
dHJlYW1CdWZmZXJUeXBlID0gU3RyZWFtQnVmZmVyPG1lc3NhZ2VBbGlnbm1lbnQ+OworCisgICAg
U3RyZWFtQnVmZmVyVHlwZTo6SGVhZGVyJiBoZWFkZXIoKSB7IHJldHVybiBtX2J1ZmZlci5oZWFk
ZXIoKTsgfQorCisgICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRh
dGEoKTsgfQorCisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
ZGF0YVNpemUoKTsgfQorCisgICAgU3RyZWFtQnVmZmVyVHlwZSBtX2J1ZmZlcjsKKyAgICBzaXpl
X3QgbV9zZW5kZXJPZmZzZXQgeyAwIH07Cit9OworCitjbGFzcyBEZXN0aW5hdGlvblN0cmVhbVJl
Y2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEZXN0aW5hdGlvblN0cmVhbVJlY2VpdmVyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBtaW5NZXNzYWdlU2l6ZSA9IEVuY29kZXI6Om91dE9mTGluZVN0cmVh
bU1lc3NhZ2VTaXplOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1l
bnQgPSBFbmNvZGVyOjpzdHJlYW1NZXNzYWdlQWxpZ25tZW50OworCisgICAgZXhwbGljaXQgRGVz
dGluYXRpb25TdHJlYW1SZWNlaXZlcihXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYg
c3RyZWFtKQorICAgIHsKKyAgICAgICAgaWYgKHN0cmVhbS5kYXRhU2l6ZSA8IFN0cmVhbUJ1ZmZl
clR5cGU6OmhlYWRlclNpemUoKSArIG1pbk1lc3NhZ2VTaXplKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjptYXAo
c3RyZWFtLmhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0
ZSk7CisgICAgICAgIGlmIChzaGFyZWRNZW1vcnktPnNpemUoKSA8IHN0cmVhbS5kYXRhU2l6ZSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9idWZmZXIgPSBtYWtlVW5pcXVlPFN0cmVh
bUJ1ZmZlclR5cGU+KHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KHN0cmVhbS5kYXRhU2l6ZSkpOworICAgIH0KKworICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KKworICAgIHN0cnVjdCBTcGFuIHsKKyAgICAgICAg
dWludDhfdCogcHRyOworICAgICAgICBzaXplX3QgY2FwYWNpdHk7CisgICAgfTsKKworICAgIFNw
YW4gdHJ5QXF1aXJlKCkKKyAgICB7CisgICAgICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gaGVh
ZGVyKCkuc2VuZGVyT2Zmc2V0LmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CisgICAg
ICAgIHJlY2VpdmVyTGltaXQgJj0gflN0cmVhbUJ1ZmZlclR5cGU6OnNlbmRlck9mZnNldFJlY2Vp
dmVySXNTbGVlcGluZ1RhZzsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IHN0ZDo6bWluKHJlY2Vp
dmVyTGltaXQsIGRhdGFTaXplKCkpOworICAgICAgICByZXR1cm4gYWxpZ25lZFNwYW4obV9yZWNl
aXZlck9mZnNldCwgcmVjZWl2ZXJMaW1pdCk7CisgICAgfQorCisgICAgU3BhbiByZWxlYXNlKHNp
emVfdCByZWFkU2l6ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWFkU2l6ZSk7CisgICAgICAg
IG1fcmVjZWl2ZXJPZmZzZXQgPSB3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1fcmVjZWl2ZXJPZmZz
ZXQpICsgcmVhZFNpemUpOworICAgICAgICBoZWFkZXIoKS5yZWNlaXZlck9mZnNldC5zdG9yZSht
X3JlY2VpdmVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKKyAgICAgICAgc2l6
ZV90IHJlY2VpdmVyTGltaXQgPSBoZWFkZXIoKS5zZW5kZXJPZmZzZXQubG9hZChzdGQ6Om1lbW9y
eV9vcmRlcl9hY3F1aXJlKTsKKyAgICAgICAgaWYgKHJlY2VpdmVyTGltaXQgPT0gbV9yZWNlaXZl
ck9mZnNldCkKKyAgICAgICAgICAgIHJlY2VpdmVyTGltaXQgPSBoZWFkZXIoKS5zZW5kZXJPZmZz
ZXQuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHJlY2VpdmVyTGltaXQsIG1fcmVjZWl2ZXJPZmZzZXQg
fCBTdHJlYW1CdWZmZXJUeXBlOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0
ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAg
ICAgICByZWNlaXZlckxpbWl0ID0gc3RkOjptaW4ocmVjZWl2ZXJMaW1pdCwgZGF0YVNpemUoKSk7
CisgICAgICAgIHJldHVybiBhbGlnbmVkU3BhbihtX3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxp
bWl0KTsKKyAgICB9Citwcml2YXRlOgorICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZz
ZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLT53cmFwT2Zmc2V0KG9mZnNldCk7IH0KKworICAg
IHNpemVfdCBhbGlnbk9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci0+YWxpZ25PZmZzZXQob2Zmc2V0LCBtaW5NZXNzYWdlU2l6ZSk7IH0KKworICAgIFNwYW4gYWxp
Z25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG9mZnNldCA8IGRhdGFTaXplKCkpOworICAgICAgICBBU1NFUlQobGltaXQgPCBkYXRhU2l6
ZSgpKTsKKyAgICAgICAgc2l6ZV90IGFsaWduZWQgPSBhbGlnbk9mZnNldChvZmZzZXQpOworICAg
ICAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgICAgIGlmIChvZmZzZXQgPCBsaW1pdCkgeworICAg
ICAgICAgICAgaWYgKG9mZnNldCA8PSBhbGlnbmVkICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAg
ICAgICAgICAgICBzaXplID0gbGVuKGFsaWduZWQsIGxpbWl0KTsKKyAgICAgICAgfSBlbHNlIGlm
IChvZmZzZXQgPiBsaW1pdCkgeworICAgICAgICAgICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0IHx8
IGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgICAgICBzaXplID0gbGVuKGFsaWduZWQsIGxp
bWl0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyBkYXRhKCkgKyBhbGlnbmVkLCBzaXpl
IH07CisgICAgfQorCisgICAgc2l6ZV90IGxlbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQp
CisgICAgeworICAgICAgICBpZiAob2Zmc2V0IDw9IGxpbWl0KQorICAgICAgICAgICAgcmV0dXJu
IGxpbWl0IC0gb2Zmc2V0OworICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAtIG9mZnNldDsKKyAg
ICB9CisKKyAgICB1c2luZyBTdHJlYW1CdWZmZXJUeXBlID0gU3RyZWFtQnVmZmVyPG1lc3NhZ2VB
bGlnbm1lbnQ+OworCisgICAgU3RyZWFtQnVmZmVyVHlwZTo6SGVhZGVyJiBoZWFkZXIoKSB7IHJl
dHVybiBtX2J1ZmZlci0+aGVhZGVyKCk7IH0KKworICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci0+ZGF0YSgpOyB9CisKKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci0+ZGF0YVNpemUoKTsgfQorCisgICAgc3RkOjp1bmlxdWVfcHRy
PFN0cmVhbUJ1ZmZlclR5cGU+IG1fYnVmZmVyOworICAgIHNpemVfdCBtX3JlY2VpdmVyT2Zmc2V0
IHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0VuY29kZXIuY3BwCmluZGV4IGU4M2EzZTRhZmY0MmE1NzU1MDVkYzhmMDczMTdhMWMxYWMx
OWRlYWUuLmFkMWU3YTkxOTVhMTBhZWE5NTgyM2RjYmI4MTA4YmZiZDIwYWQ5MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCkBAIC03Myw2ICs3MywyMCBAQCBFbmNvZGVy
OjpFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KQogICAgIGVuY29kZUhlYWRlcigpOwogfQogCitFbmNvZGVyOjpFbmNvZGVyKE1lc3NhZ2VOYW1l
IG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50OF90KiBzdHJlYW0sIHNp
emVfdCBzdHJlYW1DYXBhY2l0eSkKKyAgICA6IG1fbWVzc2FnZU5hbWUobWVzc2FnZU5hbWUpCisg
ICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25JRCkKKyAgICAsIG1fYnVmZmVyKHN0cmVh
bSkKKyAgICAsIG1fYnVmZmVyUG9pbnRlcihzdHJlYW0pCisgICAgLCBtX2J1ZmZlclNpemUoMCkK
KyAgICAsIG1fYnVmZmVyQ2FwYWNpdHkoc3RyZWFtQ2FwYWNpdHkpCisgICAgLCBtX2lzRW5jb2Rp
bmdUb1N0cmVhbSh0cnVlKQoreworICAgIGVuY29kZUhlYWRlcigpOworICAgIC8vIEZJWE1FOiBI
ZXJlIHdlIHNob3VsZCBlbmNvZGUgc3RyZWFtIGhlYWRlciBpbnN0ZWFkLCB3aXRob3V0IHRoZSBk
ZXN0aW5hdGlvbiBJRC4KKyAgICAvLyBIb3dldmVyLCB0aGUgY3VycmVudCBjb2RlIGRvZXMgbm90
IGVhc2lseSBzdXBwb3J0IHN3aXRjaGluZyB0aGUgZW5jb2Rpbmcgc2l6ZS4KK30KKwogRW5jb2Rl
cjo6RW5jb2RlcihDb25zdHJ1Y3RXaXRob3V0SGVhZGVyVGFnKQogICAgIDogbV9tZXNzYWdlTmFt
ZSgpCiAgICAgLCBtX2Rlc3RpbmF0aW9uSUQoMCkKQEAgLTg1LDkgKzk5LDExIEBAIEVuY29kZXI6
OkVuY29kZXIoQ29uc3RydWN0V2l0aG91dEhlYWRlclRhZykKIAogRW5jb2Rlcjo6fkVuY29kZXIo
KQogewotICAgIGlmIChtX2J1ZmZlciAhPSBtX2lubGluZUJ1ZmZlcikKLSAgICAgICAgZnJlZUJ1
ZmZlcihtX2J1ZmZlciwgbV9idWZmZXJDYXBhY2l0eSk7Ci0gICAgLy8gRklYTUU6IFdlIG5lZWQg
dG8gZGlzcG9zZSBvZiB0aGUgYXR0YWNobWVudHMgaW4gY2FzZXMgb2YgZmFpbHVyZS4KKyAgICBp
ZiAoIW1faXNFbmNvZGluZ1RvU3RyZWFtKSB7CisgICAgICAgIGlmIChtX2J1ZmZlciAhPSBtX2lu
bGluZUJ1ZmZlcikKKyAgICAgICAgICAgIGZyZWVCdWZmZXIobV9idWZmZXIsIG1fYnVmZmVyQ2Fw
YWNpdHkpOworICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkaXNwb3NlIG9mIHRoZSBhdHRh
Y2htZW50cyBpbiBjYXNlcyBvZiBmYWlsdXJlLgorICAgIH0KIH0KIAogYm9vbCBFbmNvZGVyOjpp
c1N5bmNNZXNzYWdlKCkgY29uc3QKQEAgLTE2MCwyMSArMTc2LDI0IEBAIHZvaWQgRW5jb2Rlcjo6
cmVzZXJ2ZShzaXplX3Qgc2l6ZSkKICAgICBpZiAoc2l6ZSA8PSBtX2J1ZmZlckNhcGFjaXR5KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBzaXplX3QgbmV3Q2FwYWNpdHkgPSByb3VuZFVwVG9BbGln
bm1lbnQobV9idWZmZXJDYXBhY2l0eSAqIDIsIDQwOTYpOwotICAgIHdoaWxlIChuZXdDYXBhY2l0
eSA8IHNpemUpCi0gICAgICAgIG5ld0NhcGFjaXR5ICo9IDI7CisgICAgc2l6ZV90IGNhcGFjaXR5
ID0gcm91bmRVcFRvQWxpZ25tZW50KG1fYnVmZmVyQ2FwYWNpdHkgKiAyLCA0MDk2KTsKKyAgICB3
aGlsZSAoY2FwYWNpdHkgPCBzaXplKQorICAgICAgICBjYXBhY2l0eSAqPSAyOwogCi0gICAgdWlu
dDhfdCogbmV3QnVmZmVyOwotICAgIGlmICghYWxsb2NCdWZmZXIobmV3QnVmZmVyLCBuZXdDYXBh
Y2l0eSkpCisgICAgdWludDhfdCogYnVmZmVyOworICAgIGlmICghYWxsb2NCdWZmZXIoYnVmZmVy
LCBjYXBhY2l0eSkpCiAgICAgICAgIENSQVNIKCk7Ci0KLSAgICBtZW1jcHkobmV3QnVmZmVyLCBt
X2J1ZmZlciwgbV9idWZmZXJTaXplKTsKLQotICAgIGlmIChtX2J1ZmZlciAhPSBtX2lubGluZUJ1
ZmZlcikKLSAgICAgICAgZnJlZUJ1ZmZlcihtX2J1ZmZlciwgbV9idWZmZXJDYXBhY2l0eSk7Ci0K
LSAgICBtX2J1ZmZlciA9IG5ld0J1ZmZlcjsKLSAgICBtX2J1ZmZlckNhcGFjaXR5ID0gbmV3Q2Fw
YWNpdHk7CisgICAgc3RkOjpzd2FwKG1fYnVmZmVyLCBidWZmZXIpOworICAgIHN0ZDo6c3dhcCht
X2J1ZmZlckNhcGFjaXR5LCBjYXBhY2l0eSk7CisgICAgbWVtY3B5KG1fYnVmZmVyLCBidWZmZXIs
IG1fYnVmZmVyU2l6ZSk7CisKKyAgICBpZiAobV9pc0VuY29kaW5nVG9TdHJlYW0pIHsKKyAgICAg
ICAgbV9pc0VuY29kaW5nVG9TdHJlYW0gPSBmYWxzZTsKKyAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxPcHRpb25TZXQ8TWVzc2FnZUZsYWdzPio+KGJ1ZmZlciktPmFkZChNZXNzYWdlRmxhZ3M6OlN0
cmVhbU1lc3NhZ2VPdXRPZkxpbmUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChidWZmZXIg
IT0gbV9pbmxpbmVCdWZmZXIpCisgICAgICAgICAgICBmcmVlQnVmZmVyKGJ1ZmZlciwgY2FwYWNp
dHkpOworICAgIH0KIH0KIAogdm9pZCBFbmNvZGVyOjplbmNvZGVIZWFkZXIoKQpAQCAtMjAxLDcg
KzIyMCw4IEBAIHVpbnQ4X3QqIEVuY29kZXI6Omdyb3coc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90
IHNpemUpCiAgICAgc2l6ZV90IGFsaWduZWRTaXplID0gcm91bmRVcFRvQWxpZ25tZW50KG1fYnVm
ZmVyU2l6ZSwgYWxpZ25tZW50KTsKICAgICByZXNlcnZlKGFsaWduZWRTaXplICsgc2l6ZSk7CiAK
LSAgICBzdGQ6Om1lbXNldChtX2J1ZmZlciArIG1fYnVmZmVyU2l6ZSwgMCwgYWxpZ25lZFNpemUg
LSBtX2J1ZmZlclNpemUpOworICAgIGlmIChtX2J1ZmZlclNpemUgPCBhbGlnbmVkU2l6ZSkKKyAg
ICAgICAgc3RkOjptZW1zZXQobV9idWZmZXIgKyBtX2J1ZmZlclNpemUsIDAsIGFsaWduZWRTaXpl
IC0gbV9idWZmZXJTaXplKTsKIAogICAgIG1fYnVmZmVyU2l6ZSA9IGFsaWduZWRTaXplICsgc2l6
ZTsKICAgICBtX2J1ZmZlclBvaW50ZXIgPSBtX2J1ZmZlciArIGFsaWduZWRTaXplICsgc2l6ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAppbmRleCBlYTYxOTY3YmUxZWJjYmQ4YjZm
YmJhYThiODVhZjQxOGU4ZDUwY2NhLi5lYjJhZjUxNTUyZWE4ZmI0ZTg5NTBiMzFlMjI2M2M2MTNl
N2ZkZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCkBAIC00NCw4ICs0NCwy
MSBAQCBjbGFzcyBFbmNvZGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBFbmNvZGVyKE1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KTsKKyAgICBFbmNvZGVyKE1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50
OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1DYXBhY2l0eSk7CiAgICAgfkVuY29kZXIoKTsKIAor
ICAgIC8vIFN0cmVhbSBtZXNzYWdlIGVuY29kaW5nIG1pZ2h0IHN3aXRjaCB0byBlbmNvZGluZyB0
aGUgbWVzc2FnZSB0byBhIG91dC1vZi1saW5lLAorICAgIC8vIG5vcm1hbCBJUEMgbWVzc2FnZS4g
VGhlIGFsaWdubWVudCBvZiB0aGUgc3RyZWFtIG1lc3NhZ2UgZGF0YSBidWZmZXIgbmVlZHMgdG8g
bWF0Y2ggdG8KKyAgICAvLyBjYXNlIHdoZXJlIHRoZSBtZXNzYWdlIHdvdWxkIGJlIGVuY29kZWQg
dG8gbm9ybWFsIG1lc3NhZ2UgZGF0YSBidWZmZXIuIFRoZSBzdHJlYW1NZXNzYWdlQWxpZ25tZW50
CisgICAgLy8gY29uc3RhbnQgZGVmaW5lcyB0aGlzLgorICAgIC8vIEZJWE1FOiBDdXJyZW50bHkg
dGhpcyBpcyBtb3N0bHkgY29ycmVjdCBhcyB0aGVyZSBhcmUgbm8gb2JqZWN0cyB3aXRoIGxhcmdl
ciBhbGlnbm1lbnQuCisgICAgLy8gSW4gZnV0dXJlLCBsYXJnZXIgYWxpZ25lZCBvYmplY3RzIG1p
Z2h0IGVuZCB1cCBpbiBkaWZmZXJlbnQgcG9zaXRpb24gaW4gYSBzdHJlYW0gbWVzc2FnZSB0aGFu
IGluCisgICAgLy8gYSBub24tc3RyZWFtIG1lc3NhZ2UuIEVuY29kaW5nIGJ1ZmZlciBmb3Igbm9u
LXN0cmVhbSBtZXNzYWdlcyBpcyBhbHdheXMgYXQgbWF4X2FsaWduX3QsIHdoZXJlCisgICAgLy8g
YXMgc3RyZWFtIG1lc3NhZ2VzIGFyZSBub3QuIE1heWJlIGFsaWduIHRvIG1heF9hbGlnbl90Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc3RyZWFtTWVzc2FnZUFsaWdubWVudCA9IGFsaWdu
b2YodWludDY0X3QpOworICAgIC8vIEN1cnJlbnQgbWVzc2FnZSBoZWFkZXIgaXMgdGhpcyBzaXpl
LgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG91dE9mTGluZVN0cmVhbU1lc3NhZ2VTaXpl
ID0gc2l6ZW9mKHVpbnQ2NF90KSAqIDI7CisKICAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsgfQog
ICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFt
ZTsgfQogICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uSUQ7IH0KQEAgLTk2LDYgKzEwOSw4IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8QXR0YWNo
bWVudD4gcmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAgICAgdm9pZCByZXNlcnZlKHNpemVfdCk7CiAK
KyAgICBib29sIGlzRW5jb2RpbmdUb1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmNvZGlu
Z1RvU3RyZWFtOyB9CisKICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0lQQ0VuY29kZXIgPSB0cnVl
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTE0Miw2ICsxNTcsOCBAQCBwcml2YXRl
OgogICAgIHNpemVfdCBtX2J1ZmZlclNpemU7CiAgICAgc2l6ZV90IG1fYnVmZmVyQ2FwYWNpdHk7
CiAKKyAgICBib29sIG1faXNFbmNvZGluZ1RvU3RyZWFtIHsgZmFsc2UgfTsKKwogICAgIFZlY3Rv
cjxBdHRhY2htZW50PiBtX2F0dGFjaG1lbnRzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZUZsYWdzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9NZXNzYWdlRmxhZ3MuaAppbmRleCBhZDRkNDUyZTFlY2RlOTNhYWIxMjBkZjFiMTQ5OTZh
OTA3YzMxZDFlLi5lMjcyZmE5YjkyMzU4N2JiMTk1YWFkZGUxZjU3MDg0NDgxZmY1MjdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaApAQCAtMzIsNiArMzIsNyBA
QCBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3QgewogICAgIERpc3BhdGNoTWVzc2Fn
ZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5ID0gMSA8PCAxLAogICAgIERpc3BhdGNoTWVzc2FnZVdo
ZW5XYWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5ID0gMSA8PCAyLAogICAgIFVzZUZ1bGx5U3lu
Y2hyb25vdXNNb2RlRm9yVGVzdGluZyA9IDEgPDwgMywKKyAgICBTdHJlYW1NZXNzYWdlT3V0T2ZM
aW5lID0gMSA8PCA0LAogfTsKIAogZW51bSBjbGFzcyBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5IDogdWludDhfdCB7CkBAIC01MCw3ICs1MSw4IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8SVBDOjpNZXNzYWdlRmxhZ3M+IHsKICAgICAgICAgSVBDOjpNZXNzYWdl
RmxhZ3M6OlN5bmNNZXNzYWdlLAogICAgICAgICBJUEM6Ok1lc3NhZ2VGbGFnczo6RGlzcGF0Y2hN
ZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHksCiAgICAgICAgIElQQzo6TWVzc2FnZUZsYWdz
OjpEaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseSwKLSAgICAg
ICAgSVBDOjpNZXNzYWdlRmxhZ3M6OlVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZwor
ICAgICAgICBJUEM6Ok1lc3NhZ2VGbGFnczo6VXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0
aW5nLAorICAgICAgICBJUEM6Ok1lc3NhZ2VGbGFnczo6U3RyZWFtTWVzc2FnZU91dE9mTGluZQog
ICAgID47CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlU3RyZWFtUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VT
dHJlYW1SZWNlaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZjk1OGI3Mjc3NmEzNjRkMjg4MTYyMmI2MjA2
OTIxMmZhYjcwZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9NZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJE
ZWNvZGVyLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25TdHJlYW0uaCIKKyNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBJUEMgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBTZWxmPgorY2xhc3MgTWVzc2FnZVN0cmVhbVJlY2VpdmVyICB7CitwdWJs
aWM6CisgICAgTWVzc2FnZVN0cmVhbVJlY2VpdmVyKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmJiBzdHJlYW0pCisgICAgICAgIDogbV9zdHJlYW0oV1RGTW92ZShzdHJlYW0pKQorICAg
IHsgfQorICAgIH5NZXNzYWdlU3RyZWFtUmVjZWl2ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lk
IHN0cmVhbVdha2VVcChDb25uZWN0aW9uJiBjb25uZWN0aW9uKQorICAgIHsKKyAgICAgICAgaWYg
KCFtX3N0cmVhbS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBjbG9zZSB0aGUg
Y29ubmVjdGlvbi4KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBGSVhNRTog
UmVtb3ZlIG9uY2UgZGVidWdnaW5nIGVuZHMuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgYXV0byBkZXN0aW5hdGlvbklEID0gc3RhdGljX2Nhc3Q8U2VsZio+KHRoaXMp
LT5tZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpOworICAgICAgICBhdXRvIHNwYW4gPSBtX3N0
cmVhbS50cnlBcXVpcmUoKTsKKyAgICAgICAgd2hpbGUgKHNwYW4uY2FwYWNpdHkgPj0gRGVjb2Rl
cjo6b3V0T2ZMaW5lU3RyZWFtTWVzc2FnZVNpemUpIHsKKyAgICAgICAgICAgIElQQzo6RGVjb2Rl
ciBkZWNvZGVyIHsgc3Bhbi5wdHIsIHNwYW4uY2FwYWNpdHksIGRlc3RpbmF0aW9uSUQgfTsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBG
SVhNRTogY2xvc2UgdGhlIGNvbm5lY3Rpb24uCisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IC8vIEZJWE1FOiBSZW1vdmUgb25jZSBkZWJ1Z2dpbmcgZW5kcy4KKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGVjb2Rlci5p
c091dE9mTGluZVN0cmVhbU1lc3NhZ2UoKSkgeworICAgICAgICAgICAgICAgIHNwYW4gPSBtX3N0
cmVhbS5yZWxlYXNlKERlY29kZXI6Om91dE9mTGluZVN0cmVhbU1lc3NhZ2VTaXplKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PFNlbGYqPih0aGlzKS0+ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IGNsb3NlIHRoZSBjb25uZWN0aW9uLgorICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgZGVidWdnaW5nIGVuZHMuCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3BhbiA9
IG1fc3RyZWFtLnJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAg
ICAgIH0KKyAgICB9Citwcml2YXRlOgorICAgIERlc3RpbmF0aW9uU3RyZWFtUmVjZWl2ZXIgbV9z
dHJlYW07Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1TZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1TZW5kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzdkYjNlZmYzMmQw
MGFmYTc3NDdhY2Y4MDU1OGQ5NDU3ZDQ0ZTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVNlbmRlci5oCkBAIC0wLDAgKzEsOTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uU3RyZWFtLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFt
ZXNwYWNlIElQQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFNlbGY+CitjbGFzcyBNZXNzYWdlU3Ry
ZWFtU2VuZGVyICB7CitwdWJsaWM6CisgICAgTWVzc2FnZVN0cmVhbVNlbmRlcihzaXplX3Qgc3Ry
ZWFtU2l6ZSkKKyAgICAgICAgOiBtX3N0cmVhbShzdHJlYW1TaXplKQorICAgIHsgfQorICAgIH5N
ZXNzYWdlU3RyZWFtU2VuZGVyKCkgPSBkZWZhdWx0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5k
T3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBzdGF0aWNf
Y2FzdDxTZWxmKj4odGhpcyktPm1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCk7CisgICAgICAgIEFT
U0VSVChjb25uZWN0aW9uKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydCghVTo6aXNTeW5jLCAiTWVz
c2FnZSBpcyBzeW5jISIpOworCisgICAgICAgIGF1dG8gc3BhbiA9IG1fc3RyZWFtLnRyeUFjcXVp
cmUoKTsKKyAgICAgICAgd2hpbGUgKHNwYW4uY2FwYWNpdHkgPCBFbmNvZGVyOjpvdXRPZkxpbmVT
dHJlYW1NZXNzYWdlU2l6ZSkgeworICAgICAgICAgICAgVGhyZWFkOjp5aWVsZCgpOworICAgICAg
ICAgICAgc3BhbiA9IG1fc3RyZWFtLnRyeUFjcXVpcmUoKTsKKyAgICAgICAgfQorICAgICAgICBh
dXRvIGRlc3RpbmF0aW9uSUQgPSBzdGF0aWNfY2FzdDxTZWxmKj4odGhpcyktPm1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5j
b2Rlcj4oVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCBzcGFuLnB0ciwgc3Bhbi5jYXBhY2l0eSk7
CisgICAgICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKKyAgICAgICAg
aWYgKGVuY29kZXItPmlzRW5jb2RpbmdUb1N0cmVhbSgpKSB7CisgICAgICAgICAgICBhdXRvIHdh
a2V1cFJlc3VsdCA9IG1fc3RyZWFtLnJlbGVhc2UoZW5jb2Rlci0+YnVmZmVyU2l6ZSgpKTsKKyAg
ICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gRGVzdGluYXRpb25TdHJlYW1TZW5kZXI6Oldh
a2VVcFJlYWRlcjo6Tm8pCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlN0cmVhbVdha2VVcDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoZSBFbmNvZGVyIHdyb3RlIHRoZSBvdXQtb2YtbGlu
ZSBtZXNzYWdlIGluZGljYXRvciB0byB0aGUgYnVmZmVyLiBSZWxlYXNlCisgICAgICAgICAgICAv
LyB0aGlzIHBpZWNlIG9mIHRoZSBidWZmZXIuCisgICAgICAgICAgICBhdXRvIHdha2V1cFJlc3Vs
dCA9IG1fc3RyZWFtLnJlbGVhc2UoRW5jb2Rlcjo6b3V0T2ZMaW5lU3RyZWFtTWVzc2FnZVNpemUp
OworICAgICAgICAgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBEZXN0aW5hdGlvblN0cmVhbVNlbmRl
cjo6V2FrZVVwUmVhZGVyOjpZZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbm5lY3Rpb24t
PnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgZW5jb2RlciA9IG1ha2VV
bmlxdWU8RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdHJlYW1X
YWtlVXA6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2Rlciks
IHNlbmRPcHRpb25zKTsKKyAgICB9CisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0
aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFNlbmRT
eW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5
bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBzZW5kU3luYyBkb2VzIG5vdCBnbyB0aHJvdWdoIHRoZSBzdHJlYW0gYmVjYXVzZSB0aGUgY29u
c3RydWN0b3Igb2YgdGhlIHN5bmMgZW5jb2RlciBpcyB0aWVkIHRvIHRoZQorICAgICAgICAvLyBD
b25uZWN0aW9uLiBJdCdzIGEgbWVjaGFuaWNhbCByZWZhY3RvciB0byBmaXggaXQuCisgICAgICAg
IHN0YXRpY19hc3NlcnQoVDo6aXNTeW5jLCAiTWVzc2FnZSBpcyBub3Qgc3luYyEiKTsKKyAgICAg
ICAgYXV0byBjb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8U2VsZio+KHRoaXMpLT5tZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpOworICAgICAgICBBU1NFUlQoY29ubmVjdGlvbik7CisgICAgICAgIGF1
dG8gZGVzdGluYXRpb25JRCA9IHN0YXRpY19jYXN0PFNlbGYqPih0aGlzKS0+bWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKTsKKyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24tPnNlbmRTeW5jKFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCBz
ZW5kU3luY09wdGlvbnMpOworICAgIH0KKworICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgZGVzdGluYXRpb25TdHJlYW1IYW5kbGUoKSB7IHJldHVybiBtX3N0cmVhbS5kZXN0aW5h
dGlvblN0cmVhbUhhbmRsZSgpOyB9Citwcml2YXRlOgorICAgIERlc3RpbmF0aW9uU3RyZWFtU2Vu
ZGVyIG1fc3RyZWFtOworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAwZDhkZTA0OWY0YjUwY2JlN2M5OWU3MTA2ODI5
NjY5M2VlNTE4ODFjLi4wNWZlMGM2YzViMjM1M2QyN2Q0NDA0NjJiMzQ0MTc3ODJkMGE5ZmMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTMzLDYgKzMzLDcg
QEAgTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSA9ICdMZWdhY3lSZWNlaXZlcicKIE5PVF9SRUZD
T1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSA9ICdOb3RSZWZDb3VudGVkJwogU1lOQ0hST05PVVNf
QVRUUklCVVRFID0gJ1N5bmNocm9ub3VzJwogQVNZTkNfQVRUUklCVVRFID0gJ0FzeW5jJworU1RS
RUFNX0FUVFJJQlVURSA9ICdTdHJlYW0nCiAKIF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBA
IC00OTcsNyArNDk4LDggQEAgZGVmIGFzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBt
ZXNzYWdlKToKIAogICAgIHJlc3VsdCA9IFtdCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OiVzOjolczo6bmFtZSgpKSB7XG4nICUg
KHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgICAg
ICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24s
IHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKGRpc3BhdGNoX2Z1bmN0aW9u
X2FyZ3MpKSkKKyAgICBpZiBub3QgKHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJ
QlVURSkgYW5kIG1lc3NhZ2UubmFtZSA9PSAnU3RyZWFtV2FrZVVwJyk6CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglcyk7XG4nICUgKGRp
c3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICcsICcuam9pbihk
aXNwYXRjaF9mdW5jdGlvbl9hcmdzKSkpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1
cm47XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9XG4nKQogICAgIHJldHVybiBzdXJyb3Vu
ZF9pbl9jb25kaXRpb24oJycuam9pbihyZXN1bHQpLCBtZXNzYWdlLmNvbmRpdGlvbikKQEAgLTg1
OCw4ICs4NjAsMTMgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkK
IAorICAgIHJlY2VpdmVfdmFyaWFudCA9ICcnCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0
ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKToKKyAgICAgICAgcmVjZWl2ZV92YXJpYW50ID0g
cmVjZWl2ZXIubmFtZQorICAgIGVsaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRU
UklCVVRFKToKKyAgICAgICAgcmVjZWl2ZV92YXJpYW50ID0gJ1N0cmVhbScKICAgICBpZiBhc3lu
Y19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NB
R0VfQVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BB
VENIX01FU1NBR0VfQVRUUklCVVRFKToKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6
ZGlkUmVjZWl2ZSVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNl
aXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQor
ICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNl
aXZlci5uYW1lLCByZWNlaXZlX3ZhcmlhbnQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4n
KQogICAgICAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9S
RUNFSVZFUl9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGF1dG8g
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpO1xuJykKQEAgLTg3Niw2ICs4ODMsMTMgQEAg
ZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCd9XG4nKQogCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRU
UklCVVRFKToKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4n
ICUgKHJlY2VpdmVyLm5hbWUpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7XG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RyZWFtV2FrZVVwKGNv
bm5lY3Rpb24pO1xuJykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKwogICAgIGlmIHN5
bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSk6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN5bmMlc01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVy
Lm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRF
KSBlbHNlICcnKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDdlZWQ2M2E1MTYzYWJkOGY4N2QyZDA2YTZhMjhmY2JlMzZjMjgxMWYuLjU1
YWMxY2YyZTZiYTE1N2U4N2I4MWY2ZTBkMjU5YjNmN2QyMDYxMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMyNiw2ICsxMzI2LDgg
QEAKIAkJN0FGQkQzNjcyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2RjIxRTU0NkY4MDA1REJBQ0IgLyogUGVyc2lzdGVu
Y3lVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FGQkQzNkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLzsgfTsKIAkJ
N0IxREIyNjYyNTY2OENFMTAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2
QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLzsgfTsKKwkJN0JFNzI2N0EyNTdBNzNENjAwRTg1RDk4
IC8qIE1lc3NhZ2VTdHJlYW1TZW5kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCRTcyNjc5MjU3QTczRDYwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFt
U2VuZGVyLmggKi87IH07CisJCTdCRTcyNjdDMjU3QTc5QzgwMEU4NUQ5OCAvKiBNZXNzYWdlU3Ry
ZWFtUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCRTcyNjdCMjU3QTc5QzgwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaCAq
LzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
ckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVn
aW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzFCQTMz
RTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQ
SURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTQ1MTYsNiArNDUxOCw4IEBACiAJCTdCOTA0MTZEMjU1
MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVy
YXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1NzRGNjcyMDBF
ODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2Njgy
NTc2ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjc5MjU3QTczRDYwMEU4NUQ5OCAvKiBNZXNzYWdl
U3RyZWFtU2VuZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VT
dHJlYW1TZW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JFNzI2N0IyNTdB
NzlDODAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1SZWNlaXZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BsdWdpbkluZm9y
bWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4OTQsNiArNjg5OCw4
IEBACiAJCQkJMUEzRUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5o
ICovLAogCQkJCTFBQUIwMzc3MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmNwcCAq
LywKIAkJCQkxQUFCMDM3ODE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oICovLAor
CQkJCTdCRTcyNjdCMjU3QTc5QzgwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaCAq
LywKKwkJCQk3QkU3MjY3OTI1N0E3M0Q2MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVNlbmRlci5o
ICovLAogCQkJCTJEQzE4MDAxRDkwREREMTVGQzY5OTFBOSAvKiBTaGFyZWRCdWZmZXJDb3B5LmNw
cCAqLywKIAkJCQk1Q0M1REI5MTIxNDg4RTE2MDA2Q0I4QTggLyogU2hhcmVkQnVmZmVyQ29weS5o
ICovLAogCQkJCTJEQzE4NTVFREJGQjg1MEJBMEI2RDA2RCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmNwcCAqLywKQEAgLTExNjY1LDYgKzExNjcxLDggQEAKIAkJCQkxQTNFRUQxMjE2MUE1
M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNF
RUQwRjE2MUE1MzU0MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUFCMDM3QTE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0JFNzI2N0MyNTdBNzlDODAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1S
ZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JFNzI2N0EyNTdBNzNENjAwRTg1RDk4IC8q
IE1lc3NhZ2VTdHJlYW1TZW5kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExM0IzREEyMjA3RjM5
REUwMDkwQzU4RCAvKiBNb2JpbGVXaUZpU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURD
QjIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcAppbmRleCAzNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Li4wNWY5
ZWUyYjYwMDhkNWQ2N2FjODZjMjRkM2MwNTEyMGFmMTc1MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTQ4LDE5ICs0OCwyMiBAQCBSZWZQdHI8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3JlYXRlKGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsKIH0KIAorc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVm
YXVsdFN0cmVhbVNpemUgPSAxIDw8IDIyOworCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cnMpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShh
dHRycykKKyAgICA6IElQQzo6TWVzc2FnZVN0cmVhbVNlbmRlcjxSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5PihkZWZhdWx0U3RyZWFtU2l6ZSkKKyAgICAsIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlKGF0dHJzKQogewogICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNz
YWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOwogICAgIG1lc3NhZ2VSZWNlaXZlck1h
cC5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
dG9VSW50NjQoKSwgKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciksIDApOworICAgIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKGF0dHJzLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgZGVzdGluYXRpb25TdHJl
YW1IYW5kbGUoKSksIDApOwogfQogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCiB7CiAgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJN
YXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAgICAgbWVzc2FnZVJl
Y2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7Ci0gICAgc2VuZChNZXNzYWdl
czo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7CisgICAgbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFz
ZUdyYXBoaWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgcGxhdGZvcm1Td2FwQ2hhaW4oKS5yZWN5Y2xlQnVmZmVy
KCk7CiAjZW5kaWYKQEAgLTgwLDE0ICs4MywxNCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIG1fY3VycmVu
dFdpZHRoID0gd2lkdGg7CiAgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OwotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXNoYXBlKHdpZHRoLCBoZWlnaHQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXJTZW5kUmln
aHQ7Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVw
YXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBh
cmVGb3JEaXNwbGF5OjpSZXBseShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNl
bmRSaWdodCksIDEwX3MpOwogICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29s
b3JTcGFjZVJlZigpKTsKICAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBhdXRvJiBz
YyA9IHBsYXRmb3JtU3dhcENoYWluKCk7CkBAIC05NSwxOSArOTgsMTkgQEAgdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgICAgIHNjLnBy
ZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRyIH0pOwogICAgIH0KICNlbHNl
Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJl
Rm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVG
b3JEaXNwbGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJl
Rm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVG
b3JEaXNwbGF5OjpSZXBseSgpLCAxMF9zKTsKICNlbmRpZgogICAgIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRl
bnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVu
c2lvbiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNp
b24pKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJr
Q29udGV4dENoYW5nZWQoKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpO
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oCmluZGV4IGQ5OWVkYTI5ZjZkYjVlMTgxOTcxMzE3OGYyYWE1MzFi
NGY1ZGQ2ZTAuLmQxYWMwMWJiNmZjYTA2NmNmYTcyYzY3NzVhYTI0N2I1ZTBmYTBhZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0yOSw3ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiTWVz
c2FnZVN0cmVhbVNlbmRlci5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBHUFUgcHJvY2Vzcy4KIC8vIFRo
ZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkgZmluYWwKLSAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICA6IHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VTdHJlYW1TZW5kZXI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4K
ICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PgogICAgICwgcHVibGljIFdlYkNv
cmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKQEAgLTU1LDkgKzU1LDkgQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOwogICAg
IH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkgZmluYWw7CiAKLSAgICAvLyBJUEM6Ok1l
c3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworICAgIC8vIElQQzo6TWVzc2FnZVN0cmVhbVNlbmRl
ciB0ZW1wbGF0ZSBjb250cmFjdC4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3Q7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKSBjb25zdDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKaW5kZXggZjdlY2Y4NjU1NmEwMDczYWY4ZjU1
NGNmY2ZjMGVmMzM5ZjYxZTg5YS4uM2MxN2MyNGFkYzczYjBiZmYyYzYwYzU5MzRkZWQ3YzdkMGU3
YmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0zMiwzMjQgKzMyLDMyNCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRG
YWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN5bnRoZXNpemVH
TEVycm9yKGVycm9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJv
cikpOwogfQogCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNU
b1N5bnRoZXRpY0Vycm9yTGlzdCgpCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJvcnNU
b1N5bnRoZXRpY0Vycm9yTGlzdCgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
Ok1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Qo
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmFjdGl2ZVRl
eHR1cmUoR0NHTGVudW0gdGV4dHVyZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QWN0aXZlVGV4dHVyZSh0ZXh0dXJlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVUZXh0dXJlKHRleHR1cmUpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjphdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9y
bUdMT2JqZWN0IHNoYWRlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlciksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRBdHRyaWJMb2NhdGlvbihhcmcwLCBp
bmRleCwgbmFtZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEF0dHJpYkxvY2F0aW9uKGFyZzAs
IGluZGV4LCBuYW1lKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJn
ZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBh
cmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQs
IGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcx
KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUo
R0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJl
ZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9y
KHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9y
KHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9uKG1vZGUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb24obW9kZSkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2Rl
UkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2Rl
QWxwaGEpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1
bmMoR0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0gZGZhY3RvcikKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3Ip
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jU2VwYXJhdGUoR0NH
TGVudW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51
bSBkc3RBbHBoYSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNy
Y0FscGhhLCBkc3RBbHBoYSkpOwogfQogCiBHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKIHsKICAgICB1
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVi
dWZmZXJTdGF0dXModGFyZ2V0KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
aGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIo
bWFzaykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQ29s
b3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NH
TGNsYW1wZiBhbHBoYSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0
aChkZXB0aCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0aChkZXB0aCkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3Rl
bmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhclN0ZW5jaWwocykpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQs
IEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNr
KHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGlj
X2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJv
b2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFs
cGhhKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVT
aGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21waWxlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNvbXBpbGVTaGFkZXIoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgdWludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVGcmFtZWJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZUZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBf
cyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0oKQogewogICAgIHVpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVByb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVByb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCiB7CiAgICAgdWludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUmVuZGVyYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1
ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVj
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIoR0NHTGVudW0gYXJn
MCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcihhcmcwKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXI6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0
dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3Jt
R0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVGV4dHVyZSgpCiB7
CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlKCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlKCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUp
LCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UoR0NHTGVudW0gbW9kZSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVCdWZmZXIoYXJnMCkpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RGVsZXRlRnJhbWVidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJh
bWVidWZmZXIoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVQcm9ncmFtKGFyZzApLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRlbGV0ZVByb2dyYW0oYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVSZW5kZXJidWZm
ZXIoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVTaGFkZXIoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRleHR1cmUoYXJnMCkpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1bmMoZnVu
YyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhGdW5jKGZ1bmMpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2soR0NHTGJvb2xlYW4gZmxhZykKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0
YXRpY19jYXN0PGJvb2w+KGZsYWcpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aE1hc2soc3Rh
dGljX2Nhc3Q8Ym9vbD4oZmxhZykpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkZXB0aFJhbmdlKEdDR0xjbGFtcGYgek5lYXIsIEdDR0xjbGFtcGYgekZhcikKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhSYW5nZSh6
TmVhciwgekZhciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhSYW5nZSh6TmVhciwgekZhcikp
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGV0YWNoU2hhZGVyKGFyZzAsIGFy
ZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRldGFjaFNoYWRlcihhcmcwLCBhcmcxKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZShHQ0dMZW51bSBjYXAp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUo
Y2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlKGNhcCkpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWlu
dCBpbmRleCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwg
dHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9m
ZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUo
R0NHTGVudW0gY2FwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpFbmFibGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGUoY2FwKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoR0NHTHVpbnQgaW5kZXgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlz
aCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCgpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZsdXNoKCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Rmx1c2goKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xP
YmplY3QgYXJnMykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZm
ZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBhcmczKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQs
IFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0
LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJn
MywgbGV2ZWwpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpmcm9u
dEZhY2UoR0NHTGVudW0gbW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RnJvbnRGYWNlKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyb250RmFj
ZShtb2RlKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2VuZXJh
dGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZW5lcmF0ZU1pcG1hcCh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCkpOwogfQogCiBib29sIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYjo6UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYjo6UmVw
bHkocmV0dXJuVmFsdWUsIGFyZzIpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9
CiAKIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybShQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcy
KQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtOjpS
ZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgMTBf
cyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwg
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0g
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRyaWJM
b2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRBdHRyaWJMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUp
LCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJh
bWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpOjpSZXBseShy
ZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogU3RyaW5n
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN0cmluZyhHQ0dMZW51bSBuYW1lKQog
ewogICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZyhuYW1lKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmc6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsK
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKQogewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7Ci0gICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRGbG9hdHYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEZsb2F0djo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0dihwbmFtZSwgdmFs
dWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2
OjpSZXBseSh2YWx1ZVJlcGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAg
IG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNp
emVvZihmbG9hdCkpOwogICAgIApAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
ZmxvYXQ+CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2KEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFt
ZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVl
UmVwbHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkKICAgICAgICAgbWVtY3B5KHZhbHVl
LmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGludDMyX3Qp
KTsKICAgICAKQEAgLTM2NywyOCArMzY3LDI4IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+CiBH
Q0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0KEdDR0xl
bnVtIHBuYW1lKQogewogICAgIGludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NDo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQo
cG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NDo6
UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGlu
dDY0PihyZXR1cm5WYWx1ZSk7CiB9CiAKIEdDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKIHsK
ICAgICBpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFt
ZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2
NGk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdD
R0xpbnQ2ND4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0g
cG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1pKHByb2dyYW0sIHBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFt
aShwcm9ncmFtLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
UHJvZ3JhbWk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7CiAgICAgSVBD
OjpBcnJheVJlZmVyZW5jZTxib29sPiB2YWx1ZVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnYo
cG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEJvb2xlYW52OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52OjpSZXBseSh2
YWx1ZVJlcGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweSh2
YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihib29s
KSk7CiAgICAgCkBAIC0zOTcsNDIgKzM5Nyw0MiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbAog
R0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQogewogICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRFcnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEVycm9yOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0
YWNobWVudCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7
CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewog
ICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nKGFy
ZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9n
OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0K
IAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZh
bHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcw
LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShh
cmcwLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVy
aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
aGFkZXJpKGFyZzAsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRTaGFkZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKIH0KIAogU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRl
ckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0cmluZyByZXR1cm5WYWx1
ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFNoYWRlckluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U2hhZGVySW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBf
cyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCkBAIC00NDAsNyArNDQwLDcgQEAgdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQo
R0NHTGVudW0gc2hhZGVyVHlwZSwKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Qs
IDI+IHJhbmdlUmVwbHk7CiAgICAgaW50MzJfdCBwcmVjaXNpb25SZXBseSA9IHsgfTsKLSAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQ6OlJlcGx5KHJhbmdlUmVwbHksIHByZWNpc2lvblJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNo
YWRlclR5cGUsIHByZWNpc2lvblR5cGUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lzaW9u
UmVwbHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkgewogICAgICAgICBtZW1jcHkocmFu
Z2UuZGF0YSwgcmFuZ2VSZXBseS5kYXRhKCksIHJhbmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJf
dCkpOwogICAgICAgICBpZiAocHJlY2lzaW9uKQpAQCAtNDUxLDI4ICs0NTEsMjggQEAgdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NH
TGVudW0gc2hhZGVyVHlwZSwKIFN0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0cmluZyByZXR1
cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFNoYWRlclNvdXJjZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTaGFkZXJTb3VyY2U6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCAx
MF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xmbG9hdCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpCiB7CiAgICAgZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmKHRh
cmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBh
cmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3Mp
OwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmkodGFyZ2V0
LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1l
dGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4gdmFsdWVSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdihwcm9ncmFtLCBs
b2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VW5pZm9ybWZ2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9u
LCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRV
bmlmb3JtZnY6OlJlcGx5KHZhbHVlUmVwbHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkK
ICAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZT
aXplICogc2l6ZW9mKGZsb2F0KSk7CiAgICAgCkBAIC00ODEsNyArNDgxLDcgQEAgdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW4KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2
YWx1ZVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1
ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3Jt
aXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNp
emUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdjo6UmVw
bHkodmFsdWVSZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1j
cHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2Yo
aW50MzJfdCkpOwogICAgIApAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGluCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWlu
dD4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gdmFsdWVSZXBs
eTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNp
emUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXY6OlJl
cGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2OjpSZXBseSh2
YWx1ZVJlcGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweSh2
YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZih1aW50
MzJfdCkpOwogICAgIApAQCAtNDk5LDMyNSArNDk5LDMyNSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaQogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAg
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb246OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0
aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVu
aWZvcm1Mb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiB9CiAKIEdDR0xzaXplaXB0ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQog
ewogICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmli
T2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldDo6UmVwbHkocmV0dXJuVmFsdWUp
LCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1cm5WYWx1
ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpI
aW50KHRhcmdldCwgbW9kZSkpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQoR0NHTGVudW0gY2FwKQogewogICAgIGJv
b2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc0VuYWJsZWQoY2FwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc0VuYWJsZWQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNFbmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNFbmFibGVkOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcihhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJn
MCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVw
bHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xl
YW4+KHJldHVyblZhbHVlKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6aXNQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29sIHJl
dHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNQcm9ncmFtKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1Byb2dyYW0oYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFy
ZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpS
ZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc1NoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQog
ewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGluZVdpZHRoKEdDR0xmbG9hdCBhcmcw
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5lV2lk
dGgoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkxpbmtQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmtQcm9ncmFtKGFyZzAp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaShH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpQaXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdD
R0xmbG9hdCB1bml0cykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQ
b2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVy
U3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
YW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZUNvdmVyYWdl
KHZhbHVlLCBzdGF0aWNfY2FzdDxib29sPihpbnZlcnQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpT
YW1wbGVDb3ZlcmFnZSh2YWx1ZSwgc3RhdGljX2Nhc3Q8Ym9vbD4oaW52ZXJ0KSkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNjaXNzb3IoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVp
Z2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaGFkZXJTb3VyY2UoUGxh
dGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIGFyZzEpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNoYWRlclNvdXJjZShhcmcwLCBhcmcxKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJnMCwgYXJnMSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMs
IEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzaykpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0g
ZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJh
dGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVu
Y1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzaykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2Us
IEdDR0x1aW50IG1hc2spCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6U3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpm
YWlsLCBHQ0dMZW51bSB6cGFzcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcykpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdD
R0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wU2VwYXJhdGUoZmFj
ZSwgZmFpbCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3BTZXBh
cmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmkoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBu
YW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBu
YW1lLCBwYXJhbSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB4KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWYobG9jYXRpb24sIHgpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2
LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMWkobG9jYXRpb24sIHgpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xpbnQ+IHYpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEp
LCB2LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmKGxv
Y2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24sIHgs
IHkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmdihsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZnYo
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwg
R0NHTGludCB5KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtMmkobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0y
aShsb2NhdGlvbiwgeCwgeSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
dikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTJpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmKGxvY2F0aW9u
LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRpb24sIHgsIHks
IHopKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmdihsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYo
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMaW50IHopCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0zaShsb2NhdGlvbiwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiB2KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwg
di5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xm
bG9hdCB6LCBHQ0dMZmxvYXQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2
LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHos
IEdDR0xpbnQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IHYpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm00aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1
ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0
PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+
KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2
YWx1ZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZh
bHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1h
dHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRh
dGEpLCB2YWx1ZS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9u
LCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVzZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VXNlUHJvZ3Jh
bShhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmFsaWRh
dGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmFsaWRhdGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9h
dCB4KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0
ZXhBdHRyaWIxZihpbmRleCwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYo
aW5kZXgsIHgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4g
dmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRh
dGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWIyZihpbmRleCwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliMmYoaW5kZXgsIHgsIHkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdCwgMj4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQs
IDI+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
dmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0
IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50
IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliM2Z2KGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlZlcnRleEF0dHJpYjNmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUp
KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
NGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHos
IEdDR0xmbG9hdCB3KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1
ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdD
R0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5v
cm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJQb2ludGVy
KGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxib29sPihub3JtYWxpemVkKSwgc3RyaWRl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9y
bWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2aWV3cG9ydChHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwg
aGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0
KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTAodGFy
Z2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnMSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCdWZmZXJEYXRhMCh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNh
Z2UpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVt
IHVzYWdlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
dWZmZXJEYXRhMSh0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSwgdXNhZ2Up
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlckRhdGExKHRhcmdldCwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEp
LCBkYXRhLmJ1ZlNpemUpLCB1c2FnZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCksIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAo
eCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5Q
aXhlbHMwKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXplKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczA6OlJlcGx5KGRh
dGFSZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkoZGF0
YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkp
OwogICAgIApAQCAtODI1LDk3ICs4MjUsOTcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHcKIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczEoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMxKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJ
bWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdl
MkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
cGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1
YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMSh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRl
eEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMSh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVz
c2VkVGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
ZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29t
cHJlc3NlZFRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdl
U2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNp
emUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0Fy
cmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBw
cmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwg
Zmlyc3QsIGNvdW50LCBwcmltY291bnQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1j
b3VudCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJh
d0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJ
bnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQp
LCBwcmltY291bnQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJE
aXZpc29yKGluZGV4LCBkaXZpc29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJE
aXZpc29yKGluZGV4LCBkaXZpc29yKSk7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQogewogICAgIHVpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1
ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZVZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5
KGFyZzApKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1ZlcnRleEFycmF5KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmluZFZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhB
cnJheShhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29w
eUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQs
IEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVp
cHRyIGFyZzQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCks
IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weUJ1
ZmZlclN1YkRhdGEocmVhZFRhcmdldCwgd3JpdGVUYXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHdyaXRlT2Zmc2V0KSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGFyZzQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+IGRhdGFSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhOjpSZXBseShkYXRhUmVwbHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZm
ZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIGRhdGEuYnVm
U2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0
YTo6UmVwbHkoZGF0YVJlcGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAg
IG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRhdGEuYnVmU2l6ZSAqIHNpemVv
Zih1aW50OF90KSk7CiAgICAgCkBAIC05MjMsNDUxICs5MjMsNDUxIEBAIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnRwdHIKIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVi
dWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGlu
dCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NH
TGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNy
Y1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFz
aywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXIoc3JjWDAsIHNy
Y1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0
ZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZl
clRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRm
b3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVu
dCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNw
YW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90
Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMu
ZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFy
Z2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5
LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNp
emUpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRCdWZmZXIoc3JjKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZWFkQnVmZmVyKHNyYykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1w
bGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9y
YWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpUZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTNEKHRhcmdl
dCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRl
eEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBp
eGVscy5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1
YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1
YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleElt
YWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXpl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29t
cHJlc3NlZFRleEltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJl
c3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1
YkltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZv
cm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdl
U2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogR0NHTGludCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9n
cmFtLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0
YUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMXVpKGxvY2F0aW9uLCB2MCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50IHYwLCBHQ0dMdWludCB2MSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50
IHYzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2MyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMXVpdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRy
aXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3Rh
dGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4Mng0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
TWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9v
bD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1N
YXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEu
ZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0aXYo
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2
YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5
LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aXYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0
dWl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVz
LmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBz
aXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliSVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYklQb2ludGVyKGlu
ZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVu
dHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwg
c3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBj
b3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBH
Q0dMZW51bT4gYnVmcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNp
emUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZm
ZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0
YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJpdihi
dWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdihH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVp
bnQ+IHZhbHVlcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEp
LCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1
ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdihH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1
ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBk
cmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZl
ciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZm
ZXJmaShidWZmZXIsIGRyYXdidWZmZXIsIGRlcHRoLCBzdGVuY2lsKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpKTsK
IH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVRdWVyeSgpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeSgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5OjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5KCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnk6OlJlcGx5KHJldHVyblZh
bHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVF1
ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVRdWVyeShxdWVyeSkpOwogfQog
CiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KFBsYXRm
b3JtR0xPYmplY3QgcXVlcnkpCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNRdWVyeShxdWVyeSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNRdWVyeTo6UmVwbHkocmV0dXJuVmFs
dWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZh
bHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5
KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeShHQ0dMZW51bSB0YXJn
ZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFF1
ZXJ5KHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kUXVlcnkodGFyZ2V0KSk7CiB9CiAK
IFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBw
bmFtZSkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWkocXVlcnks
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVj
dHVpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTYW1wbGVyKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZVNhbXBsZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVNhbXBsZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDcmVhdGVTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZWxldGVTYW1wbGVyKHNhbXBsZXIpKTsKIH0KIAogR0NHTGJvb2xlYW4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlcikKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyKHNhbXBsZXIpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1cm5W
YWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJu
VmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1w
bGVyKEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2Ft
cGxlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcikpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJp
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0p
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQ
YXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2Ft
cGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1w
bGVyLCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJm
KHNhbXBsZXIsIHBuYW1lLCBwYXJhbSkpOwogfQogCiBHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQ
YXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmY6
OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQog
CiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVy
UGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMc3luYyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxh
Z3MpCiB7CiAgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFn
cyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZlbmNlU3luYyhjb25k
aXRpb24sIGZsYWdzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5
bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihyZXR1cm5WYWx1ZSkpOwogfQogCiBH
Q0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMoR0NHTHN5bmMg
YXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSkpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU3luYyhzdGF0aWNfY2FzdDx1
aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZWxldGVTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0
PGludHB0cl90PihhcmcwKSkpKTsKIH0KIAogR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdz
LCBHQ0dMdWludDY0IHRpbWVvdXQpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRX
YWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
YXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50
NjQgdGltZW91dCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVvdXQpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGltZW91
dCkpKTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5j
aShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U3luY2koc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGFyZzApKSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFN5bmNpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFN5bmNpKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90
PihhcmcwKSksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
eW5jaTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7
CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3Jl
YXRlVHJhbnNmb3JtRmVlZGJhY2soKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1
cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9y
bUdMT2JqZWN0IGlkKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2soaWQpKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlk
KQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrKGlkKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVl
ZGJhY2soaWQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3Jt
RmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxh
dGZvcm1HTE9iamVjdCBpZCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51
bSBwcmltaXRpdmVNb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kVHJhbnNm
b3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRUcmFuc2Zvcm1GZWVkYmFjaygp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dy
YW0sIHZhcnlpbmdzLCBidWZmZXJNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLCBidWZmZXJNb2RlKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8m
IGFyZzIpCiB7Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVw
bHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nOjpSZXBseShhcmcyKSwgMTBfcyk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFuc2Zvcm1GZWVk
YmFjaygpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBh
dXNlVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJl
c3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVm
ZmVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBi
dWZmZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVm
ZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVj
dCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRh
cmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRp
Y19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJh
bmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCks
IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSkpOwogfQogCiBWZWN0b3I8R0NHTHVpbnQ+IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykKIHsKICAg
ICBWZWN0b3I8dWludDMyX3Q+IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwg
dW5pZm9ybU5hbWVzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlm
b3JtSW5kaWNlczo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzOjpSZXBseShyZXR1cm5W
YWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogVmVjdG9yPEdDR0xp
bnQ+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGlj
ZXMsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9
IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXMo
cHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtczo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsK
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQogewogICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9y
bUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJlcGx5KHJldHVyblZhbHVl
KSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBTdHJpbmcgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQogewogICAgIFN0cmlu
ZyByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJs
b2NrSW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVu
aWZvcm1CbG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJ
bmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9y
bUJsb2NrTmFtZTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJs
b2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0s
IHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlm
b3JtQmxvY2tCaW5kaW5nKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMp
CiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKLSAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBw
bmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2
OjpSZXBseShwYXJhbXNSZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAg
ICBtZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUg
KiBzaXplb2YoaW50MzJfdCkpOwogICAgIApAQCAtMTM3Niw5MCArMTM3Niw5MCBAQCB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1
aW50IHByb2dyYW0sIEdDRwogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6
OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xF
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNy
Y1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFz
aywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNY
MCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ss
IGZpbHRlcikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUygpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTKCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJl
cGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RGVsZXRlVmVydGV4QXJyYXlPRVMoYXJnMCkpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlP
RVMoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJh
eU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJy
YXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5T0VTKGFyZzAp
KTsKIH0KIAogU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgU3RyaW5n
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5W
YWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcm
IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklu
c2VydEV2ZW50TWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50
TWFya2VyRVhUKGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdyb3VwTWFya2VyRVhUKGFyZzApKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb3BHcm91cE1hcmtlckVYVCgpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvcEdyb3VwTWFya2Vy
RVhUKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48
Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRh
KSwgYnVmcy5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSht
b2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
dm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1v
ZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBj
b3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xF
KGluZGV4LCBkaXZpc29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29y
QU5HTEUoaW5kZXgsIGRpdmlzb3IpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCiB7
CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKLSAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIHBhcmFt
cy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlcm5h
bGZvcm1hdGl2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5h
bGZvcm1hdCwgcG5hbWUsIHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRJbnRlcm5hbGZvcm1hdGl2OjpSZXBseShwYXJhbXNSZXBseSksIDEwX3Mp
OwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFt
c1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOwogICAgIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc4OGEz
NDQ0OGM5NWE3OWY1MWZkZjFhNmI1YzM4MmMyOWJkMmVlODguLjk3N2IxZDMxN2VkNGUyYzkyOWZl
M2I2N2I2ZjVmNGVjOTBhYzcxM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0xMi0wOCAgS2ltbW8gS2lubnVu
ZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIEdQVSBwcm9jZXNzIElQ
QyBzaG91bGQgYmUgZmFzdGVyIHRoYW4gY3VycmVudCBXZWJLaXQgSVBDCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZ2VuZXJhdGUtZ3B1cC13
ZWJnbCB0byBnZW5lcmF0ZSBzZW5kIGNhbGxzIGZvciBzZW5kaW5nIHN0cmVhbQorICAgICAgICBt
ZXNzYWdlcy4gU3RyZWFtIG1lc3NhZ2VzIGhhdmUgaW1wbGllZCBkZXN0aW5hdGlvbiwgc28gZGVz
dGluYXRpb24gaWQKKyAgICAgICAgZG9lcyBub3QgbmVlZCB0byBiZSBwYXJ0IG9mIHNlbmQgbWV0
aG9kIGNhbGwuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIw
MjAtMTItMTQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNd
IE1lZGlhRm9ybWF0UmVhZGVyLmJ1bmRsZSBmYWlscyB0byBsb2FkIGluIFdlYktpdFRlc3RSdW5u
ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xz
L1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCBmMTZiNDIyMjljZjJmODI4YzY2Yzdl
N2I0MTc3M2MyZWJlNDQzMTE0Li4yN2QxMzBhZGEyMTJmOGQ5YzM2MDQxYjJkNzAyMmQ5NTg3Yzg0
MzAwIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIv
VG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC04OSw3ICs4OSw3IEBAIGNvbnRl
eHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCiAgICAgdGVtcGxhdGVfcHJlYW1ibGUKICAgICArICIi
IiNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworbWVzc2FnZXMgLT4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFJl
c2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlC
dWZmZXIpIFN5bmNocm9ub3VzCkBAIC05OSw2ICs5OSw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQge3sKICNlbmRpZgogICAgIHZvaWQgRW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQogICAgIHZvaWQgTm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKCkKKyAgICB2b2lkIFN0cmVhbVdha2VVcCgpIFdhbnRzQ29ubmVjdGlvbiAv
LyBUT0RPOiB0aGlzIHNob3VsZCBiZSBtb3ZlZCB0byBtZXNzYWdlcy5weQoge30KIH19CiAKQEAg
LTU4Nyw3ICs1ODgsNyBAQCBjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKG9iamVjdCk6
CiAgICAgICAgIGlzX2FzeW5jID0gc2VsZi5yZXR1cm5fdHlwZS5pc192b2lkKCkgYW5kIGxlbihv
dXRfZXhwcnMpID09IDAKICAgICAgICAgaWYgaXNfYXN5bmM6CiAgICAgICAgICAgICBzZWxmLmNh
bGxfc3RtdHMgKz0gWwotICAgICAgICAgICAgICAgIGYic2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOyIsCisgICAgICAgICAgICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pKTsiLAog
ICAgICAgICAgICAgXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VuZF9yZXN1bHQgPSAi
IgpAQCAtNTk5LDcgKzYwMCw3IEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICAgICAgKCJ9IiBpZiBsZW4oc2VsZi5wb3N0X2NhbGxfc3Rt
dHMpID4gMSBlbHNlICIiKQogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIHNlbGYuY2Fs
bF9zdG10cyArPSBbCi0gICAgICAgICAgICAgICAgZiJ7c2VuZF9yZXN1bHR9c2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJz
fSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9OjpS
ZXBseSh7b3V0X2V4cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsi
LAorICAgICAgICAgICAgICAgIGYie3NlbmRfcmVzdWx0fXNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfTo6UmVwbHkoe291dF9l
eHByc30pLCAxMF9zKTsiLAogICAgICAgICAgICAgXQogCiAK
</data>
<flag name="commit-queue"
          id="433719"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416242</attachid>
            <date>2020-12-15 07:10:23 -0800</date>
            <delta_ts>2020-12-18 11:21:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20201215171020.patch</filename>
            <type>text/plain</type>
            <size>186996</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY4NGM5ZjE3M2Y3M2ExOTYy
YjRjZjRmNjliNTg1ZmEzMDU0NmVhZTYuLmYyYWExMDk4ZTk0NzM3MjYzYTRkNDg0MmY2NDM3NWI1
NThjZTQ0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMxIEBACisyMDIwLTEyLTA4ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBjdXJyZW50IFdlYktpdCBJUEMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNl
cHQgb2YgZGVzdGluYXRpb24gbWVzc2FnZSBzdHJlYW0uIElQQyBtZXNzYWdlcyBjYW4KKyAgICAg
ICAgYmUgc2VudCBkaXJlY3RseSB0byB0aGUgcmVjZWl2aW5nIGRlc3RpbmF0aW9uIHdpdGggTWVz
c2FnZVN0cmVhbVNlbmRlcgorICAgICAgICBhbmQgcmVjZWl2ZWQgd2l0aCBNZXNzYWdlU3RyZWFt
UmVjZWl2ZXIuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYXMgZm9sbG93czoKKyAgICAgICAgU2Vu
ZGVyIHNoYXJlcyB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhIHdpdGggdGhlIGRlc3RpbmF0aW9uIHdo
ZW4gY3JlYXRpbmcKKyAgICAgICAgdGhlIGRlc3RpbmF0aW9uLgorCisgICAgICAgIElmIHRoZSBt
ZXNzYWdlIGZpdHMgdG8gdGhlIHN0cmVhbSBzaGFyZWQgbWVtb3J5IGFyZWEsIHdyaXRlIGl0IHRo
ZXJlLgorICAgICAgICBPdGhlcndpc2Ugc2VuZCBpdCB2aWEgbm9ybWFsIElQQyBhcyBvdXQgb2Yg
bGluZSBtZXNzYWdlLgorCisgICAgICAgIFJlY2VpdmVyIHdhaXRzIGZvciBub3JtYWwgSVBDIG1l
c3NhZ2VzLCBpdCBkb2VzIG5vdCBkbyBhbnl0aGluZyBvdXQgb2Ygb3JkaW5hcnkKKyAgICAgICAg
dW50aWwgYSB3YWtldXAgbWVzc2FnZSBpcyByZWNlaXZlZC4gVGhlbiByZWNlaXZlciB3aWxsIHBy
b2Nlc3MgdGhlIHN0cmVhbQorICAgICAgICB1bnRpbCBzdHJlYW0gaGFzIG5vIG1vcmUgbWVzc2Fn
ZXMgb3IgdW50aWwgb3V0IG91dCBvZiBsaW5lIG1lc3NhZ2UgbWFya2VyIGlzIHJlYWNoZWQuCisK
KyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9uIGFycml2ZSBhcyBiZWZvcmUsIGlu
IG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAgICBtZXNzYWdlLCBhbiBlbnRyeSBp
cyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2lsbCBzdG9wIHByb2Nlc3NpbmcgdGhl
CisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxsIGNvbnRpbnVlIG9uY2UgdGhlIG91
dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4gcHJvY2Vzc2VkLgorCisgICAgICAg
IFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0cmVhbSBzaW11bHRhbmVvdXMgdG8g
dGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1lc3NhZ2VzLiBUaGlzIGlzIGltcGxl
bWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMgc2VuZGVyIGFuZCByZWNlaXZlcgor
ICAgICAgICBwb2ludGVycy4KKworICAgICAgICBQZXJmb3JtYW5jZSBpbXBhY3QgKGlNYWMgUHJv
KToKKyAgICAgICAgICAgIC0gTW90aW9uTWFyayB0cmlhbmdsZXM6IDgwMCBwb2ludHMgLT4gNDUw
MCBwb2ludHMKKyAgICAgICAgICAgICAgKH44ODAwIHBvaW50cyBuby1HUFVQKQorICAgICAgICAg
ICAgLSBXZWJHTCBzYW1wbGVzIEFxdWFyaXVtOiAxMDAwIGZpc2ggfjYwZnBzIC0+IDEwMDAwIGZp
c2ggfjYwZnBzCisgICAgICAgICAgICAgICh+MTAwMDAgZmlzaCB3aXRoIG5vLUdQVVApCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjppc091dE9m
TGluZVN0cmVhbU1lc3NhZ2UgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVy
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rlc3RpbmF0aW9uU3RyZWFtLmg6IEFkZGVkLgor
ICAgICAgICAoSVBDOjpEZXN0aW5hdGlvblN0cmVhbUJhc2U6OkRlc3RpbmF0aW9uU3RyZWFtQmFz
ZSk6CisgICAgICAgIChJUEM6OkRlc3RpbmF0aW9uU3RyZWFtQmFzZTo6aGVhZGVyU2l6ZSk6Cisg
ICAgICAgIChJUEM6OkRlc3RpbmF0aW9uU3RyZWFtQmFzZTo6aGVhZGVyIGNvbnN0KToKKyAgICAg
ICAgKElQQzo6RGVzdGluYXRpb25TdHJlYW1CYXNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OkVuY29kZXIp
OgorICAgICAgICAoSVBDOjpFbmNvZGVyOjpyZXNlcnZlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvRW5jb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VGbGFncy5oLgorICAgICAgICAoSVBD
OjpNZXNzYWdlU3RyZWFtUmVjZWl2ZXI6Ok1lc3NhZ2VTdHJlYW1SZWNlaXZlcik6CisgICAgICAg
IChJUEM6Ok1lc3NhZ2VTdHJlYW1SZWNlaXZlcjo6c3RyZWFtV2FrZVVwKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVNlbmRlci5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6
TWVzc2FnZVN0cmVhbVNlbmRlcjo6TWVzc2FnZVN0cmVhbVNlbmRlcik6CisgICAgICAgIChJUEM6
Ok1lc3NhZ2VTdHJlYW1TZW5kZXI6OnNlbmQpOgorICAgICAgICAoSVBDOjpNZXNzYWdlU3RyZWFt
U2VuZGVyOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTdHJlYW1TZW5kZXI6OmRl
c3RpbmF0aW9uU3RyZWFtSGFuZGxlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNw
bGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlG
dW5jdGlvbnNHZW5lcmF0ZWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YXR0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5k
ZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJsZW5kQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jU2VwYXJhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhckNvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xlYXJEZXB0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFzayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3Jl
YXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmN1bGxGYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlRnJh
bWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGVsZXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoRnVuYyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoTWFzayk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoUmFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXRhY2hTaGFkZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmluaXNoKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Zmx1c2gpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
YW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZnJvbnRGYWNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QXR0cmliTG9jYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRC
dWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbWkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFudik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlcmkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJJbmZvTG9nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlm
b3JtZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpsaW5lV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVDb3ZlcmFnZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNjaXNzb3Ip
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaGFkZXJT
b3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
dGVuY2lsRnVuYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFzayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3ApOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0xaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZnYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2kpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2l2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRm
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm00aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFtKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmFsaWRhdGVQcm9ncmFtKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2Z2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWI0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmlld3BvcnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
SW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YkRpdmlzb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVm
ZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsaXRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZVN1
YkZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cmVhZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UyRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UzRCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJ
bWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29weVRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFMb2Nh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0xdWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMnVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTN1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm00dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTN1aXYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDNmdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRy
aXgzeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYkk0aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdSYW5nZUVs
ZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5RdWVyeSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFF1ZXJ5
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVl
cnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRR
dWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1w
bGVyUGFyYW1ldGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZmVuY2VTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFN5bmMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRyYW5zZm9ybUZl
ZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5UcmFuc2Zv
cm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJCYXNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlclJhbmdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybUluZGljZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1C
bG9ja0JpbmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXJB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlz
VmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpiaW5kVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVudE1h
cmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnB1c2hHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYpOgorCiAy
MDIwLTEyLTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbU09VUF0gV2ViU29ja2V0czogd3JvbmcgZGF0YSBzZW50IGluIHNvbWUgY2FzZXMg
d2l0aCBsaWJzb3VwIDwgMi42OApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDVjNGNhMjVkNGRhYTdkNTgxMzEx
NzBjOTcyMDNmNDA2ZWJiMWRiYTYuLjVkMmYzZWU2MGNmMzFhYTBmNmQwMDg4Nzc4MDhlZTRkYjVl
YzkwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTMwMywxMCArMzAzLDEwIEBAIHZvaWQgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpCiB9CiAKICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pCiB7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Y3JlYXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IFdURk1vdmUoc3RyZWFtKSk7CiAgICAgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDRmMmQ0NGZmYjU1MGFhNmRl
ODEwYjliZjk1MjYyMDdkNTc5ZGI0NzkuLjQ4YjExZjNhY2FkZjA3N2IyMGFjY2ExMWIzZWRmNDAy
YjJmODc1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAK
ICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pOwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29u
dGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCA4ZmMwZWZhYzkzMjE4MjIyYmIwYmM3YzIxYWFiOTE5ZTUz
YTk3MzRlLi4yNGYzNmRmNDJlZTM1ZTk3NTNhZDZlNTc2ZDE3ZWQ4ZmM0YmQ0NzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQCBtZXNzYWdlcyAtPiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENy
ZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBy
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICAgICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNr
ZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250
ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1
dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpCisgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBzdHJlYW0pCiAgICAgdm9pZCBSZWxlYXNlR3Jh
cGhpY3NDb250ZXh0R0woV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKQogI2VuZGlmCiAgICAgdm9pZCBDbGVhck5vd1BsYXlpbmdJ
bmZvKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IGQ4MDRkMWZhOTk5NGQ1ZmZmMzE0
MzY0ZDU5YmVmOTVlYjQ5ZWE5OTkuLjdhNThiNGZkYjUzMWQ2YWEyMTUyMTIwMDdhYjI4ODgwMzZi
ZDQ2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtMzksMTUgKzM5LDE2IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiAhUExBVEZP
Uk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKQorc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmUHRyPFNoYXJlZE1lbW9yeTo6
SGFuZGxlPiYmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQogI2VuZGlmCiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkKLSAgICA6IG1fY29u
dGV4dChXVEZNb3ZlKGNvbnRleHQpKQorUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0sIFJlZjxHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkKKyAgICA6IE1lc3NhZ2VTdHJlYW1SZWNlaXZlcihX
VEZNb3ZlKHN0cmVhbSkpCisgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAgICAs
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKSkKICAgICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggN2RiMGNm
NTE4YWJmOWJiMjVhYjMzNmRkZGUwMzk5OTI1YWEwNWYzMi4uMGIxYWQ1OTdiMDg1MDY2NmQwNzEy
MThmYmYyZTU2MmM2NDUwMmM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI5LDggKzI5
LDggQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmgiCiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KQEAgLTU3LDE2ICs1NywxNSBAQCBjbGFzcyBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKICAgICA6
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKKyAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTdHJlYW1SZWNlaXZlcjxSZW1vdGVHcmFw
aGljc0NvbnRleHRHTD4KICAgICAsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6
OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFw
aGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0cmVhbSk7CiAgICAgflJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKCkgb3ZlcnJpZGU7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7CiAKLXByb3RlY3RlZDoKLSAgICBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+KTsKLQorcHVibGlj
OgogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CkBAIC03NSw2ICs3NCwx
MiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpIGZpbmFsOwogCisgICAgLy8gSVBDOjpNZXNzYWdlU3RyZWFtUmVjZWl2ZXIgdGVt
cGxhdGUgY29udHJhY3QuCisgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKworcHJvdGVjdGVkOgorICAgIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYs
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFtLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+KTsKKwogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3Zl
cnJpZGVzLgogICAgIHZvaWQgZGlkQ29tcG9zaXRlKCkgZmluYWw7CiAgICAgdm9pZCBmb3JjZUNv
bnRleHRMb3N0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW4KaW5kZXggYWEwMzQ3MjVmOWFhNDJmNDJiZDNjOGEwMGIwYWExODA5MGE1OWI5YS4uYTY3ZWJl
ZjRmYTEwMjZkMTZjMjlmNjM1Njk0M2YwNzY5OTY3OWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogLy8gVGhpcyBmaWxlIGlz
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBSZXNoYXBlKGludDMy
X3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQg
UHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5j
aHJvbm91cwpAQCAtMzQsNiArMzQsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChTdHJpbmcgZXh0ZW5zaW9uKQogICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KCkKKyAgICB2b2lkIFN0cmVhbVdha2VVcCgpIFdhbnRzQ29ubmVjdGlvbiAvLyBUT0RPOiB0aGlz
IHNob3VsZCBiZSBtb3ZlZCB0byBtZXNzYWdlcy5weQogCiAgICAgdm9pZCBTZXRGYWlsTmV4dEdQ
VVN0YXR1c0NoZWNrKCkKICAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4IGU3YzQwYzk4NWNiN2Qy
NzIyODY5YTVkZmY5NjkxOTQ3MDc3YWY0NmMuLjM5NDljY2RjODE3NTZjM2QxMzcwNDdhMGYxNDc1
ZmFmMWVmYTAzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTM5
LDcgKzM5LDcgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgcHJpdmF0ZSBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CiBwdWJsaWM6Ci0gICAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlJiYgc3RyZWFtKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSgpIGZp
bmFsID0gZGVmYXVsdDsKIAogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRl
cy4KQEAgLTU1LDEzICs1NSwxMyBAQCBwcml2YXRlOgogCiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCitzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0cmVhbSkKIHsKLSAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPihuZXcgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYShhdHRyaWJ1dGVzLCBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShhdHRyaWJ1dGVzLCBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOwogfQogCi1SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBjb25uZWN0aW9u
LCBpZGVudGlmaWVyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2Vz
cyhhdHRyaWJ1dGVzLCB0aGlzKSkKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0
aW9uLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmllciwgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmJiBzdHJlYW0pCisgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRy
aWJ1dGVzLCBjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHN0cmVhbSksIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGF0dHJpYnV0ZXMsIHRoaXMpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IDJjYjc5Yjcz
MWM4ZDM1MWEyZDA1OTQ2MzYyYzVhYjhiYmFkYmRjNWUuLjIzMjYzMTZlM2I4MzdiYjBkNDNlMmNl
ZGU4YzAxOTlhM2U4NmZmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CkBAIC03NCw2ICs3NCwyNiBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZl
ciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYQogICAgICAgICByZXR1
cm47CiB9CiAKK0RlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogc3RyZWFtLCBzaXplX3Qg
c3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICA6IG1fYnVmZmVyIHsgc3Ry
ZWFtIH0KKyAgICAsIG1fYnVmZmVyUG9zIHsgbV9idWZmZXIgfQorICAgICwgbV9idWZmZXJFbmQg
eyBtX2J1ZmZlciArIHN0cmVhbVNpemUgfQorICAgICwgbV9idWZmZXJEZWFsbG9jYXRvcihbXSAo
Y29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9KQorICAgICwgbV9kZXN0aW5hdGlvbklEKGRlc3Rp
bmF0aW9uSUQpCit7CisgICAgQVNTRVJUKHN0cmVhbVNpemUgPj0gb3V0T2ZMaW5lU3RyZWFtTWVz
c2FnZVNpemUpOworICAgIGlmIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9idWZmZXIp
ICUgc3RyZWFtTWVzc2FnZUFsaWdubWVudCkgeworICAgICAgICBtYXJrSW52YWxpZCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZUZsYWdzKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZU5hbWUpKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKCFkZWNvZGUobV9kZXN0aW5hdGlvbklEKSkKKyAgICAgICAgcmV0dXJu
OworfQorCiBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUsIENvbnN0cnVjdFdpdGhvdXRIZWFkZXJUYWcpCiAgICAgOiBtX2J1ZmZlciB7IGJ1
ZmZlciB9CiAgICAgLCBtX2J1ZmZlclBvcyB7IG1fYnVmZmVyIH0KQEAgLTg0LDYgKzEwNCw3IEBA
IERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6
ZSwgQ29uc3RydWN0V2l0aG91dEhlYWRlCiAgICAgICAgIG1hcmtJbnZhbGlkKCk7CiB9CiAKKwog
RGVjb2Rlcjo6fkRlY29kZXIoKQogewogICAgIEFTU0VSVChtX2J1ZmZlcik7CkBAIC0xMTUsNiAr
MTM2LDEyIEBAIGJvb2wgRGVjb2Rlcjo6c2hvdWxkVXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JU
ZXN0aW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9tZXNzYWdlRmxhZ3MuY29udGFpbnMoTWVzc2Fn
ZUZsYWdzOjpVc2VGdWxseVN5bmNocm9ub3VzTW9kZUZvclRlc3RpbmcpOwogfQogCitib29sIERl
Y29kZXI6OmlzT3V0T2ZMaW5lU3RyZWFtTWVzc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bWVzc2FnZUZsYWdzLmNvbnRhaW5zKE1lc3NhZ2VGbGFnczo6U3RyZWFtTWVzc2FnZU91dE9mTGlu
ZSk7Cit9CisKKwogI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgRGVjb2Rlcjo6c2V0SW1wb3J0YW5j
ZUFzc2VydGlvbihzdGQ6OnVuaXF1ZV9wdHI8SW1wb3J0YW5jZUFzc2VydGlvbj4gYXNzZXJ0aW9u
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IDM0NGNlNjg4MmZjOTA5
ODRiMmZhNTdiZjljNDhiOTY1MGUwZmY3NGUuLjFjMmE0YTI3Yzg4YTVjYzlhMGVlNjY1OTk1ODdj
ODc1ZDg3Mjg3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAgLTQ5LDEx
ICs0OSwxNSBAQCBjbGFzcyBEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
LCBWZWN0b3I8QXR0YWNobWVudD4mJik7CiAgICAgZXhwbGljaXQgRGVjb2Rlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3Ip
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJik7CisgICAgZXhw
bGljaXQgRGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1TaXplLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKICAgICB+RGVjb2RlcigpOwogCiAgICAgRGVjb2Rlcihj
b25zdCBEZWNvZGVyJikgPSBkZWxldGU7CiAgICAgRGVjb2RlcihEZWNvZGVyJiYpID0gZGVsZXRl
OwogCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc3RyZWFtTWVzc2FnZUFsaWdubWVudCA9
IGFsaWdub2YodWludDY0X3QpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG91dE9mTGlu
ZVN0cmVhbU1lc3NhZ2VTaXplID0gc2l6ZW9mKHVpbnQ2NF90KSAqIDI7CisKICAgICBSZWNlaXZl
ck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZSht
X21lc3NhZ2VOYW1lKTsgfQogICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXNzYWdlTmFtZTsgfQogICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uSUQ7IH0KQEAgLTYxLDYgKzY1LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNTeW5jTWVzc2FnZSgpIGNvbnN0OwogICAgIFNob3VsZERpc3BhdGNoV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkgc2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5j
UmVwbHkoKSBjb25zdDsKICAgICBib29sIHNob3VsZFVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9y
VGVzdGluZygpIGNvbnN0OworICAgIGJvb2wgaXNPdXRPZkxpbmVTdHJlYW1NZXNzYWdlKCkgY29u
c3Q7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzZXRJbXBvcnRhbmNlQXNzZXJ0aW9u
KHN0ZDo6dW5pcXVlX3B0cjxJbXBvcnRhbmNlQXNzZXJ0aW9uPik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXN0aW5hdGlvblN0cmVhbS5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGVzdGluYXRpb25TdHJlYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOWNkYzE0MWFm
NzIxMTZhYmQ4NTc2ZDQzMWIzMTI3ODllNzdmYWNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVzdGluYXRpb25TdHJlYW0uaApAQCAtMCwwICsxLDMyMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2lu
Y2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3
dGYvQXRvbWljcy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworCisvLyBUaGUgSVBDIGRlc3RpbmF0
aW9uIHN0cmVhbSBpcyBhIHR3by13YXkgc3RyZWFtIG9mIG1lc3NhZ2VzIHRvIGEgYmV0d2VlbiBh
IHNlbmRlciBhbmQgdGhlCisvLyBkZXN0aW5hdGlvbiByZWNlaXZlci4KKy8vCisvLyBJdCBpcyBp
bXBsZW1lbnRlZCBhcyBEZXN0aW5hdGlvblN0cmVhbVNlbmRlciBhbmQgRGVzdGluYXRpb25TdHJl
YW1SZWNlaXZlci4gRWl0aGVyIG9mIHRoZXNlCisvLyBjYW4gYmUgIndyaXRpbmciIG9yICJyZWFk
aW5nIi4gU2VuZGVyIGlzIHRoZSBpbnN0YW5jZSBzZW5kaW5nIHRoZSBzdHJlYW0gb3ZlciB0byB0
aGUgcmVjZWl2ZXIuCisvLyBGSVhNRTogSW4gY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IGFz
eW5jaHJvbm91cyBtZXNzYWdlcyBnbyB0aHJvdWdoIHRoZSBzdHJlYW0uIFRoaXMgbWVhbnMKKy8v
IHRoZSBzZW5kZXIgaXMgb25seSB3cml0aW5nIGFuZCByZWNlaXZlciBpcyBvbmx5IHJlYWRpbmcu
CisvLworLy8gVGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdpbGwgcmVjZWl2ZSBtZXNzYWdlcyBp
biBvcmRlciBfZm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdlc18uCisvLyBUaGUgd2hvbGUgY29u
bmVjdGlvbiBtZXNzYWdlIG9yZGVyIGlzIG5vdCBwcmVzZXJ2ZWQuCisKKworLy8gU3RyZWFtQnVm
ZmVyIGlzIGEgc2hhcmVkIG1lbW9yeSAiYmktcGFydGl0ZSIgY2lyY3VsYXIgYnVmZmVyIHN1cHBv
cnRpbmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdlcywgc3BlY2lmaWMgZGF0YSBhbGlnbm1l
bnQgd2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUuCisvLyBEZXN0aW5hdGlvblN0cmVhbVNlbmRl
ciBhbmQgRGVzdGluYXRpb25TdHJlbWFSZWNlaXZlciB1c2UgU3RyZWFtQnVmZmVyIHRvIGNvbW11
bmljYXRlLgorLy8KKy8vIFRoZSAiYmktcGFydGl0ZSIgaXMgaGVyZSB0byBtZWFuIHRoYXQgd3Jp
dGVzIGFuZCByZWFkcyB0byB0aGUgYnVmZmVyIG11c3QgYmUKKy8vIGNvbnRpbnVvdXMuCisvLwor
Ly8gVGhlIGNsaWVudCAoc2VuZGVyIG9yIHJlY2VpdmVyKSAiYWNxdWlyZXMiIHNvbWUgYW1vdW50
IG9mIGJ1ZmZlciBkYXRhLiBJZiBidWZmZXIgaGFzIG5vCisvLyBjYXBhY2l0eSwgYWNxdWlyZSBy
ZXR1cm5zIHdpdGggemVybyBjYXBhY2l0eS4gSWYgYnVmZmVyIGhhcyBhdCBsZWFzdCBhY3F1aXJl
ZAorLy8gY2FwYWNpdHksIGFsbCB0aGUgYXZhaWxhYmxlIGNhcGFjaXR5IGlzIHJldHVybmVkLgor
Ly8KKy8vIFRoZSBjbGllbnQgInJlbGVhc2VzIiB0aGUgc29tZSBhbW91bnQgb2YgZGF0YSwgYXQg
bGVhc3QgdGhlIGFtb3VudCBhY3F1aXJlZCBidXQgcG90ZW50aWFsbHkKKy8vIG1vcmUuCisvLwor
Ly8gQm90aCBzZW5kZXIgYW5kIHJlY2VpdmVyIG11c3QgYWNxdWlyZSBzYW1lIGFtb3VudCBvZiBk
YXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhlIGFjcXVpcmUgc2VxdWVuY2UuCisvLyBJZiBzZW5k
ZXIgYWNxdWlyZXMgWCBhbmQgdGhlbiBZIGFtb3VudCwgcmVjZWl2ZXIgbXVzdCBkbyB0aGUgc2Ft
ZS4KKy8vCisvLyBUaGUgY2lyY3VsYXIgYnVmZmVyIGhhcyBmb2xsb3dpbmcgaW1wbGVtZW50YXRp
b246CisvLyAqIFNlbmRlciBvd25zIHRoZSBkYXRhIGJldHdlZW4gW3NlbmRlck9mZnNldCwgcmVj
ZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9mZnNldCA9PQorLy8gcmVjZWl2ZXJPZmZzZXQsIHNl
bmRlciBvd25zIGFsbCB0aGUgZGF0YS4KKy8vICogUmVjZWl2ZXIgb3ducyB0aGUgZGF0YSBiZXR3
ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVyT2Zmc2V0Wy4KKy8vICogVGhlIGJ1ZmZlciBjYW4g
aG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhlIGxhc3QgdmFsdWUgaXMgcmVzZXJ2
ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsLiBGSVhNRTogTWF5
YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBpZgorLy8gaXQgd291bGQgdXNlIHRo
ZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9mIHRoZSBob2xlIGFzIHRoZSBpbmRpY2F0b3IuIFRoaXMg
d291bGQgbW92ZQorLy8gdGhlIGFsaWduZWRTcGFuIGltcGxlbWVudGF0aW9uIHRvIHRoZSBTdHJl
YW1CdWZmZXIuCisvLyAqIEFsbCBhdG9taWMgdmFyaWFibGUgbG9hZHMgYXJlIHVudHJ1c3RlZCwg
c28gdGhleSdyZSBjbGFtcGVkLiBWaW9sYXRpb25zIGFyZSBub3QgcmVwb3J0ZWQsCisvLyB0aG91
Z2guCisvLyBTZWUgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuCit0ZW1wbGF0ZTxzaXplX3QgbWVz
c2FnZUFsaWdubWVudD4KK2NsYXNzIFN0cmVhbUJ1ZmZlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtQnVmZmVyKTsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBTdHJlYW1CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYm
IG1lbW9yeSwgc2l6ZV90IG1lbW9yeVNpemUpCisgICAgICAgIDogbV9kYXRhU2l6ZShtZW1vcnlT
aXplIC0gaGVhZGVyU2l6ZSgpKQorICAgICAgICAsIG1fc2hhcmVkTWVtb3J5KFdURk1vdmUobWVt
b3J5KSkKKyAgICB7CisgICAgfQorCisgICAgflN0cmVhbUJ1ZmZlcigpID0gZGVmYXVsdDsKKyAg
ICBzdHJ1Y3QgSGVhZGVyIHsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gcmVjZWl2ZXJPZmZzZXQ7
CisgICAgICAgIC8vIFBhZGRpbmcgc28gdGhhdCB0aGUgdmFyaWFibGVzIG1vc3RseSBhY2Nlc3Nl
ZCBieSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGRvIG5vdCBzaGFyZSBhIGNhY2hlIGxpbmUuCisgICAg
ICAgIC8vIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBhdm9pZCBjYWNoZS1saW5lIGluZHVjZWQgcmVk
dWN0aW9uIG9mIHBhcmFsbGVsIGFjY2Vzcy4KKyAgICAgICAgdWludDY0X3QgY2FjaGVMaW5lUGFk
ZGluZ1syXTsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gc2VuZGVyT2Zmc2V0OworICAgIH07CisK
KyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBoZWFkZXJTaXplKCkKKyAgICB7CisgICAgICAg
IHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihzdGQ6Om1heF9hbGlnbl90KT4oc2l6
ZW9mKEhlYWRlcikpOworICAgIH0KKworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZz
ZXQpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IGRhdGFTaXplKCkpOwor
ICAgICAgICBpZiAob2Zmc2V0ID09IGRhdGFTaXplKCkpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICBzaXplX3QgYWxpZ25PZmZzZXQo
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGFjcXVpcmVTaXplKSBjb25zdAorICAgIHsKKyAgICAgICAg
b2Zmc2V0ID0gcm91bmRVcFRvTXVsdGlwbGVPZjxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQpOwor
ICAgICAgICBpZiAob2Zmc2V0ICsgYWNxdWlyZVNpemUgPj0gZGF0YVNpemUoKSkKKyAgICAgICAg
ICAgIG9mZnNldCA9IDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgSGVh
ZGVyJiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxIZWFkZXIqPiht
X3NoYXJlZE1lbW9yeS0+ZGF0YSgpKTsgfQorCisgICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSArIGhl
YWRlclNpemUoKTsgfQorCisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhU2l6ZTsgfQorCisgICAgLy8gVGFnIHZhbHVlIHN0b3JlZCBpbiBIZWFkZXI6OnNlbmRlck9m
ZnNldCB3aGVuIHJlY2VpdmVyIGlzIHNsZWVwaW5nLgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZyA9IDEgPDwgMzE7CisKKyAgICBX
ZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZUZvclJlY2VpdmVyKCkKKyAgICB7
CisgICAgICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgICAgICBp
ZiAoIW1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAg
ICAgIHJldHVybiB7IFdURk1vdmUoaGFuZGxlKSwgbV9zaGFyZWRNZW1vcnktPnNpemUoKSB9Owor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBzaXplX3QgbV9kYXRhU2l6ZTsKKyAgICBSZWY8
V2ViS2l0OjpTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworfTsKKworY2xhc3MgRGVzdGlu
YXRpb25TdHJlYW1TZW5kZXIgIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShEZXN0aW5hdGlvblN0cmVhbVNlbmRlcik7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluTWVzc2FnZVNpemUgPSBFbmNvZGVyOjpvdXRP
ZkxpbmVTdHJlYW1NZXNzYWdlU2l6ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNz
YWdlQWxpZ25tZW50ID0gRW5jb2Rlcjo6c3RyZWFtTWVzc2FnZUFsaWdubWVudDsKKworICAgIGV4
cGxpY2l0IERlc3RpbmF0aW9uU3RyZWFtU2VuZGVyKHNpemVfdCBzaXplKQorICAgICAgICA6IG1f
YnVmZmVyKGNyZWF0ZU1lbW9yeShzaXplKSwgc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIFJlYWQg
c3RhcnRzIGZyb20gMCB3aXRoIGxpbWl0IG9mIDAgYW5kIHJlYWRlciBzbGVlcGluZy4KKyAgICAg
ICAgaGVhZGVyKCkuc2VuZGVyT2Zmc2V0LnN0b3JlKFN0cmVhbUJ1ZmZlclR5cGU6OnNlbmRlck9m
ZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7Cisg
ICAgICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAgd2l0aCBhIGxpbWl0IG9mIHRoZSB3aG9sZSBi
dWZmZXIuCisgICAgICAgIGhlYWRlcigpLnJlY2VpdmVyT2Zmc2V0LnN0b3JlKDAsIHN0ZDo6bWVt
b3J5X29yZGVyX3JlbGF4ZWQpOworICAgIH0KKyAgICBzdHJ1Y3QgU3BhbiB7CisgICAgICAgIHVp
bnQ4X3QqIHB0cjsKKyAgICAgICAgc2l6ZV90IGNhcGFjaXR5OworICAgIH07CisKKyAgICBTcGFu
IHRyeUFjcXVpcmUoKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHNlbmRlckxpbWl0ID0gc3RkOjpt
aW4oaGVhZGVyKCkucmVjZWl2ZXJPZmZzZXQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJl
KSwgZGF0YVNpemUoKSk7CisgICAgICAgIHJldHVybiBhbGlnbmVkU3BhbihtX3NlbmRlck9mZnNl
dCwgc2VuZGVyTGltaXQpOworICAgIH0KKworICAgIGVudW0gY2xhc3MgV2FrZVVwUmVhZGVyIDog
Ym9vbCB7CisgICAgICAgIE5vLAorICAgICAgICBZZXMKKyAgICB9OworCisgICAgV2FrZVVwUmVh
ZGVyIHJlbGVhc2Uoc2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBzaXplX3QgZXhwZWN0ZWRS
ZWNlaXZlckxpbWl0ID0gbV9zZW5kZXJPZmZzZXQ7CisgICAgICAgIG1fc2VuZGVyT2Zmc2V0ID0g
d3JhcE9mZnNldChhbGlnbk9mZnNldChtX3NlbmRlck9mZnNldCkgKyBzaXplKTsKKyAgICAgICAg
QVNTRVJUKG1fc2VuZGVyT2Zmc2V0IDwgZGF0YVNpemUoKSk7CisgICAgICAgIC8vIElmIHJlY2Vp
dmVyIG92ZXJ3cm90ZSB0aGUgc2VuZGVyT2Zmc2V0IHdpdGggc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJ
c1NsZWVwaW5nVGFnLCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgorICAgICAgICBzaXplX3QgcmVj
ZWl2ZXJMaW1pdCA9IGhlYWRlcigpLnNlbmRlck9mZnNldC5leGNoYW5nZShtX3NlbmRlck9mZnNl
dCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgICAgIGlmIChyZWNlaXZlckxpbWl0
ICE9IGV4cGVjdGVkUmVjZWl2ZXJMaW1pdCkKKyAgICAgICAgICAgIHJldHVybiBXYWtlVXBSZWFk
ZXI6OlllczsKKyAgICAgICAgcmV0dXJuIFdha2VVcFJlYWRlcjo6Tm87CisgICAgfQorCisgICAg
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBkZXN0aW5hdGlvblN0cmVhbUhhbmRsZSgp
CisgICAgeworICAgICAgICByZXR1cm4gbV9idWZmZXIuaGFuZGxlRm9yUmVjZWl2ZXIoKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gY3Jl
YXRlTWVtb3J5KHNpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgYXV0byBtZW1vcnkgPSBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZSk7CisgICAgICAgIGlmICghbWVtb3J5KQor
ICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgcmV0dXJuIG1lbW9yeS5yZWxlYXNlTm9uTnVs
bCgpOworICAgIH0KKworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zmc2V0KTsgfQorCisgICAgc2l6ZV90IGFs
aWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zm
c2V0KG9mZnNldCwgbWluTWVzc2FnZVNpemUpOyB9CisKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvZmZzZXQg
PCBkYXRhU2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKGxpbWl0IDwgZGF0YVNpemUoKSk7CisgICAg
ICAgIHNpemVfdCBhbGlnbmVkID0gYWxpZ25PZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgc2l6ZV90
IHNpemUgPSAwOworICAgICAgICBpZiAob2Zmc2V0IDwgbGltaXQpIHsKKyAgICAgICAgICAgIGlm
IChhbGlnbmVkID49IG9mZnNldCAmJiBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAgICAgICAg
c2l6ZSA9IGxlbihhbGlnbmVkLCBsaW1pdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgfHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAg
ICAgIHNpemUgPSBsZW4oYWxpZ25lZCwgbGltaXQpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB7IGRhdGEoKSArIGFsaWduZWQsIHNpemUgfTsKKyAgICB9CisKKyAgICBzaXplX3QgbGVuKHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKKyAgICB7CisgICAgICAgIGlmICghbGltaXQpCisg
ICAgICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAtIDEgLSBvZmZzZXQ7CisgICAgICAgIGlmIChs
aW1pdCA8PSBvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAtIG9mZnNldDsK
KyAgICAgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0IC0gMTsKKyAgICB9CisKKyAgICB1c2luZyBT
dHJlYW1CdWZmZXJUeXBlID0gU3RyZWFtQnVmZmVyPG1lc3NhZ2VBbGlnbm1lbnQ+OworCisgICAg
U3RyZWFtQnVmZmVyVHlwZTo6SGVhZGVyJiBoZWFkZXIoKSB7IHJldHVybiBtX2J1ZmZlci5oZWFk
ZXIoKTsgfQorCisgICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRh
dGEoKTsgfQorCisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
ZGF0YVNpemUoKTsgfQorCisgICAgU3RyZWFtQnVmZmVyVHlwZSBtX2J1ZmZlcjsKKyAgICBzaXpl
X3QgbV9zZW5kZXJPZmZzZXQgeyAwIH07Cit9OworCitjbGFzcyBEZXN0aW5hdGlvblN0cmVhbVJl
Y2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShEZXN0aW5hdGlvblN0cmVhbVJlY2VpdmVyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBtaW5NZXNzYWdlU2l6ZSA9IEVuY29kZXI6Om91dE9mTGluZVN0cmVh
bU1lc3NhZ2VTaXplOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1l
bnQgPSBFbmNvZGVyOjpzdHJlYW1NZXNzYWdlQWxpZ25tZW50OworCisgICAgZXhwbGljaXQgRGVz
dGluYXRpb25TdHJlYW1SZWNlaXZlcihXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYg
c3RyZWFtKQorICAgIHsKKyAgICAgICAgaWYgKHN0cmVhbS5kYXRhU2l6ZSA8IFN0cmVhbUJ1ZmZl
clR5cGU6OmhlYWRlclNpemUoKSArIG1pbk1lc3NhZ2VTaXplKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjptYXAo
c3RyZWFtLmhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0
ZSk7CisgICAgICAgIGlmIChzaGFyZWRNZW1vcnktPnNpemUoKSA8IHN0cmVhbS5kYXRhU2l6ZSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9idWZmZXIgPSBtYWtlVW5pcXVlPFN0cmVh
bUJ1ZmZlclR5cGU+KHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KHN0cmVhbS5kYXRhU2l6ZSkpOworICAgIH0KKworICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KKworICAgIHN0cnVjdCBTcGFuIHsKKyAgICAgICAg
dWludDhfdCogcHRyOworICAgICAgICBzaXplX3QgY2FwYWNpdHk7CisgICAgfTsKKworICAgIFNw
YW4gdHJ5QXF1aXJlKCkKKyAgICB7CisgICAgICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gaGVh
ZGVyKCkuc2VuZGVyT2Zmc2V0LmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CisgICAg
ICAgIHJlY2VpdmVyTGltaXQgJj0gflN0cmVhbUJ1ZmZlclR5cGU6OnNlbmRlck9mZnNldFJlY2Vp
dmVySXNTbGVlcGluZ1RhZzsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IHN0ZDo6bWluKHJlY2Vp
dmVyTGltaXQsIGRhdGFTaXplKCkpOworICAgICAgICByZXR1cm4gYWxpZ25lZFNwYW4obV9yZWNl
aXZlck9mZnNldCwgcmVjZWl2ZXJMaW1pdCk7CisgICAgfQorCisgICAgU3BhbiByZWxlYXNlKHNp
emVfdCByZWFkU2l6ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWFkU2l6ZSk7CisgICAgICAg
IG1fcmVjZWl2ZXJPZmZzZXQgPSB3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1fcmVjZWl2ZXJPZmZz
ZXQpICsgcmVhZFNpemUpOworICAgICAgICBoZWFkZXIoKS5yZWNlaXZlck9mZnNldC5zdG9yZSht
X3JlY2VpdmVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKKyAgICAgICAgc2l6
ZV90IHJlY2VpdmVyTGltaXQgPSBoZWFkZXIoKS5zZW5kZXJPZmZzZXQubG9hZChzdGQ6Om1lbW9y
eV9vcmRlcl9hY3F1aXJlKTsKKyAgICAgICAgaWYgKHJlY2VpdmVyTGltaXQgPT0gbV9yZWNlaXZl
ck9mZnNldCkKKyAgICAgICAgICAgIHJlY2VpdmVyTGltaXQgPSBoZWFkZXIoKS5zZW5kZXJPZmZz
ZXQuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHJlY2VpdmVyTGltaXQsIG1fcmVjZWl2ZXJPZmZzZXQg
fCBTdHJlYW1CdWZmZXJUeXBlOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0
ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAg
ICAgICByZWNlaXZlckxpbWl0ID0gc3RkOjptaW4ocmVjZWl2ZXJMaW1pdCwgZGF0YVNpemUoKSk7
CisgICAgICAgIHJldHVybiBhbGlnbmVkU3BhbihtX3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxp
bWl0KTsKKyAgICB9Citwcml2YXRlOgorICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZz
ZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLT53cmFwT2Zmc2V0KG9mZnNldCk7IH0KKworICAg
IHNpemVfdCBhbGlnbk9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci0+YWxpZ25PZmZzZXQob2Zmc2V0LCBtaW5NZXNzYWdlU2l6ZSk7IH0KKworICAgIFNwYW4gYWxp
Z25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG9mZnNldCA8IGRhdGFTaXplKCkpOworICAgICAgICBBU1NFUlQobGltaXQgPCBkYXRhU2l6
ZSgpKTsKKyAgICAgICAgc2l6ZV90IGFsaWduZWQgPSBhbGlnbk9mZnNldChvZmZzZXQpOworICAg
ICAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgICAgIGlmIChvZmZzZXQgPCBsaW1pdCkgeworICAg
ICAgICAgICAgaWYgKG9mZnNldCA8PSBhbGlnbmVkICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAg
ICAgICAgICAgICBzaXplID0gbGVuKGFsaWduZWQsIGxpbWl0KTsKKyAgICAgICAgfSBlbHNlIGlm
IChvZmZzZXQgPiBsaW1pdCkgeworICAgICAgICAgICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0IHx8
IGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgICAgICBzaXplID0gbGVuKGFsaWduZWQsIGxp
bWl0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geyBkYXRhKCkgKyBhbGlnbmVkLCBzaXpl
IH07CisgICAgfQorCisgICAgc2l6ZV90IGxlbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQp
CisgICAgeworICAgICAgICBpZiAob2Zmc2V0IDw9IGxpbWl0KQorICAgICAgICAgICAgcmV0dXJu
IGxpbWl0IC0gb2Zmc2V0OworICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAtIG9mZnNldDsKKyAg
ICB9CisKKyAgICB1c2luZyBTdHJlYW1CdWZmZXJUeXBlID0gU3RyZWFtQnVmZmVyPG1lc3NhZ2VB
bGlnbm1lbnQ+OworCisgICAgU3RyZWFtQnVmZmVyVHlwZTo6SGVhZGVyJiBoZWFkZXIoKSB7IHJl
dHVybiBtX2J1ZmZlci0+aGVhZGVyKCk7IH0KKworICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci0+ZGF0YSgpOyB9CisKKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci0+ZGF0YVNpemUoKTsgfQorCisgICAgc3RkOjp1bmlxdWVfcHRy
PFN0cmVhbUJ1ZmZlclR5cGU+IG1fYnVmZmVyOworICAgIHNpemVfdCBtX3JlY2VpdmVyT2Zmc2V0
IHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0VuY29kZXIuY3BwCmluZGV4IGU4M2EzZTRhZmY0MmE1NzU1MDVkYzhmMDczMTdhMWMxYWMx
OWRlYWUuLmFkMWU3YTkxOTVhMTBhZWE5NTgyM2RjYmI4MTA4YmZiZDIwYWQ5MmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwCkBAIC03Myw2ICs3MywyMCBAQCBFbmNvZGVy
OjpFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KQogICAgIGVuY29kZUhlYWRlcigpOwogfQogCitFbmNvZGVyOjpFbmNvZGVyKE1lc3NhZ2VOYW1l
IG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50OF90KiBzdHJlYW0sIHNp
emVfdCBzdHJlYW1DYXBhY2l0eSkKKyAgICA6IG1fbWVzc2FnZU5hbWUobWVzc2FnZU5hbWUpCisg
ICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25JRCkKKyAgICAsIG1fYnVmZmVyKHN0cmVh
bSkKKyAgICAsIG1fYnVmZmVyUG9pbnRlcihzdHJlYW0pCisgICAgLCBtX2J1ZmZlclNpemUoMCkK
KyAgICAsIG1fYnVmZmVyQ2FwYWNpdHkoc3RyZWFtQ2FwYWNpdHkpCisgICAgLCBtX2lzRW5jb2Rp
bmdUb1N0cmVhbSh0cnVlKQoreworICAgIGVuY29kZUhlYWRlcigpOworICAgIC8vIEZJWE1FOiBI
ZXJlIHdlIHNob3VsZCBlbmNvZGUgc3RyZWFtIGhlYWRlciBpbnN0ZWFkLCB3aXRob3V0IHRoZSBk
ZXN0aW5hdGlvbiBJRC4KKyAgICAvLyBIb3dldmVyLCB0aGUgY3VycmVudCBjb2RlIGRvZXMgbm90
IGVhc2lseSBzdXBwb3J0IHN3aXRjaGluZyB0aGUgZW5jb2Rpbmcgc2l6ZS4KK30KKwogRW5jb2Rl
cjo6RW5jb2RlcihDb25zdHJ1Y3RXaXRob3V0SGVhZGVyVGFnKQogICAgIDogbV9tZXNzYWdlTmFt
ZSgpCiAgICAgLCBtX2Rlc3RpbmF0aW9uSUQoMCkKQEAgLTg1LDkgKzk5LDExIEBAIEVuY29kZXI6
OkVuY29kZXIoQ29uc3RydWN0V2l0aG91dEhlYWRlclRhZykKIAogRW5jb2Rlcjo6fkVuY29kZXIo
KQogewotICAgIGlmIChtX2J1ZmZlciAhPSBtX2lubGluZUJ1ZmZlcikKLSAgICAgICAgZnJlZUJ1
ZmZlcihtX2J1ZmZlciwgbV9idWZmZXJDYXBhY2l0eSk7Ci0gICAgLy8gRklYTUU6IFdlIG5lZWQg
dG8gZGlzcG9zZSBvZiB0aGUgYXR0YWNobWVudHMgaW4gY2FzZXMgb2YgZmFpbHVyZS4KKyAgICBp
ZiAoIW1faXNFbmNvZGluZ1RvU3RyZWFtKSB7CisgICAgICAgIGlmIChtX2J1ZmZlciAhPSBtX2lu
bGluZUJ1ZmZlcikKKyAgICAgICAgICAgIGZyZWVCdWZmZXIobV9idWZmZXIsIG1fYnVmZmVyQ2Fw
YWNpdHkpOworICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBkaXNwb3NlIG9mIHRoZSBhdHRh
Y2htZW50cyBpbiBjYXNlcyBvZiBmYWlsdXJlLgorICAgIH0KIH0KIAogYm9vbCBFbmNvZGVyOjpp
c1N5bmNNZXNzYWdlKCkgY29uc3QKQEAgLTE2MCwyMSArMTc2LDI0IEBAIHZvaWQgRW5jb2Rlcjo6
cmVzZXJ2ZShzaXplX3Qgc2l6ZSkKICAgICBpZiAoc2l6ZSA8PSBtX2J1ZmZlckNhcGFjaXR5KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBzaXplX3QgbmV3Q2FwYWNpdHkgPSByb3VuZFVwVG9BbGln
bm1lbnQobV9idWZmZXJDYXBhY2l0eSAqIDIsIDQwOTYpOwotICAgIHdoaWxlIChuZXdDYXBhY2l0
eSA8IHNpemUpCi0gICAgICAgIG5ld0NhcGFjaXR5ICo9IDI7CisgICAgc2l6ZV90IGNhcGFjaXR5
ID0gcm91bmRVcFRvQWxpZ25tZW50KG1fYnVmZmVyQ2FwYWNpdHkgKiAyLCA0MDk2KTsKKyAgICB3
aGlsZSAoY2FwYWNpdHkgPCBzaXplKQorICAgICAgICBjYXBhY2l0eSAqPSAyOwogCi0gICAgdWlu
dDhfdCogbmV3QnVmZmVyOwotICAgIGlmICghYWxsb2NCdWZmZXIobmV3QnVmZmVyLCBuZXdDYXBh
Y2l0eSkpCisgICAgdWludDhfdCogYnVmZmVyOworICAgIGlmICghYWxsb2NCdWZmZXIoYnVmZmVy
LCBjYXBhY2l0eSkpCiAgICAgICAgIENSQVNIKCk7Ci0KLSAgICBtZW1jcHkobmV3QnVmZmVyLCBt
X2J1ZmZlciwgbV9idWZmZXJTaXplKTsKLQotICAgIGlmIChtX2J1ZmZlciAhPSBtX2lubGluZUJ1
ZmZlcikKLSAgICAgICAgZnJlZUJ1ZmZlcihtX2J1ZmZlciwgbV9idWZmZXJDYXBhY2l0eSk7Ci0K
LSAgICBtX2J1ZmZlciA9IG5ld0J1ZmZlcjsKLSAgICBtX2J1ZmZlckNhcGFjaXR5ID0gbmV3Q2Fw
YWNpdHk7CisgICAgc3RkOjpzd2FwKG1fYnVmZmVyLCBidWZmZXIpOworICAgIHN0ZDo6c3dhcCht
X2J1ZmZlckNhcGFjaXR5LCBjYXBhY2l0eSk7CisgICAgbWVtY3B5KG1fYnVmZmVyLCBidWZmZXIs
IG1fYnVmZmVyU2l6ZSk7CisKKyAgICBpZiAobV9pc0VuY29kaW5nVG9TdHJlYW0pIHsKKyAgICAg
ICAgbV9pc0VuY29kaW5nVG9TdHJlYW0gPSBmYWxzZTsKKyAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxPcHRpb25TZXQ8TWVzc2FnZUZsYWdzPio+KGJ1ZmZlciktPmFkZChNZXNzYWdlRmxhZ3M6OlN0
cmVhbU1lc3NhZ2VPdXRPZkxpbmUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChidWZmZXIg
IT0gbV9pbmxpbmVCdWZmZXIpCisgICAgICAgICAgICBmcmVlQnVmZmVyKGJ1ZmZlciwgY2FwYWNp
dHkpOworICAgIH0KIH0KIAogdm9pZCBFbmNvZGVyOjplbmNvZGVIZWFkZXIoKQpAQCAtMjAxLDcg
KzIyMCw4IEBAIHVpbnQ4X3QqIEVuY29kZXI6Omdyb3coc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90
IHNpemUpCiAgICAgc2l6ZV90IGFsaWduZWRTaXplID0gcm91bmRVcFRvQWxpZ25tZW50KG1fYnVm
ZmVyU2l6ZSwgYWxpZ25tZW50KTsKICAgICByZXNlcnZlKGFsaWduZWRTaXplICsgc2l6ZSk7CiAK
LSAgICBzdGQ6Om1lbXNldChtX2J1ZmZlciArIG1fYnVmZmVyU2l6ZSwgMCwgYWxpZ25lZFNpemUg
LSBtX2J1ZmZlclNpemUpOworICAgIGlmIChtX2J1ZmZlclNpemUgPCBhbGlnbmVkU2l6ZSkKKyAg
ICAgICAgc3RkOjptZW1zZXQobV9idWZmZXIgKyBtX2J1ZmZlclNpemUsIDAsIGFsaWduZWRTaXpl
IC0gbV9idWZmZXJTaXplKTsKIAogICAgIG1fYnVmZmVyU2l6ZSA9IGFsaWduZWRTaXplICsgc2l6
ZTsKICAgICBtX2J1ZmZlclBvaW50ZXIgPSBtX2J1ZmZlciArIGFsaWduZWRTaXplICsgc2l6ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaAppbmRleCBlYTYxOTY3YmUxZWJjYmQ4YjZm
YmJhYThiODVhZjQxOGU4ZDUwY2NhLi5lYjJhZjUxNTUyZWE4ZmI0ZTg5NTBiMzFlMjI2M2M2MTNl
N2ZkZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5oCkBAIC00NCw4ICs0NCwy
MSBAQCBjbGFzcyBFbmNvZGVyIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBFbmNvZGVyKE1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KTsKKyAgICBFbmNvZGVyKE1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCB1aW50
OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1DYXBhY2l0eSk7CiAgICAgfkVuY29kZXIoKTsKIAor
ICAgIC8vIFN0cmVhbSBtZXNzYWdlIGVuY29kaW5nIG1pZ2h0IHN3aXRjaCB0byBlbmNvZGluZyB0
aGUgbWVzc2FnZSB0byBhIG91dC1vZi1saW5lLAorICAgIC8vIG5vcm1hbCBJUEMgbWVzc2FnZS4g
VGhlIGFsaWdubWVudCBvZiB0aGUgc3RyZWFtIG1lc3NhZ2UgZGF0YSBidWZmZXIgbmVlZHMgdG8g
bWF0Y2ggdG8KKyAgICAvLyBjYXNlIHdoZXJlIHRoZSBtZXNzYWdlIHdvdWxkIGJlIGVuY29kZWQg
dG8gbm9ybWFsIG1lc3NhZ2UgZGF0YSBidWZmZXIuIFRoZSBzdHJlYW1NZXNzYWdlQWxpZ25tZW50
CisgICAgLy8gY29uc3RhbnQgZGVmaW5lcyB0aGlzLgorICAgIC8vIEZJWE1FOiBDdXJyZW50bHkg
dGhpcyBpcyBtb3N0bHkgY29ycmVjdCBhcyB0aGVyZSBhcmUgbm8gb2JqZWN0cyB3aXRoIGxhcmdl
ciBhbGlnbm1lbnQuCisgICAgLy8gSW4gZnV0dXJlLCBsYXJnZXIgYWxpZ25lZCBvYmplY3RzIG1p
Z2h0IGVuZCB1cCBpbiBkaWZmZXJlbnQgcG9zaXRpb24gaW4gYSBzdHJlYW0gbWVzc2FnZSB0aGFu
IGluCisgICAgLy8gYSBub24tc3RyZWFtIG1lc3NhZ2UuIEVuY29kaW5nIGJ1ZmZlciBmb3Igbm9u
LXN0cmVhbSBtZXNzYWdlcyBpcyBhbHdheXMgYXQgbWF4X2FsaWduX3QsIHdoZXJlCisgICAgLy8g
YXMgc3RyZWFtIG1lc3NhZ2VzIGFyZSBub3QuIE1heWJlIGFsaWduIHRvIG1heF9hbGlnbl90Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc3RyZWFtTWVzc2FnZUFsaWdubWVudCA9IGFsaWdu
b2YodWludDY0X3QpOworICAgIC8vIEN1cnJlbnQgbWVzc2FnZSBoZWFkZXIgaXMgdGhpcyBzaXpl
LgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG91dE9mTGluZVN0cmVhbU1lc3NhZ2VTaXpl
ID0gc2l6ZW9mKHVpbnQ2NF90KSAqIDI7CisKICAgICBSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2Vp
dmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJlY2VpdmVyTmFtZShtX21lc3NhZ2VOYW1lKTsgfQog
ICAgIE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlTmFt
ZTsgfQogICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uSUQ7IH0KQEAgLTk2LDYgKzEwOSw4IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8QXR0YWNo
bWVudD4gcmVsZWFzZUF0dGFjaG1lbnRzKCk7CiAgICAgdm9pZCByZXNlcnZlKHNpemVfdCk7CiAK
KyAgICBib29sIGlzRW5jb2RpbmdUb1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmNvZGlu
Z1RvU3RyZWFtOyB9CisKICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0lQQ0VuY29kZXIgPSB0cnVl
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTE0Miw2ICsxNTcsOCBAQCBwcml2YXRl
OgogICAgIHNpemVfdCBtX2J1ZmZlclNpemU7CiAgICAgc2l6ZV90IG1fYnVmZmVyQ2FwYWNpdHk7
CiAKKyAgICBib29sIG1faXNFbmNvZGluZ1RvU3RyZWFtIHsgZmFsc2UgfTsKKwogICAgIFZlY3Rv
cjxBdHRhY2htZW50PiBtX2F0dGFjaG1lbnRzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZUZsYWdzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9NZXNzYWdlRmxhZ3MuaAppbmRleCBhZDRkNDUyZTFlY2RlOTNhYWIxMjBkZjFiMTQ5OTZh
OTA3YzMxZDFlLi5lMjcyZmE5YjkyMzU4N2JiMTk1YWFkZGUxZjU3MDg0NDgxZmY1MjdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaApAQCAtMzIsNiArMzIsNyBA
QCBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4X3QgewogICAgIERpc3BhdGNoTWVzc2Fn
ZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5ID0gMSA8PCAxLAogICAgIERpc3BhdGNoTWVzc2FnZVdo
ZW5XYWl0aW5nRm9yVW5ib3VuZGVkU3luY1JlcGx5ID0gMSA8PCAyLAogICAgIFVzZUZ1bGx5U3lu
Y2hyb25vdXNNb2RlRm9yVGVzdGluZyA9IDEgPDwgMywKKyAgICBTdHJlYW1NZXNzYWdlT3V0T2ZM
aW5lID0gMSA8PCA0LAogfTsKIAogZW51bSBjbGFzcyBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5IDogdWludDhfdCB7CkBAIC01MCw3ICs1MSw4IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8SVBDOjpNZXNzYWdlRmxhZ3M+IHsKICAgICAgICAgSVBDOjpNZXNzYWdl
RmxhZ3M6OlN5bmNNZXNzYWdlLAogICAgICAgICBJUEM6Ok1lc3NhZ2VGbGFnczo6RGlzcGF0Y2hN
ZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHksCiAgICAgICAgIElQQzo6TWVzc2FnZUZsYWdz
OjpEaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclVuYm91bmRlZFN5bmNSZXBseSwKLSAgICAg
ICAgSVBDOjpNZXNzYWdlRmxhZ3M6OlVzZUZ1bGx5U3luY2hyb25vdXNNb2RlRm9yVGVzdGluZwor
ICAgICAgICBJUEM6Ok1lc3NhZ2VGbGFnczo6VXNlRnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0
aW5nLAorICAgICAgICBJUEM6Ok1lc3NhZ2VGbGFnczo6U3RyZWFtTWVzc2FnZU91dE9mTGluZQog
ICAgID47CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlU3RyZWFtUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VT
dHJlYW1SZWNlaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZjk1OGI3Mjc3NmEzNjRkMjg4MTYyMmI2MjA2
OTIxMmZhYjcwZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9NZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJE
ZWNvZGVyLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25TdHJlYW0uaCIKKyNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBJUEMgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBTZWxmPgorY2xhc3MgTWVzc2FnZVN0cmVhbVJlY2VpdmVyICB7CitwdWJs
aWM6CisgICAgTWVzc2FnZVN0cmVhbVJlY2VpdmVyKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUmJiBzdHJlYW0pCisgICAgICAgIDogbV9zdHJlYW0oV1RGTW92ZShzdHJlYW0pKQorICAg
IHsgfQorICAgIH5NZXNzYWdlU3RyZWFtUmVjZWl2ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2b2lk
IHN0cmVhbVdha2VVcChDb25uZWN0aW9uJiBjb25uZWN0aW9uKQorICAgIHsKKyAgICAgICAgaWYg
KCFtX3N0cmVhbS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBjbG9zZSB0aGUg
Y29ubmVjdGlvbi4KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBGSVhNRTog
UmVtb3ZlIG9uY2UgZGVidWdnaW5nIGVuZHMuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgYXV0byBkZXN0aW5hdGlvbklEID0gc3RhdGljX2Nhc3Q8U2VsZio+KHRoaXMp
LT5tZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpOworICAgICAgICBhdXRvIHNwYW4gPSBtX3N0
cmVhbS50cnlBcXVpcmUoKTsKKyAgICAgICAgd2hpbGUgKHNwYW4uY2FwYWNpdHkgPj0gRGVjb2Rl
cjo6b3V0T2ZMaW5lU3RyZWFtTWVzc2FnZVNpemUpIHsKKyAgICAgICAgICAgIElQQzo6RGVjb2Rl
ciBkZWNvZGVyIHsgc3Bhbi5wdHIsIHNwYW4uY2FwYWNpdHksIGRlc3RpbmF0aW9uSUQgfTsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBG
SVhNRTogY2xvc2UgdGhlIGNvbm5lY3Rpb24uCisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IC8vIEZJWE1FOiBSZW1vdmUgb25jZSBkZWJ1Z2dpbmcgZW5kcy4KKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGVjb2Rlci5p
c091dE9mTGluZVN0cmVhbU1lc3NhZ2UoKSkgeworICAgICAgICAgICAgICAgIHNwYW4gPSBtX3N0
cmVhbS5yZWxlYXNlKERlY29kZXI6Om91dE9mTGluZVN0cmVhbU1lc3NhZ2VTaXplKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PFNlbGYqPih0aGlzKS0+ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IGNsb3NlIHRoZSBjb25uZWN0aW9uLgorICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgZGVidWdnaW5nIGVuZHMuCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3BhbiA9
IG1fc3RyZWFtLnJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAg
ICAgIH0KKyAgICB9Citwcml2YXRlOgorICAgIERlc3RpbmF0aW9uU3RyZWFtUmVjZWl2ZXIgbV9z
dHJlYW07Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1TZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1TZW5kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzdkYjNlZmYzMmQw
MGFmYTc3NDdhY2Y4MDU1OGQ5NDU3ZDQ0ZTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVNlbmRlci5oCkBAIC0wLDAgKzEsOTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uU3RyZWFtLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNZXNzYWdlcy5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFt
ZXNwYWNlIElQQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFNlbGY+CitjbGFzcyBNZXNzYWdlU3Ry
ZWFtU2VuZGVyICB7CitwdWJsaWM6CisgICAgTWVzc2FnZVN0cmVhbVNlbmRlcihzaXplX3Qgc3Ry
ZWFtU2l6ZSkKKyAgICAgICAgOiBtX3N0cmVhbShzdHJlYW1TaXplKQorICAgIHsgfQorICAgIH5N
ZXNzYWdlU3RyZWFtU2VuZGVyKCkgPSBkZWZhdWx0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5k
T3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBzdGF0aWNf
Y2FzdDxTZWxmKj4odGhpcyktPm1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCk7CisgICAgICAgIEFT
U0VSVChjb25uZWN0aW9uKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydCghVTo6aXNTeW5jLCAiTWVz
c2FnZSBpcyBzeW5jISIpOworCisgICAgICAgIGF1dG8gc3BhbiA9IG1fc3RyZWFtLnRyeUFjcXVp
cmUoKTsKKyAgICAgICAgd2hpbGUgKHNwYW4uY2FwYWNpdHkgPCBFbmNvZGVyOjpvdXRPZkxpbmVT
dHJlYW1NZXNzYWdlU2l6ZSkgeworICAgICAgICAgICAgVGhyZWFkOjp5aWVsZCgpOworICAgICAg
ICAgICAgc3BhbiA9IG1fc3RyZWFtLnRyeUFjcXVpcmUoKTsKKyAgICAgICAgfQorICAgICAgICBh
dXRvIGRlc3RpbmF0aW9uSUQgPSBzdGF0aWNfY2FzdDxTZWxmKj4odGhpcyktPm1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCk7CisgICAgICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5j
b2Rlcj4oVTo6bmFtZSgpLCBkZXN0aW5hdGlvbklELCBzcGFuLnB0ciwgc3Bhbi5jYXBhY2l0eSk7
CisgICAgICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKKyAgICAgICAg
aWYgKGVuY29kZXItPmlzRW5jb2RpbmdUb1N0cmVhbSgpKSB7CisgICAgICAgICAgICBhdXRvIHdh
a2V1cFJlc3VsdCA9IG1fc3RyZWFtLnJlbGVhc2UoZW5jb2Rlci0+YnVmZmVyU2l6ZSgpKTsKKyAg
ICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gRGVzdGluYXRpb25TdHJlYW1TZW5kZXI6Oldh
a2VVcFJlYWRlcjo6Tm8pCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlN0cmVhbVdha2VVcDo6bmFtZSgpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoZSBFbmNvZGVyIHdyb3RlIHRoZSBvdXQtb2YtbGlu
ZSBtZXNzYWdlIGluZGljYXRvciB0byB0aGUgYnVmZmVyLiBSZWxlYXNlCisgICAgICAgICAgICAv
LyB0aGlzIHBpZWNlIG9mIHRoZSBidWZmZXIuCisgICAgICAgICAgICBhdXRvIHdha2V1cFJlc3Vs
dCA9IG1fc3RyZWFtLnJlbGVhc2UoRW5jb2Rlcjo6b3V0T2ZMaW5lU3RyZWFtTWVzc2FnZVNpemUp
OworICAgICAgICAgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBEZXN0aW5hdGlvblN0cmVhbVNlbmRl
cjo6V2FrZVVwUmVhZGVyOjpZZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbm5lY3Rpb24t
PnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgZW5jb2RlciA9IG1ha2VV
bmlxdWU8RW5jb2Rlcj4oTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdHJlYW1X
YWtlVXA6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2Rlciks
IHNlbmRPcHRpb25zKTsKKyAgICB9CisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0
aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFNlbmRT
eW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5
bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBzZW5kU3luYyBkb2VzIG5vdCBnbyB0aHJvdWdoIHRoZSBzdHJlYW0gYmVjYXVzZSB0aGUgY29u
c3RydWN0b3Igb2YgdGhlIHN5bmMgZW5jb2RlciBpcyB0aWVkIHRvIHRoZQorICAgICAgICAvLyBD
b25uZWN0aW9uLiBJdCdzIGEgbWVjaGFuaWNhbCByZWZhY3RvciB0byBmaXggaXQuCisgICAgICAg
IHN0YXRpY19hc3NlcnQoVDo6aXNTeW5jLCAiTWVzc2FnZSBpcyBub3Qgc3luYyEiKTsKKyAgICAg
ICAgYXV0byBjb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8U2VsZio+KHRoaXMpLT5tZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpOworICAgICAgICBBU1NFUlQoY29ubmVjdGlvbik7CisgICAgICAgIGF1
dG8gZGVzdGluYXRpb25JRCA9IHN0YXRpY19jYXN0PFNlbGYqPih0aGlzKS0+bWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKTsKKyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24tPnNlbmRTeW5jKFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCBz
ZW5kU3luY09wdGlvbnMpOworICAgIH0KKworICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgZGVzdGluYXRpb25TdHJlYW1IYW5kbGUoKSB7IHJldHVybiBtX3N0cmVhbS5kZXN0aW5h
dGlvblN0cmVhbUhhbmRsZSgpOyB9Citwcml2YXRlOgorICAgIERlc3RpbmF0aW9uU3RyZWFtU2Vu
ZGVyIG1fc3RyZWFtOworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAwZDhkZTA0OWY0YjUwY2JlN2M5OWU3MTA2ODI5
NjY5M2VlNTE4ODFjLi4wNWZlMGM2YzViMjM1M2QyN2Q0NDA0NjJiMzQ0MTc3ODJkMGE5ZmMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTMzLDYgKzMzLDcg
QEAgTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSA9ICdMZWdhY3lSZWNlaXZlcicKIE5PVF9SRUZD
T1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSA9ICdOb3RSZWZDb3VudGVkJwogU1lOQ0hST05PVVNf
QVRUUklCVVRFID0gJ1N5bmNocm9ub3VzJwogQVNZTkNfQVRUUklCVVRFID0gJ0FzeW5jJworU1RS
RUFNX0FUVFJJQlVURSA9ICdTdHJlYW0nCiAKIF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBA
IC00OTcsNyArNDk4LDggQEAgZGVmIGFzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBt
ZXNzYWdlKToKIAogICAgIHJlc3VsdCA9IFtdCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OiVzOjolczo6bmFtZSgpKSB7XG4nICUg
KHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgICAg
ICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24s
IHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJywgJy5qb2luKGRpc3BhdGNoX2Z1bmN0aW9u
X2FyZ3MpKSkKKyAgICBpZiBub3QgKHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJ
QlVURSkgYW5kIG1lc3NhZ2UubmFtZSA9PSAnU3RyZWFtV2FrZVVwJyk6CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglcyk7XG4nICUgKGRp
c3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICcsICcuam9pbihk
aXNwYXRjaF9mdW5jdGlvbl9hcmdzKSkpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1
cm47XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9XG4nKQogICAgIHJldHVybiBzdXJyb3Vu
ZF9pbl9jb25kaXRpb24oJycuam9pbihyZXN1bHQpLCBtZXNzYWdlLmNvbmRpdGlvbikKQEAgLTg1
OCw4ICs4NjAsMTMgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkK
IAorICAgIHJlY2VpdmVfdmFyaWFudCA9ICcnCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0
ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKToKKyAgICAgICAgcmVjZWl2ZV92YXJpYW50ID0g
cmVjZWl2ZXIubmFtZQorICAgIGVsaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRU
UklCVVRFKToKKyAgICAgICAgcmVjZWl2ZV92YXJpYW50ID0gJ1N0cmVhbScKICAgICBpZiBhc3lu
Y19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NB
R0VfQVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BB
VENIX01FU1NBR0VfQVRUUklCVVRFKToKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6
ZGlkUmVjZWl2ZSVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNl
aXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQor
ICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNl
aXZlci5uYW1lLCByZWNlaXZlX3ZhcmlhbnQpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4n
KQogICAgICAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9S
RUNFSVZFUl9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGF1dG8g
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpO1xuJykKQEAgLTg3Niw2ICs4ODMsMTMgQEAg
ZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCd9XG4nKQogCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRU
UklCVVRFKToKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4n
ICUgKHJlY2VpdmVyLm5hbWUpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7XG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RyZWFtV2FrZVVwKGNv
bm5lY3Rpb24pO1xuJykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKwogICAgIGlmIHN5
bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSk6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN5bmMlc01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVy
Lm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRF
KSBlbHNlICcnKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDdlZWQ2M2E1MTYzYWJkOGY4N2QyZDA2YTZhMjhmY2JlMzZjMjgxMWYuLjU1
YWMxY2YyZTZiYTE1N2U4N2I4MWY2ZTBkMjU5YjNmN2QyMDYxMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMyNiw2ICsxMzI2LDgg
QEAKIAkJN0FGQkQzNjcyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2RjIxRTU0NkY4MDA1REJBQ0IgLyogUGVyc2lzdGVu
Y3lVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FGQkQzNkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLzsgfTsKIAkJ
N0IxREIyNjYyNTY2OENFMTAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2
QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLzsgfTsKKwkJN0JFNzI2N0EyNTdBNzNENjAwRTg1RDk4
IC8qIE1lc3NhZ2VTdHJlYW1TZW5kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCRTcyNjc5MjU3QTczRDYwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFt
U2VuZGVyLmggKi87IH07CisJCTdCRTcyNjdDMjU3QTc5QzgwMEU4NUQ5OCAvKiBNZXNzYWdlU3Ry
ZWFtUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCRTcyNjdCMjU3QTc5QzgwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaCAq
LzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
ckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVn
aW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzFCQTMz
RTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQ
SURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTQ1MTYsNiArNDUxOCw4IEBACiAJCTdCOTA0MTZEMjU1
MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVy
YXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1NzRGNjcyMDBF
ODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2Njgy
NTc2ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjc5MjU3QTczRDYwMEU4NUQ5OCAvKiBNZXNzYWdl
U3RyZWFtU2VuZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VT
dHJlYW1TZW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JFNzI2N0IyNTdB
NzlDODAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1SZWNlaXZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BsdWdpbkluZm9y
bWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4OTQsNiArNjg5OCw4
IEBACiAJCQkJMUEzRUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5o
ICovLAogCQkJCTFBQUIwMzc3MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmNwcCAq
LywKIAkJCQkxQUFCMDM3ODE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oICovLAor
CQkJCTdCRTcyNjdCMjU3QTc5QzgwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaCAq
LywKKwkJCQk3QkU3MjY3OTI1N0E3M0Q2MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVNlbmRlci5o
ICovLAogCQkJCTJEQzE4MDAxRDkwREREMTVGQzY5OTFBOSAvKiBTaGFyZWRCdWZmZXJDb3B5LmNw
cCAqLywKIAkJCQk1Q0M1REI5MTIxNDg4RTE2MDA2Q0I4QTggLyogU2hhcmVkQnVmZmVyQ29weS5o
ICovLAogCQkJCTJEQzE4NTVFREJGQjg1MEJBMEI2RDA2RCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmNwcCAqLywKQEAgLTExNjY1LDYgKzExNjcxLDggQEAKIAkJCQkxQTNFRUQxMjE2MUE1
M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNF
RUQwRjE2MUE1MzU0MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUFCMDM3QTE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0JFNzI2N0MyNTdBNzlDODAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1S
ZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JFNzI2N0EyNTdBNzNENjAwRTg1RDk4IC8q
IE1lc3NhZ2VTdHJlYW1TZW5kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExM0IzREEyMjA3RjM5
REUwMDkwQzU4RCAvKiBNb2JpbGVXaUZpU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURD
QjIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcAppbmRleCAzNGEwNmZiMDA3NmFjZDNmZDMyYjNhNGI2YjA5ZDY4ZDAyN2JiNTg4Li4wNWY5
ZWUyYjYwMDhkNWQ2N2FjODZjMjRkM2MwNTEyMGFmMTc1MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTQ4LDE5ICs0OCwyMiBAQCBSZWZQdHI8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3JlYXRlKGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsKIH0KIAorc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVm
YXVsdFN0cmVhbVNpemUgPSAxIDw8IDIyOworCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cnMpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShh
dHRycykKKyAgICA6IElQQzo6TWVzc2FnZVN0cmVhbVNlbmRlcjxSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5PihkZWZhdWx0U3RyZWFtU2l6ZSkKKyAgICAsIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlKGF0dHJzKQogewogICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNz
YWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOwogICAgIG1lc3NhZ2VSZWNlaXZlck1h
cC5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
dG9VSW50NjQoKSwgKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciksIDApOworICAgIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKGF0dHJzLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgZGVzdGluYXRpb25TdHJl
YW1IYW5kbGUoKSksIDApOwogfQogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCiB7CiAgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJN
YXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CiAgICAgbWVzc2FnZVJl
Y2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7Ci0gICAgc2VuZChNZXNzYWdl
czo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7CisgICAgbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFz
ZUdyYXBoaWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgcGxhdGZvcm1Td2FwQ2hhaW4oKS5yZWN5Y2xlQnVmZmVy
KCk7CiAjZW5kaWYKQEAgLTgwLDE0ICs4MywxNCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIG1fY3VycmVu
dFdpZHRoID0gd2lkdGg7CiAgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OwotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXNoYXBlKHdpZHRoLCBoZWlnaHQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KCkKIHsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXJTZW5kUmln
aHQ7Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVw
YXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBh
cmVGb3JEaXNwbGF5OjpSZXBseShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNl
bmRSaWdodCksIDEwX3MpOwogICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29s
b3JTcGFjZVJlZigpKTsKICAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBhdXRvJiBz
YyA9IHBsYXRmb3JtU3dhcENoYWluKCk7CkBAIC05NSwxOSArOTgsMTkgQEAgdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCiAgICAgICAgIHNjLnBy
ZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZmZXIpLCBudWxscHRyIH0pOwogICAgIH0KICNlbHNl
Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJl
Rm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVG
b3JEaXNwbGF5OjpSZXBseSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJl
Rm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVG
b3JEaXNwbGF5OjpSZXBseSgpLCAxMF9zKTsKICNlbmRpZgogICAgIG1hcmtMYXllckNvbXBvc2l0
ZWQoKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRl
bnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVu
c2lvbiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNp
b24pKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJr
Q29udGV4dENoYW5nZWQoKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpO
b3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6c2ltdWxhdGVDb250ZXh0Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oCmluZGV4IGQ5OWVkYTI5ZjZkYjVlMTgxOTcxMzE3OGYyYWE1MzFi
NGY1ZGQ2ZTAuLmQxYWMwMWJiNmZjYTA2NmNmYTcyYzY3NzVhYTI0N2I1ZTBmYTBhZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0yOSw3ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiTWVz
c2FnZVN0cmVhbVNlbmRlci5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBpbiBHUFUgcHJvY2Vzcy4KIC8vIFRo
ZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkgZmluYWwKLSAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICA6IHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VTdHJlYW1TZW5kZXI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4K
ICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PgogICAgICwgcHVibGljIFdlYkNv
cmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKQEAgLTU1LDkgKzU1LDkgQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOwogICAg
IH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkgZmluYWw7CiAKLSAgICAvLyBJUEM6Ok1l
c3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworICAgIC8vIElQQzo6TWVzc2FnZVN0cmVhbVNlbmRl
ciB0ZW1wbGF0ZSBjb250cmFjdC4KKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3Q7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKSBjb25zdDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKaW5kZXggZjdlY2Y4NjU1NmEwMDczYWY4ZjU1
NGNmY2ZjMGVmMzM5ZjYxZTg5YS4uM2MxN2MyNGFkYzczYjBiZmYyYzYwYzU5MzRkZWQ3YzdkMGU3
YmViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0zMiwzMjQgKzMyLDMyNCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRG
YWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN5bnRoZXNpemVH
TEVycm9yKGVycm9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJv
cikpOwogfQogCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1vdmVFcnJvcnNU
b1N5bnRoZXRpY0Vycm9yTGlzdCgpCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJvcnNU
b1N5bnRoZXRpY0Vycm9yTGlzdCgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
Ok1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3Qo
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVy
blZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmFjdGl2ZVRl
eHR1cmUoR0NHTGVudW0gdGV4dHVyZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QWN0aXZlVGV4dHVyZSh0ZXh0dXJlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVUZXh0dXJlKHRleHR1cmUpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjphdHRhY2hTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9y
bUdMT2JqZWN0IHNoYWRlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlciksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzAsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRBdHRyaWJMb2NhdGlvbihhcmcwLCBp
bmRleCwgbmFtZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEF0dHJpYkxvY2F0aW9uKGFyZzAs
IGluZGV4LCBuYW1lKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlcih0YXJn
ZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEZyYW1lYnVmZmVy
KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBh
cmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQs
IGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBhcmcx
KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUo
R0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRDb2xvcihHQ0dMY2xhbXBmIHJl
ZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9y
KHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9y
KHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvbihHQ0dMZW51bSBtb2RlKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9uKG1vZGUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb24obW9kZSkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2Rl
UkdCLCBHQ0dMZW51bSBtb2RlQWxwaGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2Rl
QWxwaGEpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1
bmMoR0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0gZGZhY3RvcikKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3Ip
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jU2VwYXJhdGUoR0NH
TGVudW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0FscGhhLCBHQ0dMZW51
bSBkc3RBbHBoYSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNy
Y0FscGhhLCBkc3RBbHBoYSkpOwogfQogCiBHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDR0xlbnVtIHRhcmdldCkKIHsKICAgICB1
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVi
dWZmZXJTdGF0dXModGFyZ2V0KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
aGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjbGVhcihHQ0dMYml0ZmllbGQgbWFzaykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q2xlYXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXIo
bWFzaykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQ29s
b3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NH
TGNsYW1wZiBhbHBoYSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyRGVwdGgoR0NHTGNsYW1wZiBkZXB0aCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0
aChkZXB0aCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0aChkZXB0aCkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3Rl
bmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhclN0ZW5jaWwocykpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQs
IEdDR0xib29sZWFuIGdyZWVuLCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNr
KHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGlj
X2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+KHJlZCksIHN0YXRpY19jYXN0PGJv
b2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSksIHN0YXRpY19jYXN0PGJvb2w+KGFs
cGhhKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVT
aGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21waWxlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNvbXBpbGVTaGFkZXIoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCkpOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q3JlYXRlQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgdWludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVGcmFtZWJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZUZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBf
cyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0oKQogewogICAgIHVpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVByb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVByb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCiB7CiAgICAgdWludDMyX3QgcmV0
dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUmVuZGVyYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1
ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVj
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVTaGFkZXIoR0NHTGVudW0gYXJn
MCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcihhcmcwKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXI6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzApLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHkocmV0
dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3Jt
R0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVGV4dHVyZSgpCiB7
CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlKCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlKCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUp
LCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y3VsbEZhY2UoR0NHTGVudW0gbW9kZSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcw
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVCdWZmZXIoYXJnMCkpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RGVsZXRlRnJhbWVidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJh
bWVidWZmZXIoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVQcm9ncmFtKGFyZzApLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRlbGV0ZVByb2dyYW0oYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVSZW5kZXJidWZm
ZXIoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVTaGFkZXIoYXJnMCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRleHR1cmUoYXJnMCkpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1bmMoZnVu
YyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhGdW5jKGZ1bmMpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2soR0NHTGJvb2xlYW4gZmxhZykKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0
YXRpY19jYXN0PGJvb2w+KGZsYWcpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aE1hc2soc3Rh
dGljX2Nhc3Q8Ym9vbD4oZmxhZykpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkZXB0aFJhbmdlKEdDR0xjbGFtcGYgek5lYXIsIEdDR0xjbGFtcGYgekZhcikKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhSYW5nZSh6
TmVhciwgekZhciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhSYW5nZSh6TmVhciwgekZhcikp
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRldGFjaFNoYWRlcihQ
bGF0Zm9ybUdMT2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGV0YWNoU2hhZGVyKGFyZzAsIGFy
ZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRldGFjaFNoYWRlcihhcmcwLCBhcmcxKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJsZShHQ0dMZW51bSBjYXAp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUo
Y2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlKGNhcCkpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWlu
dCBpbmRleCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdD
R0xzaXplaSBjb3VudCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzKEdDR0xlbnVtIG1vZGUsIEdDR0xzaXplaSBj
b3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwg
dHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9m
ZnNldCkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUo
R0NHTGVudW0gY2FwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpFbmFibGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGUoY2FwKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoR0NHTHVpbnQgaW5kZXgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCkpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlz
aCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmbHVzaCgpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZsdXNoKCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Rmx1c2goKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xP
YmplY3QgYXJnMykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZm
ZXJ0YXJnZXQsIGFyZzMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBhcmczKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQs
IFBsYXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0
LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJn
MywgbGV2ZWwpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpmcm9u
dEZhY2UoR0NHTGVudW0gbW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RnJvbnRGYWNlKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyb250RmFj
ZShtb2RlKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2VuZXJh
dGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZW5lcmF0ZU1pcG1hcCh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCkpOwogfQogCiBib29sIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdD
R0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUg
PSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYjo6UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYjo6UmVw
bHkocmV0dXJuVmFsdWUsIGFyZzIpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9
CiAKIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybShQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcy
KQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtOjpS
ZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgMTBf
cyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwg
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0g
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRyaWJM
b2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRBdHRyaWJMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRyaWJMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUp
LCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIHBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJh
bWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpOjpSZXBseShy
ZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogU3RyaW5n
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN0cmluZyhHQ0dMZW51bSBuYW1lKQog
ewogICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZyhuYW1lKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmc6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsK
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZh
bHVlKQogewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7Ci0gICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRGbG9hdHYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEZsb2F0djo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0dihwbmFtZSwgdmFs
dWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2
OjpSZXBseSh2YWx1ZVJlcGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAg
IG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNp
emVvZihmbG9hdCkpOwogICAgIApAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RmxvYXR2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
ZmxvYXQ+CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2KEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAgICBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFt
ZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVl
UmVwbHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkKICAgICAgICAgbWVtY3B5KHZhbHVl
LmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGludDMyX3Qp
KTsKICAgICAKQEAgLTM2NywyOCArMzY3LDI4IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+CiBH
Q0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0KEdDR0xl
bnVtIHBuYW1lKQogewogICAgIGludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NDo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQo
cG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NDo6
UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGlu
dDY0PihyZXR1cm5WYWx1ZSk7CiB9CiAKIEdDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRJbnRlZ2VyNjRpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKIHsK
ICAgICBpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aShwbmFt
ZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2
NGk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdD
R0xpbnQ2ND4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0g
cG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1pKHByb2dyYW0sIHBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFt
aShwcm9ncmFtLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
UHJvZ3JhbWk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7CiAgICAgSVBD
OjpBcnJheVJlZmVyZW5jZTxib29sPiB2YWx1ZVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnYo
cG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEJvb2xlYW52OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52OjpSZXBseSh2
YWx1ZVJlcGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweSh2
YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihib29s
KSk7CiAgICAgCkBAIC0zOTcsNDIgKzM5Nyw0MiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJvb2xlYW52KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbAog
R0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQogewogICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRFcnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEVycm9yOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0
YWNobWVudCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7
CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewog
ICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9nKGFy
ZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1JbmZvTG9n
OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0K
IAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZh
bHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcw
LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShh
cmcwLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVy
aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
aGFkZXJpKGFyZzAsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRTaGFkZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKIH0KIAogU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRl
ckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0cmluZyByZXR1cm5WYWx1
ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFNoYWRlckluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U2hhZGVySW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBf
cyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCkBAIC00NDAsNyArNDQwLDcgQEAgdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQo
R0NHTGVudW0gc2hhZGVyVHlwZSwKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Qs
IDI+IHJhbmdlUmVwbHk7CiAgICAgaW50MzJfdCBwcmVjaXNpb25SZXBseSA9IHsgfTsKLSAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3Jt
YXQ6OlJlcGx5KHJhbmdlUmVwbHksIHByZWNpc2lvblJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNo
YWRlclR5cGUsIHByZWNpc2lvblR5cGUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lzaW9u
UmVwbHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkgewogICAgICAgICBtZW1jcHkocmFu
Z2UuZGF0YSwgcmFuZ2VSZXBseS5kYXRhKCksIHJhbmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJf
dCkpOwogICAgICAgICBpZiAocHJlY2lzaW9uKQpAQCAtNDUxLDI4ICs0NTEsMjggQEAgdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoR0NH
TGVudW0gc2hhZGVyVHlwZSwKIFN0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0cmluZyByZXR1
cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFNoYWRlclNvdXJjZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTaGFkZXJTb3VyY2U6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCAx
MF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xmbG9hdCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUpCiB7CiAgICAgZmxvYXQgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmKHRh
cmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBh
cmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3Mp
OwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmkodGFyZ2V0
LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1l
dGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFVuaWZvcm1mdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xTcGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4gdmFsdWVSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdihwcm9ncmFtLCBs
b2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VW5pZm9ybWZ2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9u
LCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRV
bmlmb3JtZnY6OlJlcGx5KHZhbHVlUmVwbHkpLCAxMF9zKTsKICAgICBpZiAoc2VuZFJlc3VsdCkK
ICAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZT
aXplICogc2l6ZW9mKGZsb2F0KSk7CiAgICAgCkBAIC00ODEsNyArNDgxLDcgQEAgdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBw
cm9ncmFtLCBHQ0dMaW4KIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNw
YW48R0NHTGludD4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2
YWx1ZVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1
ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3Jt
aXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNp
emUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdjo6UmVw
bHkodmFsdWVSZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1j
cHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2Yo
aW50MzJfdCkpOwogICAgIApAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NH
TGluCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXYoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWlu
dD4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gdmFsdWVSZXBs
eTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNp
emUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXY6OlJl
cGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2OjpSZXBseSh2
YWx1ZVJlcGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAgIG1lbWNweSh2
YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZih1aW50
MzJfdCkpOwogICAgIApAQCAtNDk5LDMyNSArNDk5LDMyNSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBH
Q0dMaQogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAg
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb246OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0
aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVu
aWZvcm1Mb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiB9CiAKIEdDR0xzaXplaXB0ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQog
ewogICAgIHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmli
T2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldDo6UmVwbHkocmV0dXJuVmFsdWUp
LCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1cm5WYWx1
ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpI
aW50KHRhcmdldCwgbW9kZSkpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJsZWQoR0NHTGVudW0gY2FwKQogewogICAgIGJv
b2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc0VuYWJsZWQoY2FwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc0VuYWJsZWQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNFbmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNFbmFibGVkOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcihhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJn
MCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVw
bHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xl
YW4+KHJldHVyblZhbHVlKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6aXNQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29sIHJl
dHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNQcm9ncmFtKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1Byb2dyYW0oYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0
IGFyZzApCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFy
ZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpS
ZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc1NoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQog
ewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGluZVdpZHRoKEdDR0xmbG9hdCBhcmcw
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5lV2lk
dGgoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2Jq
ZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkxpbmtQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmtQcm9ncmFtKGFyZzAp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaShH
Q0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpQaXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KEdDR0xmbG9hdCBmYWN0b3IsIEdD
R0xmbG9hdCB1bml0cykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQ
b2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVy
U3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
YW1wbGVDb3ZlcmFnZShHQ0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZUNvdmVyYWdl
KHZhbHVlLCBzdGF0aWNfY2FzdDxib29sPihpbnZlcnQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpT
YW1wbGVDb3ZlcmFnZSh2YWx1ZSwgc3RhdGljX2Nhc3Q8Ym9vbD4oaW52ZXJ0KSkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNjaXNzb3IoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVp
Z2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaGFkZXJTb3VyY2UoUGxh
dGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIGFyZzEpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNoYWRlclNvdXJjZShhcmcwLCBhcmcxKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFkZXJTb3VyY2UoYXJnMCwgYXJnMSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMs
IEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzaykpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0g
ZmFjZSwgR0NHTGVudW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJh
dGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVu
Y1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzaykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2spKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDR0xlbnVtIGZhY2Us
IEdDR0x1aW50IG1hc2spCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6U3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpm
YWlsLCBHQ0dMZW51bSB6cGFzcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6U3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcykpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdD
R0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wU2VwYXJhdGUoZmFj
ZSwgZmFpbCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3BTZXBh
cmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRlcmkoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBu
YW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBu
YW1lLCBwYXJhbSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0xZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB4KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWYobG9jYXRpb24sIHgpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2
LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMWkobG9jYXRpb24sIHgpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0xpbnQ+IHYpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEp
LCB2LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTJmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmKGxv
Y2F0aW9uLCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24sIHgs
IHkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmdihsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZnYo
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwg
R0NHTGludCB5KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtMmkobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0y
aShsb2NhdGlvbiwgeCwgeSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
dikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTJpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtMml2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmKGxvY2F0aW9u
LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRpb24sIHgsIHks
IHopKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmdihsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZnYo
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMaW50IHopCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0zaShsb2NhdGlvbiwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiB2KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpVbmlmb3JtM2l2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMy
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwg
di5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm00ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xm
bG9hdCB6LCBHQ0dMZmxvYXQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2
LmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHos
IEdDR0xpbnQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IHYpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm00aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1
ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0
PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+
KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xpbnQgbG9j
YXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2
YWx1ZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZh
bHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1h
dHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRh
dGEpLCB2YWx1ZS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9u
LCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbShQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVzZVByb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VXNlUHJvZ3Jh
bShhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmFsaWRh
dGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmFsaWRhdGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9h
dCB4KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0
ZXhBdHRyaWIxZihpbmRleCwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYo
aW5kZXgsIHgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4g
dmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRh
dGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xm
bG9hdCB5KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWIyZihpbmRleCwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliMmYoaW5kZXgsIHgsIHkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdCwgMj4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQs
IDI+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
dmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0
IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHgsIHksIHopLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmKGluZGV4LCB4LCB5LCB6KSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50
IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDM+IHZhbHVlcykKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliM2Z2KGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlZlcnRleEF0dHJpYjNmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUp
KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
NGYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHos
IEdDR0xmbG9hdCB3KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1
ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdD
R0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xib29sZWFuIG5v
cm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJQb2ludGVy
KGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxib29sPihub3JtYWxpemVkKSwgc3RyaWRl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVy
dGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9y
bWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2aWV3cG9ydChHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwg
aGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0
KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShH
Q0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTAodGFy
Z2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnMSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCdWZmZXJEYXRhMCh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNh
Z2UpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRh
KEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xlbnVt
IHVzYWdlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
dWZmZXJEYXRhMSh0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSwgdXNhZ2Up
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlckRhdGExKHRhcmdldCwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEp
LCBkYXRhLmJ1ZlNpemUpLCB1c2FnZSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9mZnNl
dCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCdWZmZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCksIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgSVBDOjpB
cnJheVJlZmVyZW5jZTx1aW50OF90PiBkYXRhUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAo
eCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5Q
aXhlbHMwKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXplKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczA6OlJlcGx5KGRh
dGFSZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkoZGF0
YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkp
OwogICAgIApAQCAtODI1LDk3ICs4MjUsOTcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHcKIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczEoeCwgeSwgd2lkdGgs
IGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMxKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJ
bWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdl
MkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
cGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1
YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSkpOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNl
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMSh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRl
eEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMSh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVz
c2VkVGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBH
Q0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4g
ZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29t
cHJlc3NlZFRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdp
ZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdl
U2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xz
aXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodGFyZ2V0
LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNp
emUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0Fy
cmF5c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBw
cmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwg
Zmlyc3QsIGNvdW50LCBwcmltY291bnQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1j
b3VudCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJh
d0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJ
bnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQp
LCBwcmltY291bnQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJE
aXZpc29yKGluZGV4LCBkaXZpc29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJE
aXZpc29yKGluZGV4LCBkaXZpc29yKSk7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQogewogICAgIHVpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1
ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZVZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5
KGFyZzApKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc1ZlcnRleEFycmF5KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRleEFycmF5KFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6QmluZFZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhB
cnJheShhcmcwKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29w
eUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gcmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQs
IEdDR0xpbnRwdHIgcmVhZE9mZnNldCwgR0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVp
cHRyIGFyZzQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCks
IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weUJ1
ZmZlclN1YkRhdGEocmVhZFRhcmdldCwgd3JpdGVUYXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHdyaXRlT2Zmc2V0KSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGFyZzQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zm
c2V0LCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQ4X3Q+IGRhdGFSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhOjpSZXBseShkYXRhUmVwbHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZm
ZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIGRhdGEuYnVm
U2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0
YTo6UmVwbHkoZGF0YVJlcGx5KSwgMTBfcyk7CiAgICAgaWYgKHNlbmRSZXN1bHQpCiAgICAgICAg
IG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRhdGEuYnVmU2l6ZSAqIHNpemVv
Zih1aW50OF90KSk7CiAgICAgCkBAIC05MjMsNDUxICs5MjMsNDUxIEBAIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnRwdHIKIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVi
dWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGlu
dCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NH
TGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNy
Y1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFz
aywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXIoc3JjWDAsIHNy
Y1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0
ZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZl
clRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIFBsYXRm
b3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGludCBsYXllcikKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVu
dCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNw
YW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90
Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMu
ZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwg
R0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFy
Z2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5
LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNp
emUpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRCdWZmZXIoc3JjKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZWFkQnVmZmVyKHNyYykpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHQ0dMZW51bSB0YXJnZXQs
IEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1w
bGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhTdG9yYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9y
YWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTHNpemVpIGRlcHRoKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpUZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTNEKHRhcmdl
dCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRh
cmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBw
aXhlbHMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRl
eEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUs
IElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50
IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBp
eGVscy5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1
YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1
YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleElt
YWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVp
IGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXpl
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29t
cHJlc3NlZFRleEltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJl
c3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1
YkltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNl
dCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXpl
aSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZv
cm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdl
U2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogR0NHTGludCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGcmFnRGF0YUxvY2F0aW9uKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbihwcm9n
cmFtLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0
YUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVp
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMXVpKGxvY2F0aW9uLCB2MCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1
aW50IHYwLCBHQ0dMdWludCB2MSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50
IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVpKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50
IHYzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2MyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMXVpdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRy
aXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0
YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3Rh
dGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4Mng0ZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
ZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJv
b2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRh
dGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2Nh
dGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxm
bG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
TWF0cml4M3g0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9v
bD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+
IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1N
YXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEu
ZGF0YSksIGRhdGEuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpKTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdD
R0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0aXYo
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2
YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5
LCBHQ0dMdWludCB6LCBHQ0dMdWludCB3KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aXYo
R0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0
dWl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVz
LmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBz
aXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50cHRyIG9mZnNldCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliSVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYklQb2ludGVyKGlu
ZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVu
dHMoR0NHTGVudW0gbW9kZSwgR0NHTHVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVp
IGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwg
c3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBj
b3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBH
Q0dMZW51bT4gYnVmcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNp
emUpKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZm
ZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0
YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJpdihi
dWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcnVpdihH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTHVp
bnQ+IHZhbHVlcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNl
PHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEp
LCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1
ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdihH
Q0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1
ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBk
cmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpKTsKIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZl
ciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZm
ZXJmaShidWZmZXIsIGRyYXdidWZmZXIsIGRlcHRoLCBzdGVuY2lsKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpKTsK
IH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVRdWVyeSgpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeSgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5OjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5KCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnk6OlJlcGx5KHJldHVyblZh
bHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVF1
ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVRdWVyeShxdWVyeSkpOwogfQog
CiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KFBsYXRm
b3JtR0xPYmplY3QgcXVlcnkpCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNRdWVyeShxdWVyeSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNRdWVyeTo6UmVwbHkocmV0dXJuVmFs
dWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZh
bHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5
KEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeShHQ0dMZW51bSB0YXJn
ZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFF1
ZXJ5KHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kUXVlcnkodGFyZ2V0KSk7CiB9CiAK
IFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnko
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBw
bmFtZSkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWkocXVlcnks
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVj
dHVpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpjcmVhdGVTYW1wbGVyKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZVNhbXBsZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVNhbXBsZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDcmVhdGVTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxl
dGVTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZWxldGVTYW1wbGVyKHNhbXBsZXIpKTsKIH0KIAogR0NHTGJvb2xlYW4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTYW1wbGVyKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlcikKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyKHNhbXBsZXIpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1cm5W
YWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJu
VmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRTYW1w
bGVyKEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2Ft
cGxlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2FtcGxlcikpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJp
KFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0p
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQ
YXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2Ft
cGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVj
dCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1w
bGVyLCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJm
KHNhbXBsZXIsIHBuYW1lLCBwYXJhbSkpOwogfQogCiBHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQ
YXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmY6
OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQog
CiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0
ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50
MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVy
UGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMc3luYyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9uLCBHQ0dMYml0ZmllbGQgZmxh
Z3MpCiB7CiAgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFn
cyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmVuY2VTeW5jOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZlbmNlU3luYyhjb25k
aXRpb24sIGZsYWdzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5
bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0cl90PihyZXR1cm5WYWx1ZSkpOwogfQogCiBH
Q0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1N5bmMoR0NHTHN5bmMg
YXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSkpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRlbGV0ZVN5bmMoR0NHTHN5bmMgYXJnMCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU3luYyhzdGF0aWNfY2FzdDx1
aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZWxldGVTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0
PGludHB0cl90PihhcmcwKSkpKTsKIH0KIAogR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdz
LCBHQ0dMdWludDY0IHRpbWVvdXQpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRX
YWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
YXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dMaW50
NjQgdGltZW91dCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVvdXQpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGltZW91
dCkpKTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5j
aShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZh
bHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U3luY2koc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGFyZzApKSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFN5bmNpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFN5bmNpKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90
PihhcmcwKSksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
eW5jaTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7
CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3Jl
YXRlVHJhbnNmb3JtRmVlZGJhY2soKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1
cm5WYWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9y
bUdMT2JqZWN0IGlkKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2soaWQpKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlk
KQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrKGlkKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVl
ZGJhY2soaWQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3Jt
RmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgUGxh
dGZvcm1HTE9iamVjdCBpZCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKSk7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51
bSBwcmltaXRpdmVNb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1vZGUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSkpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kVHJhbnNm
b3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRUcmFuc2Zvcm1GZWVkYmFjaygp
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHZhcnlpbmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dy
YW0sIHZhcnlpbmdzLCBidWZmZXJNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlpbmdzLCBidWZmZXJNb2RlKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8m
IGFyZzIpCiB7Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVw
bHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nOjpSZXBseShhcmcyKSwgMTBfcyk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1c2VUcmFuc2Zvcm1GZWVk
YmFjaygpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBh
dXNlVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJl
c3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVm
ZmVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBi
dWZmZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVm
ZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9iamVj
dCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRh
cmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRp
Y19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJh
bmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCks
IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSkpOwogfQogCiBWZWN0b3I8R0NHTHVpbnQ+IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1JbmRpY2VzKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVuaWZvcm1OYW1lcykKIHsKICAg
ICBWZWN0b3I8dWludDMyX3Q+IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwg
dW5pZm9ybU5hbWVzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlm
b3JtSW5kaWNlczo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzOjpSZXBseShyZXR1cm5W
YWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogVmVjdG9yPEdDR0xp
bnQ+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRm
b3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGlj
ZXMsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIFZlY3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9
IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXMo
cHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtczo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsK
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFVuaWZvcm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgU3RyaW5nJiB1bmlmb3JtQmxvY2tOYW1lKQogewogICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9y
bUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJlcGx5KHJldHVyblZhbHVl
KSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBTdHJpbmcgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdM
T2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQogewogICAgIFN0cmlu
ZyByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJs
b2NrSW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVu
aWZvcm1CbG9ja05hbWU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJ
bmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9y
bUJsb2NrTmFtZTo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJs
b2NrQmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9j
a0luZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0s
IHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlm
b3JtQmxvY2tCaW5kaW5nKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5p
Zm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMp
CiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKLSAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBw
bmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2KHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2
OjpSZXBseShwYXJhbXNSZXBseSksIDEwX3MpOwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAg
ICBtZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUg
KiBzaXplb2YoaW50MzJfdCkpOwogICAgIApAQCAtMTM3Niw5MCArMTM3Niw5MCBAQCB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1
aW50IHByb2dyYW0sIEdDRwogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6
OlJlcGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xF
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3Jj
WTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQg
ZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0ZXIpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNy
Y1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFz
aywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNY
MCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ss
IGZpbHRlcikpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVp
IHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUygpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTKCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJl
cGx5KHJldHVyblZhbHVlKSwgMTBfcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RGVsZXRlVmVydGV4QXJyYXlPRVMoYXJnMCkpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3Qg
YXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXlP
RVMoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJh
eU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCAxMF9zKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJy
YXlPRVMoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5T0VTKGFyZzAp
KTsKIH0KIAogU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgU3RyaW5n
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5W
YWx1ZSksIDEwX3MpOwogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcm
IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklu
c2VydEV2ZW50TWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50
TWFya2VyRVhUKGFyZzApKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQdXNoR3JvdXBNYXJrZXJFWFQoYXJnMCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdyb3VwTWFya2VyRVhUKGFyZzApKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb3BHcm91cE1hcmtlckVYVCgpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvcEdyb3VwTWFya2Vy
RVhUKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSk7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48
Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRh
KSwgYnVmcy5idWZTaXplKSkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0
LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSht
b2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSk7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
dm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1v
ZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBj
b3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCkpOwog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xF
KGluZGV4LCBkaXZpc29yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29y
QU5HTEUoaW5kZXgsIGRpdmlzb3IpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCiB7
CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKLSAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIHBhcmFt
cy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlcm5h
bGZvcm1hdGl2OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5h
bGZvcm1hdCwgcG5hbWUsIHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRJbnRlcm5hbGZvcm1hdGl2OjpSZXBseShwYXJhbXNSZXBseSksIDEwX3Mp
OwogICAgIGlmIChzZW5kUmVzdWx0KQogICAgICAgICBtZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFt
c1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOwogICAgIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc4OGEz
NDQ0OGM5NWE3OWY1MWZkZjFhNmI1YzM4MmMyOWJkMmVlODguLjk3N2IxZDMxN2VkNGUyYzkyOWZl
M2I2N2I2ZjVmNGVjOTBhYzcxM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0xMi0wOCAgS2ltbW8gS2lubnVu
ZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIEdQVSBwcm9jZXNzIElQ
QyBzaG91bGQgYmUgZmFzdGVyIHRoYW4gY3VycmVudCBXZWJLaXQgSVBDCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZ2VuZXJhdGUtZ3B1cC13
ZWJnbCB0byBnZW5lcmF0ZSBzZW5kIGNhbGxzIGZvciBzZW5kaW5nIHN0cmVhbQorICAgICAgICBt
ZXNzYWdlcy4gU3RyZWFtIG1lc3NhZ2VzIGhhdmUgaW1wbGllZCBkZXN0aW5hdGlvbiwgc28gZGVz
dGluYXRpb24gaWQKKyAgICAgICAgZG9lcyBub3QgbmVlZCB0byBiZSBwYXJ0IG9mIHNlbmQgbWV0
aG9kIGNhbGwuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIw
MjAtMTItMTQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNd
IE1lZGlhRm9ybWF0UmVhZGVyLmJ1bmRsZSBmYWlscyB0byBsb2FkIGluIFdlYktpdFRlc3RSdW5u
ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xz
L1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCBmMTZiNDIyMjljZjJmODI4YzY2Yzdl
N2I0MTc3M2MyZWJlNDQzMTE0Li4yN2QxMzBhZGEyMTJmOGQ5YzM2MDQxYjJkNzAyMmQ5NTg3Yzg0
MzAwIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIv
VG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC04OSw3ICs4OSw3IEBAIGNvbnRl
eHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCiAgICAgdGVtcGxhdGVfcHJlYW1ibGUKICAgICArICIi
IiNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworbWVzc2FnZXMgLT4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFJl
c2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlC
dWZmZXIpIFN5bmNocm9ub3VzCkBAIC05OSw2ICs5OSw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQge3sKICNlbmRpZgogICAgIHZvaWQgRW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQogICAgIHZvaWQgTm90aWZ5TWFya0Nv
bnRleHRDaGFuZ2VkKCkKKyAgICB2b2lkIFN0cmVhbVdha2VVcCgpIFdhbnRzQ29ubmVjdGlvbiAv
LyBUT0RPOiB0aGlzIHNob3VsZCBiZSBtb3ZlZCB0byBtZXNzYWdlcy5weQoge30KIH19CiAKQEAg
LTU4Nyw3ICs1ODgsNyBAQCBjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKG9iamVjdCk6
CiAgICAgICAgIGlzX2FzeW5jID0gc2VsZi5yZXR1cm5fdHlwZS5pc192b2lkKCkgYW5kIGxlbihv
dXRfZXhwcnMpID09IDAKICAgICAgICAgaWYgaXNfYXN5bmM6CiAgICAgICAgICAgICBzZWxmLmNh
bGxfc3RtdHMgKz0gWwotICAgICAgICAgICAgICAgIGYic2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOyIsCisgICAgICAgICAgICAgICAgZiJzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pKTsiLAog
ICAgICAgICAgICAgXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VuZF9yZXN1bHQgPSAi
IgpAQCAtNTk5LDcgKzYwMCw3IEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICAgICAgKCJ9IiBpZiBsZW4oc2VsZi5wb3N0X2NhbGxfc3Rt
dHMpID4gMSBlbHNlICIiKQogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIHNlbGYuY2Fs
bF9zdG10cyArPSBbCi0gICAgICAgICAgICAgICAgZiJ7c2VuZF9yZXN1bHR9c2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJz
fSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9OjpS
ZXBseSh7b3V0X2V4cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsi
LAorICAgICAgICAgICAgICAgIGYie3NlbmRfcmVzdWx0fXNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfTo6UmVwbHkoe291dF9l
eHByc30pLCAxMF9zKTsiLAogICAgICAgICAgICAgXQogCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416533</attachid>
            <date>2020-12-18 11:21:37 -0800</date>
            <delta_ts>2021-01-26 06:00:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20201218212134.patch</filename>
            <type>text/plain</type>
            <size>262300</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY4NGM5ZjE3M2Y3M2ExOTYy
YjRjZjRmNjliNTg1ZmEzMDU0NmVhZTYuLmYyYWExMDk4ZTk0NzM3MjYzYTRkNDg0MmY2NDM3NWI1
NThjZTQ0OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMxIEBACisyMDIwLTEyLTA4ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBjdXJyZW50IFdlYktpdCBJUEMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNl
cHQgb2YgZGVzdGluYXRpb24gbWVzc2FnZSBzdHJlYW0uIElQQyBtZXNzYWdlcyBjYW4KKyAgICAg
ICAgYmUgc2VudCBkaXJlY3RseSB0byB0aGUgcmVjZWl2aW5nIGRlc3RpbmF0aW9uIHdpdGggTWVz
c2FnZVN0cmVhbVNlbmRlcgorICAgICAgICBhbmQgcmVjZWl2ZWQgd2l0aCBNZXNzYWdlU3RyZWFt
UmVjZWl2ZXIuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgYXMgZm9sbG93czoKKyAgICAgICAgU2Vu
ZGVyIHNoYXJlcyB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhIHdpdGggdGhlIGRlc3RpbmF0aW9uIHdo
ZW4gY3JlYXRpbmcKKyAgICAgICAgdGhlIGRlc3RpbmF0aW9uLgorCisgICAgICAgIElmIHRoZSBt
ZXNzYWdlIGZpdHMgdG8gdGhlIHN0cmVhbSBzaGFyZWQgbWVtb3J5IGFyZWEsIHdyaXRlIGl0IHRo
ZXJlLgorICAgICAgICBPdGhlcndpc2Ugc2VuZCBpdCB2aWEgbm9ybWFsIElQQyBhcyBvdXQgb2Yg
bGluZSBtZXNzYWdlLgorCisgICAgICAgIFJlY2VpdmVyIHdhaXRzIGZvciBub3JtYWwgSVBDIG1l
c3NhZ2VzLCBpdCBkb2VzIG5vdCBkbyBhbnl0aGluZyBvdXQgb2Ygb3JkaW5hcnkKKyAgICAgICAg
dW50aWwgYSB3YWtldXAgbWVzc2FnZSBpcyByZWNlaXZlZC4gVGhlbiByZWNlaXZlciB3aWxsIHBy
b2Nlc3MgdGhlIHN0cmVhbQorICAgICAgICB1bnRpbCBzdHJlYW0gaGFzIG5vIG1vcmUgbWVzc2Fn
ZXMgb3IgdW50aWwgb3V0IG91dCBvZiBsaW5lIG1lc3NhZ2UgbWFya2VyIGlzIHJlYWNoZWQuCisK
KyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9uIGFycml2ZSBhcyBiZWZvcmUsIGlu
IG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAgICBtZXNzYWdlLCBhbiBlbnRyeSBp
cyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2lsbCBzdG9wIHByb2Nlc3NpbmcgdGhl
CisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxsIGNvbnRpbnVlIG9uY2UgdGhlIG91
dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4gcHJvY2Vzc2VkLgorCisgICAgICAg
IFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0cmVhbSBzaW11bHRhbmVvdXMgdG8g
dGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1lc3NhZ2VzLiBUaGlzIGlzIGltcGxl
bWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMgc2VuZGVyIGFuZCByZWNlaXZlcgor
ICAgICAgICBwb2ludGVycy4KKworICAgICAgICBQZXJmb3JtYW5jZSBpbXBhY3QgKGlNYWMgUHJv
KToKKyAgICAgICAgICAgIC0gTW90aW9uTWFyayB0cmlhbmdsZXM6IDgwMCBwb2ludHMgLT4gNDUw
MCBwb2ludHMKKyAgICAgICAgICAgICAgKH44ODAwIHBvaW50cyBuby1HUFVQKQorICAgICAgICAg
ICAgLSBXZWJHTCBzYW1wbGVzIEFxdWFyaXVtOiAxMDAwIGZpc2ggfjYwZnBzIC0+IDEwMDAwIGZp
c2ggfjYwZnBzCisgICAgICAgICAgICAgICh+MTAwMDAgZmlzaCB3aXRoIG5vLUdQVVApCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjppc091dE9m
TGluZVN0cmVhbU1lc3NhZ2UgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVy
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rlc3RpbmF0aW9uU3RyZWFtLmg6IEFkZGVkLgor
ICAgICAgICAoSVBDOjpEZXN0aW5hdGlvblN0cmVhbUJhc2U6OkRlc3RpbmF0aW9uU3RyZWFtQmFz
ZSk6CisgICAgICAgIChJUEM6OkRlc3RpbmF0aW9uU3RyZWFtQmFzZTo6aGVhZGVyU2l6ZSk6Cisg
ICAgICAgIChJUEM6OkRlc3RpbmF0aW9uU3RyZWFtQmFzZTo6aGVhZGVyIGNvbnN0KToKKyAgICAg
ICAgKElQQzo6RGVzdGluYXRpb25TdHJlYW1CYXNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkVuY29kZXI6OkVuY29kZXIp
OgorICAgICAgICAoSVBDOjpFbmNvZGVyOjpyZXNlcnZlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvRW5jb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNzYWdlRmxhZ3MuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VGbGFncy5oLgorICAgICAgICAoSVBD
OjpNZXNzYWdlU3RyZWFtUmVjZWl2ZXI6Ok1lc3NhZ2VTdHJlYW1SZWNlaXZlcik6CisgICAgICAg
IChJUEM6Ok1lc3NhZ2VTdHJlYW1SZWNlaXZlcjo6c3RyZWFtV2FrZVVwKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVNlbmRlci5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6
TWVzc2FnZVN0cmVhbVNlbmRlcjo6TWVzc2FnZVN0cmVhbVNlbmRlcik6CisgICAgICAgIChJUEM6
Ok1lc3NhZ2VTdHJlYW1TZW5kZXI6OnNlbmQpOgorICAgICAgICAoSVBDOjpNZXNzYWdlU3RyZWFt
U2VuZGVyOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTdHJlYW1TZW5kZXI6OmRl
c3RpbmF0aW9uU3RyZWFtSGFuZGxlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNw
bGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlG
dW5jdGlvbnNHZW5lcmF0ZWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YXR0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRSZW5k
ZXJidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJsZW5kQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jU2VwYXJhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhckNvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y2xlYXJEZXB0aCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyU3RlbmNpbCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNvbG9yTWFzayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4SW1hZ2UyRCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3Jl
YXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmN1bGxGYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlRnJh
bWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6ZGVsZXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoRnVuYyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoTWFzayk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlcHRoUmFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXRhY2hTaGFkZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZHJhd0FycmF5cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmluaXNoKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Zmx1c2gpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZy
YW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZnJvbnRGYWNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QXR0cmliTG9jYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRC
dWZmZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0U3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjQpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjRpKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbWkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCb29sZWFudik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlcmkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJJbmZvTG9nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4UGFyYW1ldGVyZik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlm
b3JtZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtdWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojppc1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpsaW5lV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnBpeGVsU3RvcmVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVDb3ZlcmFnZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNjaXNzb3Ip
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzaGFkZXJT
b3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
dGVuY2lsRnVuYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFzayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3ApOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFt
ZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0
ZXhQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0xaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZnYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2kpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2l2KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRm
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm00aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFtKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmFsaWRhdGVQcm9ncmFtKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0
cmliMWYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2
ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2Z2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWI0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dmlld3BvcnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4
SW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YkRpdmlzb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlCdWZmZXJTdWJEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVm
ZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsaXRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZVN1
YkZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cmVhZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UyRCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UzRCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJ
bWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29weVRleFN1YkltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJhZ0RhdGFMb2Nh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVu
aWZvcm0xdWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMnVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTN1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm00dWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0ydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTN1aXYpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVpdik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDNmdik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRy
aXgzeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXgyeDRmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDRmdik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYkk0aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aXYpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdSYW5nZUVs
ZW1lbnRzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZHJhd0J1ZmZlcnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjbGVhckJ1ZmZlcml2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmaSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVF1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5RdWVyeSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFF1ZXJ5
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVl
cnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRR
dWVyeU9iamVjdHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRlbGV0ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTYW1w
bGVyUGFyYW1ldGVyZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZmVuY2VTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTeW5jKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsaWVudFdhaXRTeW5jKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FpdFN5bmMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTeW5jaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRyYW5zZm9ybUZl
ZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojppc1RyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5UcmFuc2Zv
cm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJCYXNlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlclJhbmdl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybUluZGljZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRBY3RpdmVVbmlmb3Jtcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1CbG9ja0luZGV4KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1C
bG9ja0JpbmRpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXJB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlz
VmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpiaW5kVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVudE1h
cmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnB1c2hHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnBvcEdyb3VwTWFya2VyRVhUKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFsZm9ybWF0aXYpOgorCiAy
MDIwLTEyLTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbU09VUF0gV2ViU29ja2V0czogd3JvbmcgZGF0YSBzZW50IGluIHNvbWUgY2FzZXMg
d2l0aCBsaWJzb3VwIDwgMi42OApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaAppbmRleCAyNzY0MmU4YmIy
NTQ0NjdlZDU1ODI0MTkyODNiNjk3ZjM0NWI2YWFiLi4wM2FlYTdiN2IwYTljODEzMGNlYzUzNzhk
YjY2MWUxY2YxYzE1OTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaApAQCAtNTksNyArNTksNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogc3RhdGljIHZvaWQgZW5jb2RlQXJyYXlCdWZmZXIo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBlbmNv
ZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihidWZmZXIuYnl0ZUxlbmd0aCgpKTsKLSAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmJ5dGVMZW5ndGgoKSwgMSk7CisgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
YnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5ieXRlTGVuZ3RoKCkpOwogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgpAQCAtNzUsNyArNzUsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IGRlY29kZUFy
cmF5QnVmZmVyKERlY29kZXImIGRlY29kZXIpCiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZl
cjo6dHJ5Q3JlYXRlKGxlbmd0aC52YWx1ZSgpLCBzaXplb2YodWludDhfdCkpOwogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgp
KSwgbGVuZ3RoLnZhbHVlKCksIDEpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBsZW5ndGgu
dmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBidWZmZXI7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCmluZGV4IGJjMzMxMThiNThm
MzVmYTgwMzhkN2QzYzBlMzM3N2MxNDllNzhmNzQuLjZiZjMwNDAzNWYzOTk1OTRkMGIwMWRhOWUz
OGNhMTc4YjY1YTJjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5o
CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHJw
LmlkIDw8IHJwLm5hbWUgPDwgcnAuaWNvbjsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVp
bnQ2NF90Pih1c2VyLmlkLmxlbmd0aCgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YSh1c2VyLmlkLmRhdGEoKSwgdXNlci5pZC5sZW5ndGgoKSwgMSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEodXNlci5pZC5kYXRhKCksIHVzZXIuaWQubGVuZ3RoKCkpOwog
ICAgIGVuY29kZXIgPDwgdXNlci5kaXNwbGF5TmFtZSA8PCB1c2VyLm5hbWUgPDwgdXNlci5pY29u
IDw8IHB1YktleUNyZWRQYXJhbXMgPDwgdGltZW91dCA8PCBleGNsdWRlQ3JlZGVudGlhbHMgPDwg
YXV0aGVudGljYXRvclNlbGVjdGlvbiA8PCBhdHRlc3RhdGlvbiA8PCBleHRlbnNpb25zOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNy
ZWRlbnRpYWxEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1
YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmgKaW5kZXggOWM1YjUxY2FjM2Y0ZDc0OTMzNWY1
YWE0YWFkMGRkMGQ0NmUxODUyYi4uZGZjNzc4ZTJmYThkZjZjODhjZDM4OTEwN2NiYzRkOTc1NGZh
OTA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNL
ZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IuaApAQCAtNDgsNyArNDgsNyBAQCB2
b2lkIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHR5cGU7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oaWQubGVuZ3RoKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKGlkLmRhdGEoKSwgaWQubGVuZ3RoKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKGlkLmRhdGEoKSwgaWQubGVuZ3RoKCkpOwogICAgIGVuY29kZXIgPDwgdHJh
bnNwb3J0czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAppbmRleCAwY2RiNDAxOGM4NDdmYTAwZmVkN2Y1ZmIwZmNiY2EzNTM5
ODM1MjUxLi5kZDJmYmIxMWI4ZjZiM2NhODliZGFhMmRkYTFjNDg3MmU1OWY2ZTY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApA
QCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90
PihtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheS0+c2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1
dG8gJmFycmF5QnVmZmVyQ29udGVudHMgOiAqbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpIHsK
ICAgICAgICAgZW5jb2RlciA8PCBhcnJheUJ1ZmZlckNvbnRlbnRzLnNpemVJbkJ5dGVzKCk7Ci0g
ICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihhcnJheUJ1ZmZlckNvbnRlbnRzLmRhdGEoKSksIGFycmF5QnVmZmVyQ29udGVudHMu
c2l6ZUluQnl0ZXMoKSwgMSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlckNvbnRlbnRzLmRhdGEoKSks
IGFycmF5QnVmZmVyQ29udGVudHMuc2l6ZUluQnl0ZXMoKSk7CiAgICAgfQogfQogCkBAIC0xOTMs
NyArMTkzLDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgYXV0byBidWZmZXIgPSBH
aWdhY2FnZTo6dHJ5TWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJ1ZmZlclNpemUpOwogICAg
ICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHN0YXRpY19jYXN0PHVpbnQ4X3QqPihi
dWZmZXIpLCBidWZmZXJTaXplLCAxKSkgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXIpLCBidWZmZXJTaXplKSkg
ewogICAgICAgICAgICAgR2lnYWNhZ2U6OmZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYnVmZmVy
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbi5oCmluZGV4IDE0Mjk3OTAyMGY3ZjliOTNkZmIzYTc2ZWVhMGJjZWM3NDQ2ZDgy
ZmIuLjMxYjQwNzg1NWIyNzU3MjljZTQ1N2NlOTNkOWEyM2MxNjk2YzU4YTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oCkBAIC04MCwxMyArODAsMTMgQEAgcHJpdmF0ZToKIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CiB2b2lkIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJm1fc3RyZWFtRGVzY3JpcHRpb24p
LCBzaXplb2YobV9zdHJlYW1EZXNjcmlwdGlvbiksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZtX3N0cmVhbURl
c2NyaXB0aW9uKSwgc2l6ZW9mKG1fc3RyZWFtRGVzY3JpcHRpb24pKTsKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KIGJvb2wgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKIHsK
LSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oJmRlc2NyaXB0aW9uLm1fc3RyZWFtRGVzY3JpcHRpb24pLCBzaXplb2YoZGVz
Y3JpcHRpb24ubV9zdHJlYW1EZXNjcmlwdGlvbiksIDEpOworICAgIHJldHVybiBkZWNvZGVyLmRl
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmZGVzY3JpcHRp
b24ubV9zdHJlYW1EZXNjcmlwdGlvbiksIHNpemVvZihkZXNjcmlwdGlvbi5tX3N0cmVhbURlc2Ny
aXB0aW9uKSk7CiB9CiAKIGlubGluZSBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gdG9DQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24oY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzLmgKaW5kZXggYTU2NGI0
MDQ3ZTAyNTcwYjliYWUzMjU2Zjg2MzM5MGVlNmJiMTlkYy4uMWI0NTdhNjczOGUyOWJjMzM3ZGM1
MTQ2NzI1Y2EzYmNhNzgwNGY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMuaApAQCAtMTE0LDE2ICsxMTQsMTYgQEAgcHJpdmF0ZToKIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZtX21pbk9yVmFsdWUpLCBzaXplb2YoVmFsdWVVbmlv
biksIGFsaWdub2YoVmFsdWVVbmlvbikpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZtX21heCksIHNpemVvZihWYWx1
ZVVuaW9uKSwgYWxpZ25vZihWYWx1ZVVuaW9uKSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExl
bmd0aERhdGEoJm1fbWluT3JWYWx1ZSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoJm1fbWF4KTsKICAgICBlbmNvZGVyIDw8IG1fdHlwZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KIGJvb2wgQ2FwYWJpbGl0eVZhbHVlT3JSYW5nZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UmIHZhbHVlT3JSYW5nZSkKIHsKLSAgICByZXR1
cm4gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4oJnZhbHVlT3JSYW5nZS5tX21pbk9yVmFsdWUpLCBzaXplb2YoVmFsdWVVbmlvbiksIGFsaWdu
b2YoVmFsdWVVbmlvbikpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZU9yUmFuZ2UubV9tYXgpLCBzaXplb2Yo
VmFsdWVVbmlvbiksIGFsaWdub2YoVmFsdWVVbmlvbikpCisgICAgcmV0dXJuIGRlY29kZXIuZGVj
b2RlRml4ZWRMZW5ndGhEYXRhKCZ2YWx1ZU9yUmFuZ2UubV9taW5PclZhbHVlKQorICAgICAgICAm
JiBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSgmdmFsdWVPclJhbmdlLm1fbWF4KQogICAg
ICAgICAmJiBkZWNvZGVyLmRlY29kZSh2YWx1ZU9yUmFuZ2UubV90eXBlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IDVjNGNhMjVkNGRhYTdkNTgxMzExNzBjOTcyMDNmNDA2ZWJiMWRiYTYuLjVkMmYz
ZWU2MGNmMzFhYTBmNmQwMDg4Nzc4MDhlZTRkYjVlYzkwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTMw
MywxMCArMzAzLDEwIEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJl
bmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiB9CiAKICNpZiBFTkFCTEUo
V0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQor
dm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUo
YXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgICAg
IHJldHVybiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsICp0aGlz
LCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSk7CiAgICAgfSk7
CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCmluZGV4IDRmMmQ0NGZmYjU1MGFhNmRlODEwYjliZjk1MjYyMDdkNTc5ZGI0NzkuLjQ4
YjExZjNhY2FkZjA3N2IyMGFjY2ExMWIzZWRmNDAyYjJmODc1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTI4
LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9p
ZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0p
OwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA4ZmMw
ZWZhYzkzMjE4MjIyYmIwYmM3YzIxYWFiOTE5ZTUzYTk3MzRlLi4yNGYzNmRmNDJlZTM1ZTk3NTNh
ZDZlNTc2ZDE3ZWQ4ZmM0YmQ0NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MjYsNyArMjYsNyBAQCBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRz
RGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0
OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikK
ICAgICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFdFQkdM
KQotICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgdm9pZCBDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSBzdHJlYW0pCiAgICAgdm9pZCBSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woV2ViS2l0OjpHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogI2Vu
ZGlmCiAgICAgdm9pZCBDbGVhck5vd1BsYXlpbmdJbmZvKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
Y3BwCmluZGV4IGQ4MDRkMWZhOTk5NGQ1ZmZmMzE0MzY0ZDU5YmVmOTVlYjQ5ZWE5OTkuLjdhNThi
NGZkYjUzMWQ2YWEyMTUyMTIwMDdhYjI4ODgwMzZiZDQ2YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcApAQCAtMzksMTUgKzM5LDE2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgUmVmUHRyPFNoYXJlZE1lbW9yeTo6SGFuZGxlPiYmKQogewogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogI2VuZGlmCiAKLVJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRH
TE9wZW5HTD4gY29udGV4dCkKLSAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgU2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGUmJiBzdHJlYW0sIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkK
KyAgICA6IE1lc3NhZ2VTdHJlYW1SZWNlaXZlcihXVEZNb3ZlKHN0cmVhbSkpCisgICAgLCBtX2Nv
bnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhtYWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKICAgICAsIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmgKaW5kZXggN2RiMGNmNTE4YWJmOWJiMjVhYjMzNmRkZGUwMzk5OTI1
YWEwNWYzMi4uMGIxYWQ1OTdiMDg1MDY2NmQwNzEyMThmYmYyZTU2MmM2NDUwMmM0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmgKQEAgLTI5LDggKzI5LDggQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKLSNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lv
bnNHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KQEAg
LTU3LDE2ICs1NywxNSBAQCBjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3Mg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKICAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIK
ICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VTdHJlYW1SZWNlaXZlcjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4KICAgICAsIHByaXZh
dGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYm
IHN0cmVhbSk7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkgb3ZlcnJpZGU7CiAKICAg
ICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkg
Y29uc3Q7CiAKLXByb3RlY3RlZDoKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+KTsKLQorcHVibGljOgogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRl
ciBvdmVycmlkZXMuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QgZmluYWw7CkBAIC03NSw2ICs3NCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCisgICAgLy8g
SVBDOjpNZXNzYWdlU3RyZWFtUmVjZWl2ZXIgdGVtcGxhdGUgY29udHJhY3QuCisgICAgdm9pZCBk
aWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
KworcHJvdGVjdGVkOgorICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYg
c3RyZWFtLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+KTsKKwogICAgIC8v
IEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkQ29tcG9z
aXRlKCkgZmluYWw7CiAgICAgdm9pZCBmb3JjZUNvbnRleHRMb3N0KCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KaW5kZXggYWEwMzQ3MjVmOWFhNDJmNDJi
ZDNjOGEwMGIwYWExODA5MGE1OWI5YS4uYTY3ZWJlZjRmYTEwMjZkMTZjMjlmNjM1Njk0M2YwNzY5
OTY3OWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAt
MjQsNyArMjQsNyBAQAogLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVw
LXdlYmdsLiBEbyBub3QgZWRpdC4KICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJHTCkKIAotbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRl
ZCB7CittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0
cmVhbSB7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFj
aFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cwpAQCAtMzQsNiArMzQsNyBAQCBt
ZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKICNlbmRp
ZgogICAgIHZvaWQgRW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQogICAg
IHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkKKyAgICB2b2lkIFN0cmVhbVdha2VVcCgp
IFdhbnRzQ29ubmVjdGlvbiAvLyBUT0RPOiB0aGlzIHNob3VsZCBiZSBtb3ZlZCB0byBtZXNzYWdl
cy5weQogCiAgICAgdm9pZCBTZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKICAgICB2b2lkIFN5
bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EuY3BwCmluZGV4IGU3YzQwYzk4NWNiN2QyNzIyODY5YTVkZmY5NjkxOTQ3MDc3YWY0NmMu
LjM5NDljY2RjODE3NTZjM2QxMzcwNDdhMGYxNDc1ZmFmMWVmYTAzZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIHsKIAog
Y2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3Vy
ZmFjZVN3YXBDaGFpbiB7CiBwdWJsaWM6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
QXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJiYgc3RyZWFtKTsKICAgICB+UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSgpIGZpbmFsID0gZGVmYXVsdDsKIAogICAgIC8vIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KQEAgLTU1LDEzICs1NSwxMyBAQCBwcml2
YXRlOgogCiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSYmIHN0cmVhbSkKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShhdHRyaWJ1dGVz
LCBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
KTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPihu
ZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShhdHRyaWJ1dGVzLCBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFt
KSkpOwogfQogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgOiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTChhdHRyaWJ1dGVzLCBjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhhdHRyaWJ1dGVzLCB0aGlzKSkKK1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIgaWRlbnRpZmllciwgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmJiBzdHJlYW0pCisgICAg
OiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBjb25uZWN0aW9uLCBpZGVudGlm
aWVyLCBXVEZNb3ZlKHN0cmVhbSksIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JH
UFVQcm9jZXNzKGF0dHJpYnV0ZXMsIHRoaXMpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKaW5kZXggNGYyNDU4MDc3ODE5YjIxZWViMDAxOTczYzIy
OGQzOTFkZDg1ZTcyNC4uNzhlMDFkMmU3YzJjYzkzMTAyZTc5NTBkMDc5NTg1MmEyNGUwMTMyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaApAQCAtOTQsNiAr
OTQsNyBAQCB0ZW1wbGF0ZTw+IGNsYXNzIFVzZXNNb2Rlcm5EZWNvZGVyPFdlYkNvcmU6OkRvdWJs
ZUNvbnN0cmFpbnQ+IDogcHVibGljIERlZmF1bHREZQogdGVtcGxhdGU8PiBjbGFzcyBVc2VzTGVn
YWN5RGVjb2RlcjxXZWJDb3JlOjpEb3VibGVDb25zdHJhaW50PiA6IHB1YmxpYyBEZWZhdWx0RGVj
b2RlclZhbHVlczxzdGQ6OnRydWVfdHlwZT4geyB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgQXJndW1lbnRDb2RlciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVCYgdCkKICAgICB7
CiAgICAgICAgIHQuZW5jb2RlKGVuY29kZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGIwYTQzZGU5ZDdhMTM3MjE2YTE5YmY3ZDBiZDVl
MTkxMTNiNWRhNjguLjE1MTMwOWJlODYxOGY2YzNmZmY1M2FmNGEwNDNkNmIxY2MxZjhlN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCiAjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbUVuY29kZXIuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTgx
LDcgKzgyLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPENTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogCiAgICAgdWludDMyX3QgbGVuZ3RoID0g
c3RyaW5nLmxlbmd0aCgpOwogICAgIGVuY29kZXIgPDwgbGVuZ3RoOwotICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmlu
Zy5kYXRhKCkpLCBsZW5ndGgsIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5kYXRhKCkpLCBsZW5ndGgp
OwogfQogCiBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENvZGVyPENTdHJpbmc+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ1N0cmluZyYgcmVzdWx0KQpAQCAtMTA0LDcgKzEwNSw3
IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8Q1N0cmluZz46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBDU3RyaW5nCiAKICAgICBjaGFyKiBidWZmZXI7CiAgICAgQ1N0
cmluZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCwgMSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZp
eGVkTGVuZ3RoRGF0YShidWZmZXIsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHJlc3VsdCA9IHN0cmluZzsKQEAgLTExMiw2ICsxMTMsNyBAQCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBBcmd1bWVudENvZGVyPENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
Q1N0cmluZwogfQogCiAKK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiB2b2lkIEFyZ3VtZW50
Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogewogICAgIC8vIFNwZWNpYWwgY2FzZSB0aGUgbnVsbCBzdHJpbmcuCkBAIC0xMjYsMTEg
KzEyOCwxOCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVuY29kZXIgPDwgbGVuZ3RoIDw8IGlz
OEJpdDsKIAogICAgIGlmIChpczhCaXQpCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJz
OCgpKSwgbGVuZ3RoICogc2l6ZW9mKExDaGFyKSwgYWxpZ25vZihMQ2hhcikpOworICAgICAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3Ro
KTsKICAgICBlbHNlCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSksIGxlbmd0
aCAqIHNpemVvZihVQ2hhciksIGFsaWdub2YoVUNoYXIpKTsKKyAgICAgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOwogfQogCit0
ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxFbmNvZGVyPihFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZyk7CisKK3RlbXBsYXRlCit2b2lkIEFy
Z3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlPFN0cmVhbUVuY29kZXI+KFN0cmVhbUVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKTsKKworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJp
bmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0aCkKIHsKQEAgLTE0Miw3ICsx
NTEsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChE
ZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndAogICAgIAogICAgIENoYXJhY3RlclR5cGUq
IGJ1ZmZlcjsKICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVk
KGxlbmd0aCwgYnVmZmVyKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihDaGFy
YWN0ZXJUeXBlKSwgYWxpZ25vZihDaGFyYWN0ZXJUeXBlKSkpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZUZpeGVkTGVuZ3RoRGF0YShidWZmZXIsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHN0cmluZzsKQEAgLTE4MCwxMiArMTg5LDEyIEBA
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFN0cmluZyYKIAogdm9pZCBBcmd1bWVudENvZGVyPFNIQTE6OkRpZ2Vz
dD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTSEExOjpEaWdlc3QmIGRpZ2VzdCkK
IHsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShkaWdlc3QuZGF0YSgpLCBzaXpl
b2YoZGlnZXN0KSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoZGlnZXN0
LmRhdGEoKSwgc2l6ZW9mKGRpZ2VzdCkpOwogfQogCiBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBB
cmd1bWVudENvZGVyPFNIQTE6OkRpZ2VzdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTSEEx
OjpEaWdlc3QmIGRpZ2VzdCkKIHsKLSAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aERhdGEoZGlnZXN0LmRhdGEoKSwgc2l6ZW9mKGRpZ2VzdCksIDEpOworICAgIHJldHVybiBkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkaWdlc3QuZGF0YSgpLCBzaXplb2YoZGlnZXN0KSk7
CiB9CiAKICNpZiBIQVZFKEFVRElUX1RPS0VOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggZTM4YmMxYzYwYWY2ZGNmMDM2OTY1YWE3OGFhZGJkNmQ4
ZDRiNjI2Mi4uMTY3ODNmMmU1NjQ5MTUzYzQyNjhhMjYzYWFkMTJiZDVjNjNiNTIxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC00NSw0MiArNDUs
NDQgQEAgbmFtZXNwYWNlIElQQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxl
QXJndW1lbnRDb2RlciB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFQmIHQpCiAgICAgewotICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdCksIHNpemVvZihUKSwgYWxpZ25v
ZihUKSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKCZ0KTsKICAgICB9
CiAKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFQmIHQpCiAgICAgewotICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVGaXhlZExl
bmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnQpLCBzaXplb2YoVCksIGFsaWdu
b2YoVCkpOworICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoJnQp
OwogICAgIH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVj
dCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD4+IHsKICAgICB1c2luZyBB
cnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+OworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCiAgICAgewog
ICAgICAgICBpZiAoIUV4dGVudCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
YXJyYXlSZWZlcmVuY2UuZGF0YSgpKSwgYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpICogc2l6ZW9mKFQp
LCBhbGlnbm9mKFQpKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoYXJy
YXlSZWZlcmVuY2UuZGF0YSgpLCBhcnJheVJlZmVyZW5jZS5zaXplKCkpOwogICAgIH0KICAgICBz
dGF0aWMgT3B0aW9uYWw8QXJyYXlSZWZlcmVuY2VUeXBlPiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICB7CiAgICAgICAgIGlmICghRXh0ZW50KQogICAgICAgICAgICAgcmV0dXJuIEFycmF5
UmVmZXJlbmNlVHlwZSgpOwotICAgICAgICBjb25zdCB1aW50OF90KiBkYXRhID0gZGVjb2Rlci5k
ZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShFeHRlbnQgKiBzaXplb2YoVCksIGFsaWdub2YoVCkp
OworICAgICAgICBjb25zdCBUKiBkYXRhID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVy
ZW5jZTxUPihFeHRlbnQpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBFeHRlbnQpOworICAgICAgICByZXR1cm4gQXJyYXlS
ZWZlcmVuY2VUeXBlKGRhdGEsIEV4dGVudCk7CiAgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVu
Y2VEeW5hbWljRXh0ZW50Pj4gewogICAgIHVzaW5nIEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5
UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD47CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKICAgICB7CiAgICAg
ICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJlZmVyZW5jZS5z
aXplKCkpKTsKICAgICAgICAgaWYgKCFhcnJheVJlZmVyZW5jZS5zaXplKCkpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSksIGFycmF5UmVm
ZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAgICAgIGVuY29kZXIu
ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGFycmF5UmVmZXJlbmNlLmRhdGEoKSwgYXJyYXlSZWZlcmVu
Y2Uuc2l6ZSgpKTsKICAgICB9CiAgICAgc3RhdGljIE9wdGlvbmFsPEFycmF5UmVmZXJlbmNlVHlw
ZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewpAQCAtODksMTAgKzkxLDEwIEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQs
IGFycmF5UmVmZXJlbmNlRHluYW1pCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgICAgICBpZiAoIXNpemUpCiAgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBl
KCk7Ci0gICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVu
Z3RoUmVmZXJlbmNlKHNpemUgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOworICAgICAgICBjb25z
dCBUKiBkYXRhID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZTxUPihzaXplKTsK
ICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAg
ICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IFQq
PihkYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSk7CisgICAgICAgIHJldHVybiBBcnJh
eVJlZmVyZW5jZVR5cGUoZGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSk7CiAgICAgfQog
fTsKIApAQCAtMjYyLDYgKzI2NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6cGFpcjxULCBVPj4gewogCiB0ZW1wbGF0ZTxzaXpl
X3QgaW5kZXgsIHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1cGxlRW5jb2RlciB7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4mIHR1cGxlKQogICAg
IHsKICAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxzaXplb2YuLi4oRWxlbWVudHMpIC0gaW5k
ZXg+KHR1cGxlKTsKQEAgLTI3MSw2ICsyNzQsNyBAQCBzdHJ1Y3QgVHVwbGVFbmNvZGVyIHsKIAog
dGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+CiBzdHJ1Y3QgVHVwbGVFbmNvZGVyPDAsIEVs
ZW1lbnRzLi4uPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JikKICAg
ICB7CiAgICAgfQpAQCAtMzM0LDYgKzMzOCw3IEBAIHN0cnVjdCBUdXBsZURlY29kZXI8MD4gewog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+IHN0cnVjdCBBcmd1bWVudENvZGVy
PHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjp0
dXBsZTxFbGVtZW50cy4uLj4mIHR1cGxlKQogICAgIHsKICAgICAgICAgVHVwbGVFbmNvZGVyPHNp
emVvZi4uLihFbGVtZW50cyksIEVsZW1lbnRzLi4uPjo6ZW5jb2RlKGVuY29kZXIsIHR1cGxlKTsK
QEAgLTM3MCw2ICszNzUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBW
YWx1ZVR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6S2V5VmFsdQogdGVtcGxhdGU8Ym9v
bCBmaXhlZFNpemVFbGVtZW50cywgdHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4gc3RydWN0IFZlY3Rv
ckFyZ3VtZW50Q29kZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+IHN0cnVj
dCBWZWN0b3JBcmd1bWVudENvZGVyPGZhbHNlLCBULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyLCBtaW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mIHZlY3RvcikKICAg
ICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZlY3Rvci5zaXpl
KCkpOwpAQCAtNDA3LDEwICs0MTMsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW4KIH07CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+IHN0cnVjdCBWZWN0b3JBcmd1bWVudENv
ZGVyPHRydWUsIFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5
PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYgdmVjdG9yKQogICAgIHsKICAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odmVjdG9yLnNpemUoKSk7Ci0gICAgICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHZlY3Rvci5kYXRhKCkpLCB2ZWN0b3Iuc2l6ZSgpICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsK
KyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEodmVjdG9yLmRhdGEoKSwgdmVj
dG9yLnNpemUoKSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBP
dmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYgdmVjdG9yKQpAQCAtNDM5LDcgKzQ0Niw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluCiAgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4gdGVtcDsKICAgICAgICAgdGVtcC5ncm93
KHNpemUpOwogCi0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4odGVtcC5kYXRhKCkpLCBzaXplICogc2l6ZW9mKFQpLCBh
bGlnbm9mKFQpKSkgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KHRlbXAuZGF0YSgpLCBzaXplKSkgewogICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC00NzQsNyArNDgxLDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW4KICAgICAgICAgVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiB2ZWN0b3I7CiAgICAgICAgIHZlY3Rv
ci5ncm93KHNpemUpOwogCi0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERh
dGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odmVjdG9yLmRhdGEoKSksIHNpemUgKiBzaXpl
b2YoVCksIGFsaWdub2YoVCkpKSB7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExl
bmd0aERhdGEodmVjdG9yLmRhdGEoKSwgc2l6ZSkpIHsKICAgICAgICAgICAgIGRlY29kZXIubWFy
a0ludmFsaWQoKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgIH0K
QEAgLTc0OSw2ICs3NTYsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENTdHJp
bmc+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3RyaW5nPiB7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGUoRGVjb2RlciYsIFN0cmluZyYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+
IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmlu
ZGV4IDJjYjc5YjczMWM4ZDM1MWEyZDA1OTQ2MzYyYzVhYjhiYmFkYmRjNWUuLjEzM2Y5NmZhMDRl
MTQ2YzhjMTA3NWM3OWExOTRmMWY3NTNhZTA4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuY3BwCkBAIC03NCw2ICs3NCwxNyBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYQog
ICAgICAgICByZXR1cm47CiB9CiAKK0RlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogc3Ry
ZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICA6IG1f
YnVmZmVyIHsgc3RyZWFtIH0KKyAgICAsIG1fYnVmZmVyUG9zIHsgbV9idWZmZXIgfQorICAgICwg
bV9idWZmZXJFbmQgeyBtX2J1ZmZlciArIHN0cmVhbVNpemUgfQorICAgICwgbV9idWZmZXJEZWFs
bG9jYXRvcihbXSAoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9KQorICAgICwgbV9kZXN0aW5h
dGlvbklEKGRlc3RpbmF0aW9uSUQpCit7CisgICAgaWYgKCFkZWNvZGUobV9tZXNzYWdlTmFtZSkp
CisgICAgICAgIHJldHVybjsKK30KKwogRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGVyVGFnKQogICAg
IDogbV9idWZmZXIgeyBidWZmZXIgfQogICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CkBA
IC04NCw2ICs5NSw3IEBAIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBz
aXplX3QgYnVmZmVyU2l6ZSwgQ29uc3RydWN0V2l0aG91dEhlYWRlCiAgICAgICAgIG1hcmtJbnZh
bGlkKCk7CiB9CiAKKwogRGVjb2Rlcjo6fkRlY29kZXIoKQogewogICAgIEFTU0VSVChtX2J1ZmZl
cik7CkBAIC0xMzksNjIgKzE1MSwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gRGVjb2Rl
cjo6dW53cmFwRm9yVGVzdGluZyhEZWNvZGVyJiBkZWNvZGVyKQogICAgIHJldHVybiBEZWNvZGVy
OjpjcmVhdGUod3JhcHBlZE1lc3NhZ2UuZGF0YSgpLCB3cmFwcGVkTWVzc2FnZS5zaXplKCksIG51
bGxwdHIsIFdURk1vdmUoYXR0YWNobWVudHMpKTsKIH0KIAotc3RhdGljIGlubGluZSBjb25zdCB1
aW50OF90KiByb3VuZFVwVG9BbGlnbm1lbnQoY29uc3QgdWludDhfdCogcHRyLCBzaXplX3QgYWxp
Z25tZW50KQotewotICAgIC8vIEFzc2VydCB0aGF0IHRoZSBhbGlnbm1lbnQgaXMgYSBwb3dlciBv
ZiAyLgotICAgIEFTU0VSVChhbGlnbm1lbnQgJiYgIShhbGlnbm1lbnQgJiAoYWxpZ25tZW50IC0g
MSkpKTsKLQotICAgIHVpbnRwdHJfdCBhbGlnbm1lbnRNYXNrID0gYWxpZ25tZW50IC0gMTsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90PihwdHIpICsgYWxpZ25tZW50TWFzaykgJiB+YWxpZ25tZW50TWFzayk7Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgYm9vbCBhbGlnbmVkQnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihjb25z
dCB1aW50OF90KiBhbGlnbmVkUG9zaXRpb24sIGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlclN0YXJ0LCBj
b25zdCB1aW50OF90KiBidWZmZXJFbmQsIHNpemVfdCBzaXplKQorYm9vbCBEZWNvZGVyOjphbGln
bmVkQnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihjb25zdCB1aW50OF90KiBhbGlnbmVkUG9z
aXRpb24sIHNpemVfdCBzaXplKSBjb25zdAogewogICAgIC8vIFdoZW4gc2l6ZSA9PSAwIGZvciB0
aGUgbGFzdCBhcmd1bWVudCBhbmQgaXQncyBhIHZhcmlhYmxlIGxlbmd0aCBieXRlIGFycmF5LAog
ICAgIC8vIGJ1ZmZlclN0YXJ0ID09IGFsaWduZWRQb3NpdGlvbiA9PSBidWZmZXJFbmQsIHNvIGNo
ZWNraW5nIChidWZmZXJFbmQgPj0gYWxpZ25lZFBvc2l0aW9uKQogICAgIC8vIGlzIG5vdCBhbiBv
ZmYtYnktb25lIGVycm9yIHNpbmNlIChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlckVuZCAtIGFs
aWduZWRQb3NpdGlvbikgPj0gc2l6ZSkKICAgICAvLyB3aWxsIGNhdGNoIGlzc3VlcyB3aGVuIHNp
emUgIT0gMC4KLSAgICByZXR1cm4gYnVmZmVyRW5kID49IGFsaWduZWRQb3NpdGlvbiAmJiBidWZm
ZXJTdGFydCA8PSBhbGlnbmVkUG9zaXRpb24gJiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZmZXJF
bmQgLSBhbGlnbmVkUG9zaXRpb24pID49IHNpemU7Ci19Ci0KLWJvb2wgRGVjb2Rlcjo6YWxpZ25C
dWZmZXJQb3NpdGlvbihzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKLXsKLSAgICBjb25z
dCB1aW50OF90KiBhbGlnbmVkUG9zaXRpb24gPSByb3VuZFVwVG9BbGlnbm1lbnQobV9idWZmZXJQ
b3MsIGFsaWdubWVudCk7Ci0gICAgaWYgKCFhbGlnbmVkQnVmZmVySXNMYXJnZUVub3VnaFRvQ29u
dGFpbihhbGlnbmVkUG9zaXRpb24sIG1fYnVmZmVyLCBtX2J1ZmZlckVuZCwgc2l6ZSkpIHsKLSAg
ICAgICAgLy8gV2UndmUgd2Fsa2VkIG9mZiB0aGUgZW5kIG9mIHRoaXMgYnVmZmVyLgotICAgICAg
ICBtYXJrSW52YWxpZCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAg
IG1fYnVmZmVyUG9zID0gYWxpZ25lZFBvc2l0aW9uOwotICAgIHJldHVybiB0cnVlOwotfQotCi1i
b29sIERlY29kZXI6OmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IGFsaWdubWVu
dCwgc2l6ZV90IHNpemUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFsaWduZWRCdWZmZXJJc0xhcmdl
RW5vdWdoVG9Db250YWluKHJvdW5kVXBUb0FsaWdubWVudChtX2J1ZmZlclBvcywgYWxpZ25tZW50
KSwgbV9idWZmZXIsIG1fYnVmZmVyRW5kLCBzaXplKTsKLX0KLQotYm9vbCBEZWNvZGVyOjpkZWNv
ZGVGaXhlZExlbmd0aERhdGEodWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGln
bm1lbnQpCi17Ci0gICAgaWYgKCFhbGlnbkJ1ZmZlclBvc2l0aW9uKGFsaWdubWVudCwgc2l6ZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1lbWNweShkYXRhLCBtX2J1ZmZlclBvcywg
c2l6ZSk7Ci0gICAgbV9idWZmZXJQb3MgKz0gc2l6ZTsKLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1jb25zdCB1aW50OF90KiBEZWNvZGVyOjpkZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShzaXpl
X3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCkKLXsKLSAgICBpZiAoIWFsaWduQnVmZmVyUG9zaXRp
b24oYWxpZ25tZW50LCBzaXplKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBjb25z
dCB1aW50OF90KiBkYXRhID0gbV9idWZmZXJQb3M7Ci0gICAgbV9idWZmZXJQb3MgKz0gc2l6ZTsK
LQotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2J1ZmZlckVuZCA+PSBhbGlnbmVkUG9z
aXRpb24gJiYgbV9idWZmZXIgPD0gYWxpZ25lZFBvc2l0aW9uICYmIHN0YXRpY19jYXN0PHNpemVf
dD4obV9idWZmZXJFbmQgLSBhbGlnbmVkUG9zaXRpb24pID49IHNpemU7CiB9CiAKIGJvb2wgRGVj
b2Rlcjo6cmVtb3ZlQXR0YWNobWVudChBdHRhY2htZW50JiBhdHRhY2htZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IDM0NGNlNjg4MmZjOTA5ODRiMmZhNTdiZjljNDhi
OTY1MGUwZmY3NGUuLjk0MWEzZjAyNDRiZGU4MTAxNGE5MDZhMTQyM2M5NzdmOWUxNzk3NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3Mg
RGVjb2RlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBj
cmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1
ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1l
bnQ+JiYpOwogICAgIGV4cGxpY2l0IERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXpl
X3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwg
c2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOworICAgIGV4cGxpY2l0IERlY29kZXIoY29u
c3QgdWludDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCk7CiAgICAgfkRlY29kZXIoKTsKIAogICAgIERlY29kZXIoY29uc3QgRGVjb2RlciYpID0g
ZGVsZXRlOwpAQCAtNzUsMjMgKzc2LDM0IEBAIHB1YmxpYzoKICAgICBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJQb3MgIT0gbnVsbHB0cjsg
fQogICAgIHZvaWQgbWFya0ludmFsaWQoKSB7IG1fYnVmZmVyUG9zID0gbnVsbHB0cjsgfQogCi0g
ICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCwgc2l6ZV90IGFsaWdubWVudCk7Ci0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUZpeGVkTGVuZ3RoRGF0YShU
KiBkYXRhLCBzaXplX3QgY291bnQgPSAxKQorICAgIHsKKyAgICAgICAgY29uc3QgVCogc291cmNl
ID0gZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2U8VD4oY291bnQpOworICAgICAgICBpZiAoIXNv
dXJjZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbWVtY3B5KGRhdGEsIHNv
dXJjZSwgc2l6ZW9mKFQpICogY291bnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAg
ICAgLy8gVGhlIGRhdGEgaW4gdGhlIHJldHVybmVkIHBvaW50ZXIgaGVyZSB3aWxsIG9ubHkgYmUg
dmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgQXJndW1lbnREZWNvZGVyIG9iamVjdC4KICAg
ICAvLyBSZXR1cm5zIG51bGxwdHIgb24gZmFpbHVyZS4KLSAgICBXQVJOX1VOVVNFRF9SRVRVUk4g
Y29uc3QgdWludDhfdCogZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2Uoc2l6ZV90LCBzaXplX3Qg
YWxpZ25tZW50KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JF
VFVSTiBjb25zdCBUKiBkZWNvZGVGaXhlZExlbmd0aFJlZmVyZW5jZShzaXplX3QgY291bnQgPSAx
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFsaWduQnVmZmVyUG9zaXRpb248VD4oY291bnQpOwor
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19hcml0aG1ldGljPFQ+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KICAgICBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGUoVCYgdmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihU
KSwgYWxpZ25vZihUKSk7CisgICAgICAgIHJldHVybiBkZWNvZGVGaXhlZExlbmd0aERhdGEoJnZh
bHVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJsZV9pZl90
PHN0ZDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWU+KiA9IG51bGxwdHI+CiAgICAgRGVjb2RlciYg
b3BlcmF0b3I+PihPcHRpb25hbDxUPiYgb3B0aW9uYWwpCiAgICAgewogICAgICAgICBUIHJlc3Vs
dDsKLSAgICAgICAgaWYgKGRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPigmcmVzdWx0KSwgc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKSkKKyAgICAgICAgaWYgKGRl
Y29kZUZpeGVkTGVuZ3RoRGF0YSgmcmVzdWx0KSkKICAgICAgICAgICAgIG9wdGlvbmFsID0gcmVz
dWx0OwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQpAQCAtMTIwLDE0ICsxMzIsMTQgQEAg
cHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgYm9vbCBidWZm
ZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNpemVfdCBudW1FbGVtZW50cykgY29uc3QKKyAgICBi
b29sIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW4oc2l6ZV90IGNvdW50KSBjb25zdAogICAg
IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLCAi
VHlwZSBUIG11c3QgaGF2ZSBhIGZpeGVkLCBrbm93biBlbmNvZGVkIHNpemUhIik7CiAKLSAgICAg
ICAgaWYgKG51bUVsZW1lbnRzID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAv
IHNpemVvZihUKSkKKyAgICAgICAgaWYgKGNvdW50ID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSAvIHNpemVvZihUKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICByZXR1cm4gYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbihhbGlnbm9mKFQpLCBudW1F
bGVtZW50cyAqIHNpemVvZihUKSk7CisgICAgICAgIHJldHVybiBhbGlnbmVkQnVmZmVySXNMYXJn
ZUVub3VnaFRvQ29udGFpbihyb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YoVCk+KG1fYnVmZmVy
UG9zKSwgc2l6ZW9mKFQpICogY291bnQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfZW51bTxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNf
YXJpdGhtZXRpYzxUPjo6dmFsdWUgJiYgVXNlc0xlZ2FjeURlY29kZXI8VD46OnZhbHVlPiogPSBu
dWxscHRyPgpAQCAtMTg2LDggKzE5OCwyMiBAQCBwcml2YXRlOgogICAgIGVudW0gQ29uc3RydWN0
V2l0aG91dEhlYWRlclRhZyB7IENvbnN0cnVjdFdpdGhvdXRIZWFkZXIgfTsKICAgICBEZWNvZGVy
KGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIENvbnN0cnVjdFdpdGhv
dXRIZWFkZXJUYWcpOwogCi0gICAgYm9vbCBhbGlnbkJ1ZmZlclBvc2l0aW9uKHNpemVfdCBhbGln
bm1lbnQsIHNpemVfdCk7Ci0gICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHNp
emVfdCBhbGlnbm1lbnQsIHNpemVfdCkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBjb25zdCBUKiBhbGlnbkJ1ZmZlclBvc2l0aW9uKHNpemVfdCBjb3VudCkKKyAgICB7Cisg
ICAgICAgIHNpemVfdCBzaXplID0gY291bnQgKiBzaXplb2YoVCk7CisgICAgICAgIGNvbnN0IHVp
bnQ4X3QqIGFsaWduZWRQb3NpdGlvbiA9IHJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25vZihUKT4o
bV9idWZmZXJQb3MpOworICAgICAgICBpZiAoIWFsaWduZWRCdWZmZXJJc0xhcmdlRW5vdWdoVG9D
b250YWluKGFsaWduZWRQb3NpdGlvbiwgc2l6ZSkpIHsKKyAgICAgICAgICAgIC8vIFdlJ3ZlIHdh
bGtlZCBvZmYgdGhlIGVuZCBvZiB0aGlzIGJ1ZmZlci4KKyAgICAgICAgICAgIG1hcmtJbnZhbGlk
KCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIG1f
YnVmZmVyUG9zID0gYWxpZ25lZFBvc2l0aW9uICsgc2l6ZTsKKyAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3RfcHRyPGNvbnN0IFQqPihhbGlnbmVkUG9zaXRpb24pOworICAgIH0KKyAgICBi
b29sIGFsaWduZWRCdWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKGNvbnN0IHVpbnQ4X3QqIGFs
aWduZWRQb3NpdGlvbiwgc2l6ZV90KSBjb25zdDsKKwogCiAgICAgY29uc3QgdWludDhfdCogbV9i
dWZmZXI7CiAgICAgY29uc3QgdWludDhfdCogbV9idWZmZXJQb3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZXN0aW5hdGlvblN0cmVhbS5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGVzdGluYXRpb25TdHJlYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWM2YjlhMDQ4
N2M2OWQwZTc1NjU5MTJjMTc0YjVhOTRhNTdkYmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVzdGluYXRpb25TdHJlYW0uaApAQCAtMCwwICsxLDMyMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2lu
Y2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgIlN0cmVhbUVuY29kZXIuaCIKKyNpbmNs
dWRlIDx3dGYvQXRvbWljcy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworCisvLyBUaGUgSVBDIGRl
c3RpbmF0aW9uIHN0cmVhbSBpcyBhIHR3by13YXkgc3RyZWFtIG9mIG1lc3NhZ2VzIHRvIGEgYmV0
d2VlbiBhIHNlbmRlciBhbmQgdGhlCisvLyBkZXN0aW5hdGlvbiByZWNlaXZlci4KKy8vCisvLyBJ
dCBpcyBpbXBsZW1lbnRlZCBhcyBEZXN0aW5hdGlvblN0cmVhbVNlbmRlciBhbmQgRGVzdGluYXRp
b25TdHJlYW1SZWNlaXZlci4gRWl0aGVyIG9mIHRoZXNlCisvLyBjYW4gYmUgIndyaXRpbmciIG9y
ICJyZWFkaW5nIi4gU2VuZGVyIGlzIHRoZSBpbnN0YW5jZSBzZW5kaW5nIHRoZSBzdHJlYW0gb3Zl
ciB0byB0aGUgcmVjZWl2ZXIuCisvLyBGSVhNRTogSW4gY3VycmVudCBpbXBsZW1lbnRhdGlvbiBv
bmx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBnbyB0aHJvdWdoIHRoZSBzdHJlYW0uIFRoaXMgbWVh
bnMKKy8vIHRoZSBzZW5kZXIgaXMgb25seSB3cml0aW5nIGFuZCByZWNlaXZlciBpcyBvbmx5IHJl
YWRpbmcuCisvLworLy8gVGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdpbGwgcmVjZWl2ZSBtZXNz
YWdlcyBpbiBvcmRlciBfZm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdlc18uCisvLyBUaGUgd2hv
bGUgY29ubmVjdGlvbiBtZXNzYWdlIG9yZGVyIGlzIG5vdCBwcmVzZXJ2ZWQuCisKKworLy8gU3Ry
ZWFtQnVmZmVyIGlzIGEgc2hhcmVkIG1lbW9yeSAiYmktcGFydGl0ZSIgY2lyY3VsYXIgYnVmZmVy
IHN1cHBvcnRpbmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdlcywgc3BlY2lmaWMgZGF0YSBh
bGlnbm1lbnQgd2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUuCisvLyBEZXN0aW5hdGlvblN0cmVh
bVNlbmRlciBhbmQgRGVzdGluYXRpb25TdHJlbWFSZWNlaXZlciB1c2UgU3RyZWFtQnVmZmVyIHRv
IGNvbW11bmljYXRlLgorLy8KKy8vIFRoZSAiYmktcGFydGl0ZSIgaXMgaGVyZSB0byBtZWFuIHRo
YXQgd3JpdGVzIGFuZCByZWFkcyB0byB0aGUgYnVmZmVyIG11c3QgYmUKKy8vIGNvbnRpbnVvdXMu
CisvLworLy8gVGhlIGNsaWVudCAoc2VuZGVyIG9yIHJlY2VpdmVyKSAiYWNxdWlyZXMiIHNvbWUg
YW1vdW50IG9mIGJ1ZmZlciBkYXRhLiBJZiBidWZmZXIgaGFzIG5vCisvLyBjYXBhY2l0eSwgYWNx
dWlyZSByZXR1cm5zIHdpdGggemVybyBjYXBhY2l0eS4gSWYgYnVmZmVyIGhhcyBhdCBsZWFzdCBh
Y3F1aXJlZAorLy8gY2FwYWNpdHksIGFsbCB0aGUgYXZhaWxhYmxlIGNhcGFjaXR5IGlzIHJldHVy
bmVkLgorLy8KKy8vIFRoZSBjbGllbnQgInJlbGVhc2VzIiB0aGUgc29tZSBhbW91bnQgb2YgZGF0
YSwgYXQgbGVhc3QgdGhlIGFtb3VudCBhY3F1aXJlZCBidXQgcG90ZW50aWFsbHkKKy8vIG1vcmUu
CisvLworLy8gQm90aCBzZW5kZXIgYW5kIHJlY2VpdmVyIG11c3QgYWNxdWlyZSBzYW1lIGFtb3Vu
dCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhlIGFjcXVpcmUgc2VxdWVuY2UuCisvLyBJ
ZiBzZW5kZXIgYWNxdWlyZXMgWCBhbmQgdGhlbiBZIGFtb3VudCwgcmVjZWl2ZXIgbXVzdCBkbyB0
aGUgc2FtZS4KKy8vCisvLyBUaGUgY2lyY3VsYXIgYnVmZmVyIGhhcyBmb2xsb3dpbmcgaW1wbGVt
ZW50YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRoZSBkYXRhIGJldHdlZW4gW3NlbmRlck9mZnNl
dCwgcmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9mZnNldCA9PQorLy8gcmVjZWl2ZXJPZmZz
ZXQsIHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4KKy8vICogUmVjZWl2ZXIgb3ducyB0aGUgZGF0
YSBiZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVyT2Zmc2V0Wy4KKy8vICogVGhlIGJ1ZmZl
ciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhlIGxhc3QgdmFsdWUgaXMg
cmVzZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsLiBGSVhN
RTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBpZgorLy8gaXQgd291bGQg
dXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9mIHRoZSBob2xlIGFzIHRoZSBpbmRpY2F0b3Iu
IFRoaXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWduZWRTcGFuIGltcGxlbWVudGF0aW9uIHRvIHRo
ZSBTdHJlYW1CdWZmZXIuCisvLyAqIEFsbCBhdG9taWMgdmFyaWFibGUgbG9hZHMgYXJlIHVudHJ1
c3RlZCwgc28gdGhleSdyZSBjbGFtcGVkLiBWaW9sYXRpb25zIGFyZSBub3QgcmVwb3J0ZWQsCisv
LyB0aG91Z2guCisvLyBTZWUgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuCit0ZW1wbGF0ZTxzaXpl
X3QgbWVzc2FnZUFsaWdubWVudD4KK2NsYXNzIFN0cmVhbUJ1ZmZlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtQnVmZmVyKTsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBTdHJlYW1CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVt
b3J5PiYmIG1lbW9yeSwgc2l6ZV90IG1lbW9yeVNpemUpCisgICAgICAgIDogbV9kYXRhU2l6ZSht
ZW1vcnlTaXplIC0gaGVhZGVyU2l6ZSgpKQorICAgICAgICAsIG1fc2hhcmVkTWVtb3J5KFdURk1v
dmUobWVtb3J5KSkKKyAgICB7CisgICAgfQorCisgICAgflN0cmVhbUJ1ZmZlcigpID0gZGVmYXVs
dDsKKyAgICBzdHJ1Y3QgSGVhZGVyIHsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gcmVjZWl2ZXJP
ZmZzZXQ7CisgICAgICAgIC8vIFBhZGRpbmcgc28gdGhhdCB0aGUgdmFyaWFibGVzIG1vc3RseSBh
Y2Nlc3NlZCBieSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGRvIG5vdCBzaGFyZSBhIGNhY2hlIGxpbmUu
CisgICAgICAgIC8vIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBhdm9pZCBjYWNoZS1saW5lIGluZHVj
ZWQgcmVkdWN0aW9uIG9mIHBhcmFsbGVsIGFjY2Vzcy4KKyAgICAgICAgdWludDY0X3QgY2FjaGVM
aW5lUGFkZGluZ1syXTsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gc2VuZGVyT2Zmc2V0OworICAg
IH07CisKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBoZWFkZXJTaXplKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihzdGQ6Om1heF9hbGlnbl90
KT4oc2l6ZW9mKEhlYWRlcikpOworICAgIH0KKworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVf
dCBvZmZzZXQpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IGRhdGFTaXpl
KCkpOworICAgICAgICBpZiAob2Zmc2V0ID09IGRhdGFTaXplKCkpCisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICBzaXplX3QgYWxpZ25P
ZmZzZXQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGFjcXVpcmVTaXplKSBjb25zdAorICAgIHsKKyAg
ICAgICAgb2Zmc2V0ID0gcm91bmRVcFRvTXVsdGlwbGVPZjxtZXNzYWdlQWxpZ25tZW50PihvZmZz
ZXQpOworICAgICAgICBpZiAob2Zmc2V0ICsgYWNxdWlyZVNpemUgPj0gZGF0YVNpemUoKSkKKyAg
ICAgICAgICAgIG9mZnNldCA9IDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisg
ICAgSGVhZGVyJiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxIZWFk
ZXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKTsgfQorCisgICAgdWludDhfdCogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgp
KSArIGhlYWRlclNpemUoKTsgfQorCisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhU2l6ZTsgfQorCisgICAgLy8gVGFnIHZhbHVlIHN0b3JlZCBpbiBIZWFkZXI6OnNl
bmRlck9mZnNldCB3aGVuIHJlY2VpdmVyIGlzIHNsZWVwaW5nLgorICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZyA9IDEgPDwgMzE7CisK
KyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZUZvclJlY2VpdmVyKCkK
KyAgICB7CisgICAgICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAg
ICAgICBpZiAoIW1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBXZWJLaXQ6OlNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAgICAgIENSQVNIKCk7
CisgICAgICAgIHJldHVybiB7IFdURk1vdmUoaGFuZGxlKSwgbV9zaGFyZWRNZW1vcnktPnNpemUo
KSB9OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBzaXplX3QgbV9kYXRhU2l6ZTsKKyAg
ICBSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworfTsKKworY2xhc3Mg
RGVzdGluYXRpb25TdHJlYW1TZW5kZXIgIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXN0aW5hdGlvblN0cmVhbVNlbmRlcik7CitwdWJs
aWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluTWVzc2FnZVNpemUgPSBTdHJlYW1F
bmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
bWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUVuY29kZXI6Om1lc3NhZ2VBbGlnbm1lbnQ7CisKKyAg
ICBleHBsaWNpdCBEZXN0aW5hdGlvblN0cmVhbVNlbmRlcihzaXplX3Qgc2l6ZSkKKyAgICAgICAg
OiBtX2J1ZmZlcihjcmVhdGVNZW1vcnkoc2l6ZSksIHNpemUpCisgICAgeworICAgICAgICAvLyBS
ZWFkIHN0YXJ0cyBmcm9tIDAgd2l0aCBsaW1pdCBvZiAwIGFuZCByZWFkZXIgc2xlZXBpbmcuCisg
ICAgICAgIGhlYWRlcigpLnNlbmRlck9mZnNldC5zdG9yZShTdHJlYW1CdWZmZXJUeXBlOjpzZW5k
ZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQp
OworICAgICAgICAvLyBXcml0ZSBzdGFydHMgZnJvbSAwIHdpdGggYSBsaW1pdCBvZiB0aGUgd2hv
bGUgYnVmZmVyLgorICAgICAgICBoZWFkZXIoKS5yZWNlaXZlck9mZnNldC5zdG9yZSgwLCBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgICB9CisgICAgc3RydWN0IFNwYW4geworICAgICAg
ICB1aW50OF90KiBwdHI7CisgICAgICAgIHNpemVfdCBjYXBhY2l0eTsKKyAgICB9OworCisgICAg
U3BhbiB0cnlBY3F1aXJlKCkKKyAgICB7CisgICAgICAgIHNpemVfdCBzZW5kZXJMaW1pdCA9IHN0
ZDo6bWluKGhlYWRlcigpLnJlY2VpdmVyT2Zmc2V0LmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNx
dWlyZSksIGRhdGFTaXplKCkpOworICAgICAgICByZXR1cm4gYWxpZ25lZFNwYW4obV9zZW5kZXJP
ZmZzZXQsIHNlbmRlckxpbWl0KTsKKyAgICB9CisKKyAgICBlbnVtIGNsYXNzIFdha2VVcFJlYWRl
ciA6IGJvb2wgeworICAgICAgICBObywKKyAgICAgICAgWWVzCisgICAgfTsKKworICAgIFdha2VV
cFJlYWRlciByZWxlYXNlKHNpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgc2l6ZV90IGV4cGVj
dGVkUmVjZWl2ZXJMaW1pdCA9IG1fc2VuZGVyT2Zmc2V0OworICAgICAgICBtX3NlbmRlck9mZnNl
dCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9zZW5kZXJPZmZzZXQpICsgc2l6ZSk7CisgICAg
ICAgIEFTU0VSVChtX3NlbmRlck9mZnNldCA8IGRhdGFTaXplKCkpOworICAgICAgICAvLyBJZiBy
ZWNlaXZlciBvdmVyd3JvdGUgdGhlIHNlbmRlck9mZnNldCB3aXRoIHNlbmRlck9mZnNldFJlY2Vp
dmVySXNTbGVlcGluZ1RhZywgd2Uga25vdyBpdCBpcyBzbGVlcGluZy4KKyAgICAgICAgc2l6ZV90
IHJlY2VpdmVyTGltaXQgPSBoZWFkZXIoKS5zZW5kZXJPZmZzZXQuZXhjaGFuZ2UobV9zZW5kZXJP
ZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICBpZiAocmVjZWl2ZXJM
aW1pdCAhPSBleHBlY3RlZFJlY2VpdmVyTGltaXQpCisgICAgICAgICAgICByZXR1cm4gV2FrZVVw
UmVhZGVyOjpZZXM7CisgICAgICAgIHJldHVybiBXYWtlVXBSZWFkZXI6Ok5vOworICAgIH0KKwor
ICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgZGVzdGluYXRpb25TdHJlYW1IYW5k
bGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmhhbmRsZUZvclJlY2VpdmVyKCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+
IGNyZWF0ZU1lbW9yeShzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIGF1dG8gbWVtb3J5ID0g
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemUpOworICAgICAgICBpZiAoIW1lbW9y
eSkKKyAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgIHJldHVybiBtZW1vcnkucmVsZWFzZU5v
bk51bGwoKTsKKyAgICB9CisKKyAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci53cmFwT2Zmc2V0KG9mZnNldCk7IH0KKworICAgIHNpemVf
dCBhbGlnbk9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5hbGln
bk9mZnNldChvZmZzZXQsIG1pbk1lc3NhZ2VTaXplKTsgfQorCisgICAgU3BhbiBhbGlnbmVkU3Bh
bihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCisgICAgeworICAgICAgICBBU1NFUlQob2Zm
c2V0IDwgZGF0YVNpemUoKSk7CisgICAgICAgIEFTU0VSVChsaW1pdCA8IGRhdGFTaXplKCkpOwor
ICAgICAgICBzaXplX3QgYWxpZ25lZCA9IGFsaWduT2Zmc2V0KG9mZnNldCk7CisgICAgICAgIHNp
emVfdCBzaXplID0gMDsKKyAgICAgICAgaWYgKG9mZnNldCA8IGxpbWl0KSB7CisgICAgICAgICAg
ICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgJiYgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAg
ICAgIHNpemUgPSBsZW4oYWxpZ25lZCwgbGltaXQpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0IHx8IGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAg
ICAgICAgICBzaXplID0gbGVuKGFsaWduZWQsIGxpbWl0KTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4geyBkYXRhKCkgKyBhbGlnbmVkLCBzaXplIH07CisgICAgfQorCisgICAgc2l6ZV90IGxl
bihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCisgICAgeworICAgICAgICBpZiAoIWxpbWl0
KQorICAgICAgICAgICAgcmV0dXJuIGRhdGFTaXplKCkgLSAxIC0gb2Zmc2V0OworICAgICAgICBp
ZiAobGltaXQgPD0gb2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIGRhdGFTaXplKCkgLSBvZmZz
ZXQ7CisgICAgICAgIHJldHVybiBsaW1pdCAtIG9mZnNldCAtIDE7CisgICAgfQorCisgICAgdXNp
bmcgU3RyZWFtQnVmZmVyVHlwZSA9IFN0cmVhbUJ1ZmZlcjxtZXNzYWdlQWxpZ25tZW50PjsKKwor
ICAgIFN0cmVhbUJ1ZmZlclR5cGU6OkhlYWRlciYgaGVhZGVyKCkgeyByZXR1cm4gbV9idWZmZXIu
aGVhZGVyKCk7IH0KKworICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5kYXRhKCk7IH0KKworICAgIHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmRhdGFTaXplKCk7IH0KKworICAgIFN0cmVhbUJ1ZmZlclR5cGUgbV9idWZmZXI7CisgICAg
c2l6ZV90IG1fc2VuZGVyT2Zmc2V0IHsgMCB9OworfTsKKworY2xhc3MgRGVzdGluYXRpb25TdHJl
YW1SZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRGVzdGluYXRpb25TdHJlYW1SZWNlaXZlcik7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgbWluTWVzc2FnZVNpemUgPSBTdHJlYW1FbmNvZGVyOjptaW5p
bXVtTWVzc2FnZVNpemU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdu
bWVudCA9IFN0cmVhbUVuY29kZXI6Om1lc3NhZ2VBbGlnbm1lbnQ7CisKKyAgICBleHBsaWNpdCBE
ZXN0aW5hdGlvblN0cmVhbVJlY2VpdmVyKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUm
JiBzdHJlYW0pCisgICAgeworICAgICAgICBpZiAoc3RyZWFtLmRhdGFTaXplIDwgU3RyZWFtQnVm
ZmVyVHlwZTo6aGVhZGVyU2l6ZSgpICsgbWluTWVzc2FnZVNpemUpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6Om1h
cChzdHJlYW0uaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdy
aXRlKTsKKyAgICAgICAgaWYgKHNoYXJlZE1lbW9yeS0+c2l6ZSgpIDwgc3RyZWFtLmRhdGFTaXpl
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2J1ZmZlciA9IG1ha2VVbmlxdWU8U3Ry
ZWFtQnVmZmVyVHlwZT4oc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCksIHN0YXRpY19jYXN0
PHNpemVfdD4oc3RyZWFtLmRhdGFTaXplKSk7CisgICAgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQorCisgICAgc3RydWN0IFNwYW4geworICAgICAg
ICB1aW50OF90KiBwdHI7CisgICAgICAgIHNpemVfdCBjYXBhY2l0eTsKKyAgICB9OworCisgICAg
U3BhbiB0cnlBcXVpcmUoKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHJlY2VpdmVyTGltaXQgPSBo
ZWFkZXIoKS5zZW5kZXJPZmZzZXQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAg
ICAgICAgcmVjZWl2ZXJMaW1pdCAmPSB+U3RyZWFtQnVmZmVyVHlwZTo6c2VuZGVyT2Zmc2V0UmVj
ZWl2ZXJJc1NsZWVwaW5nVGFnOworICAgICAgICByZWNlaXZlckxpbWl0ID0gc3RkOjptaW4ocmVj
ZWl2ZXJMaW1pdCwgZGF0YVNpemUoKSk7CisgICAgICAgIHJldHVybiBhbGlnbmVkU3BhbihtX3Jl
Y2VpdmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0KTsKKyAgICB9CisKKyAgICBTcGFuIHJlbGVhc2Uo
c2l6ZV90IHJlYWRTaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlYWRTaXplKTsKKyAgICAg
ICAgbV9yZWNlaXZlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9yZWNlaXZlck9m
ZnNldCkgKyByZWFkU2l6ZSk7CisgICAgICAgIGhlYWRlcigpLnJlY2VpdmVyT2Zmc2V0LnN0b3Jl
KG1fcmVjZWl2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOworICAgICAgICBz
aXplX3QgcmVjZWl2ZXJMaW1pdCA9IGhlYWRlcigpLnNlbmRlck9mZnNldC5sb2FkKHN0ZDo6bWVt
b3J5X29yZGVyX2FjcXVpcmUpOworICAgICAgICBpZiAocmVjZWl2ZXJMaW1pdCA9PSBtX3JlY2Vp
dmVyT2Zmc2V0KQorICAgICAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IGhlYWRlcigpLnNlbmRlck9m
ZnNldC5jb21wYXJlRXhjaGFuZ2VTdHJvbmcocmVjZWl2ZXJMaW1pdCwgbV9yZWNlaXZlck9mZnNl
dCB8IFN0cmVhbUJ1ZmZlclR5cGU6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywg
c3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7Cisg
ICAgICAgIHJlY2VpdmVyTGltaXQgPSBzdGQ6Om1pbihyZWNlaXZlckxpbWl0LCBkYXRhU2l6ZSgp
KTsKKyAgICAgICAgcmV0dXJuIGFsaWduZWRTcGFuKG1fcmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVy
TGltaXQpOworICAgIH0KK3ByaXZhdGU6CisgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9m
ZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXItPndyYXBPZmZzZXQob2Zmc2V0KTsgfQorCisg
ICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLT5hbGlnbk9mZnNldChvZmZzZXQsIG1pbk1lc3NhZ2VTaXplKTsgfQorCisgICAgU3BhbiBh
bGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCisgICAgeworICAgICAgICBB
U1NFUlQob2Zmc2V0IDwgZGF0YVNpemUoKSk7CisgICAgICAgIEFTU0VSVChsaW1pdCA8IGRhdGFT
aXplKCkpOworICAgICAgICBzaXplX3QgYWxpZ25lZCA9IGFsaWduT2Zmc2V0KG9mZnNldCk7Cisg
ICAgICAgIHNpemVfdCBzaXplID0gMDsKKyAgICAgICAgaWYgKG9mZnNldCA8IGxpbWl0KSB7Cisg
ICAgICAgICAgICBpZiAob2Zmc2V0IDw9IGFsaWduZWQgJiYgYWxpZ25lZCA8IGxpbWl0KQorICAg
ICAgICAgICAgICAgIHNpemUgPSBsZW4oYWxpZ25lZCwgbGltaXQpOworICAgICAgICB9IGVsc2Ug
aWYgKG9mZnNldCA+IGxpbWl0KSB7CisgICAgICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQg
fHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAgICAgIHNpemUgPSBsZW4oYWxpZ25lZCwg
bGltaXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7IGRhdGEoKSArIGFsaWduZWQsIHNp
emUgfTsKKyAgICB9CisKKyAgICBzaXplX3QgbGVuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1p
dCkKKyAgICB7CisgICAgICAgIGlmIChvZmZzZXQgPD0gbGltaXQpCisgICAgICAgICAgICByZXR1
cm4gbGltaXQgLSBvZmZzZXQ7CisgICAgICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gb2Zmc2V0Owor
ICAgIH0KKworICAgIHVzaW5nIFN0cmVhbUJ1ZmZlclR5cGUgPSBTdHJlYW1CdWZmZXI8bWVzc2Fn
ZUFsaWdubWVudD47CisKKyAgICBTdHJlYW1CdWZmZXJUeXBlOjpIZWFkZXImIGhlYWRlcigpIHsg
cmV0dXJuIG1fYnVmZmVyLT5oZWFkZXIoKTsgfQorCisgICAgdWludDhfdCogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLT5kYXRhKCk7IH0KKworICAgIHNpemVfdCBkYXRhU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLT5kYXRhU2l6ZSgpOyB9CisKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U3RyZWFtQnVmZmVyVHlwZT4gbV9idWZmZXI7CisgICAgc2l6ZV90IG1fcmVjZWl2ZXJPZmZz
ZXQgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRW5jb2Rlci5jcHAKaW5kZXggZTgzYTNlNGFmZjQyYTU3NTUwNWRjOGYwNzMxN2ExYzFh
YzE5ZGVhZS4uNTQzMGFiY2M3MjcyMGRlMjVhODU2MzU3MjBjNDdhZTAyMzM5MDZjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmIE9TKERB
UldJTikKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgpAQCAtNjMsMjIgKzY0LDE4IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBmcmVlQnVmZmVyKHZvaWQqIGFkZHIsIHNpemVfdCBzaXplKQogfQogCiBFbmNv
ZGVyOjpFbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKQotICAgIDogbV9tZXNzYWdlTmFtZShtZXNzYWdlTmFtZSkKKyAgICA6IEVuY29kZXJCYXNl
PEVuY29kZXI+KG1faW5saW5lQnVmZmVyKQorICAgICwgbV9tZXNzYWdlTmFtZShtZXNzYWdlTmFt
ZSkKICAgICAsIG1fZGVzdGluYXRpb25JRChkZXN0aW5hdGlvbklEKQotICAgICwgbV9idWZmZXIo
bV9pbmxpbmVCdWZmZXIpCi0gICAgLCBtX2J1ZmZlclBvaW50ZXIobV9pbmxpbmVCdWZmZXIpCi0g
ICAgLCBtX2J1ZmZlclNpemUoMCkKICAgICAsIG1fYnVmZmVyQ2FwYWNpdHkoc2l6ZW9mKG1faW5s
aW5lQnVmZmVyKSkKIHsKICAgICBlbmNvZGVIZWFkZXIoKTsKIH0KIAogRW5jb2Rlcjo6RW5jb2Rl
cihDb25zdHJ1Y3RXaXRob3V0SGVhZGVyVGFnKQotICAgIDogbV9tZXNzYWdlTmFtZSgpCisgICAg
OiBFbmNvZGVyQmFzZTxFbmNvZGVyPihtX2lubGluZUJ1ZmZlcikKKyAgICAsIG1fbWVzc2FnZU5h
bWUoKQogICAgICwgbV9kZXN0aW5hdGlvbklEKDApCi0gICAgLCBtX2J1ZmZlcihtX2lubGluZUJ1
ZmZlcikKLSAgICAsIG1fYnVmZmVyUG9pbnRlcihtX2lubGluZUJ1ZmZlcikKLSAgICAsIG1fYnVm
ZmVyU2l6ZSgwKQogICAgICwgbV9idWZmZXJDYXBhY2l0eShzaXplb2YobV9pbmxpbmVCdWZmZXIp
KQogewogfQpAQCAtMTQ1LDM2ICsxNDIsMzQgQEAgdm9pZCBFbmNvZGVyOjp3cmFwRm9yVGVzdGlu
ZyhzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4gb3JpZ2luYWwpCiAgICAgKnRoaXMgPDwgRGF0YVJl
ZmVyZW5jZShvcmlnaW5hbC0+YnVmZmVyKCksIG9yaWdpbmFsLT5idWZmZXJTaXplKCkpOwogCiAg
ICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0gb3JpZ2luYWwtPnJlbGVhc2VBdHRh
Y2htZW50cygpOwotICAgIHJlc2VydmUoYXR0YWNobWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKEF0
dGFjaG1lbnQmIGF0dGFjaG1lbnQgOiBhdHRhY2htZW50cykKICAgICAgICAgYWRkQXR0YWNobWVu
dChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKIH0KIAotc3RhdGljIGlubGluZSBzaXplX3Qgcm91bmRV
cFRvQWxpZ25tZW50KHNpemVfdCB2YWx1ZSwgc2l6ZV90IGFsaWdubWVudCkKK2Jvb2wgRW5jb2Rl
cjo6cmVzZXJ2ZShzaXplX3QgYWxpZ25lZFNpemUsIHNpemVfdCBhZGRpdGlvbmFsU2l6ZSkKIHsK
LSAgICByZXR1cm4gKCh2YWx1ZSArIGFsaWdubWVudCAtIDEpIC8gYWxpZ25tZW50KSAqIGFsaWdu
bWVudDsKKyAgICBzaXplX3Qgc2l6ZSA9IGFsaWduZWRTaXplICsgYWRkaXRpb25hbFNpemU7Cisg
ICAgaWYgKHNpemUgPD0gbV9idWZmZXJDYXBhY2l0eSkgeworICAgICAgICBzdGQ6Om1lbXNldCht
X2J1ZmZlciArIG1fYnVmZmVyU2l6ZSwgMCwgYWxpZ25lZFNpemUgLSBtX2J1ZmZlclNpemUpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBFbmNvZGVyOjpyZXNlcnZlKHNpemVfdCBz
aXplKQotewotICAgIGlmIChzaXplIDw9IG1fYnVmZmVyQ2FwYWNpdHkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHNpemVfdCBuZXdDYXBhY2l0eSA9IHJvdW5kVXBUb0FsaWdubWVudChtX2J1ZmZl
ckNhcGFjaXR5ICogMiwgNDA5Nik7Ci0gICAgd2hpbGUgKG5ld0NhcGFjaXR5IDwgc2l6ZSkKLSAg
ICAgICAgbmV3Q2FwYWNpdHkgKj0gMjsKKyAgICBzaXplX3QgY2FwYWNpdHkgPSByb3VuZFVwVG9N
dWx0aXBsZU9mKDQwOTYsIG1fYnVmZmVyQ2FwYWNpdHkgKiAyKTsKKyAgICB3aGlsZSAoY2FwYWNp
dHkgPCBzaXplKQorICAgICAgICBjYXBhY2l0eSAqPSAyOwogCi0gICAgdWludDhfdCogbmV3QnVm
ZmVyOwotICAgIGlmICghYWxsb2NCdWZmZXIobmV3QnVmZmVyLCBuZXdDYXBhY2l0eSkpCisgICAg
dWludDhfdCogYnVmZmVyOworICAgIGlmICghYWxsb2NCdWZmZXIoYnVmZmVyLCBjYXBhY2l0eSkp
CiAgICAgICAgIENSQVNIKCk7CisgICAgc3RkOjpzd2FwKG1fYnVmZmVyLCBidWZmZXIpOworICAg
IHN0ZDo6c3dhcChtX2J1ZmZlckNhcGFjaXR5LCBjYXBhY2l0eSk7CisgICAgbWVtY3B5KG1fYnVm
ZmVyLCBidWZmZXIsIG1fYnVmZmVyU2l6ZSk7CiAKLSAgICBtZW1jcHkobmV3QnVmZmVyLCBtX2J1
ZmZlciwgbV9idWZmZXJTaXplKTsKLQotICAgIGlmIChtX2J1ZmZlciAhPSBtX2lubGluZUJ1ZmZl
cikKLSAgICAgICAgZnJlZUJ1ZmZlcihtX2J1ZmZlciwgbV9idWZmZXJDYXBhY2l0eSk7CisgICAg
aWYgKGJ1ZmZlciAhPSBtX2lubGluZUJ1ZmZlcikKKyAgICAgICAgZnJlZUJ1ZmZlcihidWZmZXIs
IGNhcGFjaXR5KTsKIAotICAgIG1fYnVmZmVyID0gbmV3QnVmZmVyOwotICAgIG1fYnVmZmVyQ2Fw
YWNpdHkgPSBuZXdDYXBhY2l0eTsKKyAgICBzdGQ6Om1lbXNldChtX2J1ZmZlciArIG1fYnVmZmVy
U2l6ZSwgMCwgYWxpZ25lZFNpemUgLSBtX2J1ZmZlclNpemUpOworICAgIHJldHVybiB0cnVlOwog
fQogCiB2b2lkIEVuY29kZXI6OmVuY29kZUhlYWRlcigpCkBAIC0xOTYsMjcgKzE5MSw2IEBAIGNv
bnN0IE9wdGlvblNldDxNZXNzYWdlRmxhZ3M+JiBFbmNvZGVyOjptZXNzYWdlRmxhZ3MoKSBjb25z
dAogICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxPcHRpb25TZXQ8TWVzc2FnZUZsYWdzPio+
KGJ1ZmZlcigpKTsKIH0KIAotdWludDhfdCogRW5jb2Rlcjo6Z3JvdyhzaXplX3QgYWxpZ25tZW50
LCBzaXplX3Qgc2l6ZSkKLXsKLSAgICBzaXplX3QgYWxpZ25lZFNpemUgPSByb3VuZFVwVG9BbGln
bm1lbnQobV9idWZmZXJTaXplLCBhbGlnbm1lbnQpOwotICAgIHJlc2VydmUoYWxpZ25lZFNpemUg
KyBzaXplKTsKLQotICAgIHN0ZDo6bWVtc2V0KG1fYnVmZmVyICsgbV9idWZmZXJTaXplLCAwLCBh
bGlnbmVkU2l6ZSAtIG1fYnVmZmVyU2l6ZSk7Ci0KLSAgICBtX2J1ZmZlclNpemUgPSBhbGlnbmVk
U2l6ZSArIHNpemU7Ci0gICAgbV9idWZmZXJQb2ludGVyID0gbV9idWZmZXIgKyBhbGlnbmVkU2l6
ZSArIHNpemU7Ci0gICAgCi0gICAgcmV0dXJuIG1fYnVmZmVyICsgYWxpZ25lZFNpemU7Ci19Ci0K
LXZvaWQgRW5jb2Rlcjo6ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQotewotICAgIEFTU0VSVCghKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PihkYXRhKSAlIGFsaWdubWVudCkpOwotCi0gICAgdWludDhfdCog
YnVmZmVyID0gZ3JvdyhhbGlnbm1lbnQsIHNpemUpOwotICAgIG1lbWNweShidWZmZXIsIGRhdGEs
IHNpemUpOwotfQotCiB2b2lkIEVuY29kZXI6OmFkZEF0dGFjaG1lbnQoQXR0YWNobWVudCYmIGF0
dGFjaG1lbnQpCiB7CiAgICAgbV9hdHRhY2htZW50cy5hcHBlbmQoV1RGTW92ZShhdHRhY2htZW50
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9FbmNvZGVyLmgKaW5kZXggZWE2MTk2N2JlMWViY2Jk
OGI2ZmJiYWE4Yjg1YWY0MThlOGQ1MGNjYS4uNWZlNjljNjMzZTMzYzQ2YzMwNGZmMmU4NDMyY2I0
YWE4YzgxZjBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2Rl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0VuY29kZXIuaApAQCAtMjcsMTEg
KzI3LDExIEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiQXR0YWNo
bWVudC5oIgorI2luY2x1ZGUgIkVuY29kZXJCYXNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZU5hbWVz
LmgiCiAjaW5jbHVkZSAiU3RyaW5nUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250
ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotI2luY2x1
ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBJUEMgewpAQCAtNDAsNyArNDAsNyBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VGbGFncyA6IHVpbnQ4
X3Q7CiBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3Q7CiBlbnVtIGNsYXNzIFNob3Vs
ZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiB1aW50OF90OwogCi1jbGFzcyBFbmNv
ZGVyIGZpbmFsIHsKK2NsYXNzIEVuY29kZXIgZmluYWwgOiBwdWJsaWMgRW5jb2RlckJhc2U8RW5j
b2Rlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEVuY29k
ZXIoTWVzc2FnZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwpAQCAtNTksNDQgKzU5LDkg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0RnVsbHlTeW5jaHJvbm91c01vZGVGb3JUZXN0aW5nKCk7
CiAKICAgICB2b2lkIHdyYXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxFbmNvZGVyPik7Ci0K
LSAgICB2b2lkIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QsIHNpemVfdCBhbGlnbm1lbnQpOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjpl
bmFibGVfaWZfdDwhc3RkOjppc19lbnVtPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3Rk
OjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+Pjo6dmFsdWUgJiYgIXN0ZDo6aXNfYXJpdGhtZXRpYzx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Pj46
OnZhbHVlPiogPSBudWxscHRyPgotICAgIHZvaWQgZW5jb2RlKFQmJiB0KQotICAgIHsKLSAgICAg
ICAgQXJndW1lbnRDb2Rlcjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGU+Ojp0eXBlPjo6ZW5jb2RlKCp0aGlzLCBzdGQ6OmZv
cndhcmQ8VD4odCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEUsIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICBFbmNvZGVy
JiBvcGVyYXRvcjw8KEUmJiBlbnVtVmFsdWUpCi0gICAgewotICAgICAgICBBU1NFUlQoV1RGOjpp
c1ZhbGlkRW51bTxFPihXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPEU+KGVudW1WYWx1ZSkpKTsK
LSAgICAgICAgZW5jb2RlKFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8RT4oZW51bVZhbHVlKSk7
Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgot
ICAgIEVuY29kZXImIG9wZXJhdG9yPDwoVCYmIHQpCi0gICAgewotICAgICAgICBlbmNvZGUoc3Rk
Ojpmb3J3YXJkPFQ+KHQpKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljPFQ+
Ojp2YWx1ZT4qID0gbnVsbHB0cj4KLSAgICB2b2lkIGVuY29kZShUIHZhbHVlKQotICAgIHsKLSAg
ICAgICAgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KCZ2YWx1ZSksIHNpemVvZihUKSwgYWxpZ25vZihUKSk7Ci0gICAgfQotCi0gICAgdWludDhf
dCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBzaXplX3QgYnVmZmVy
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyU2l6ZTsgfQotCisgICAgdm9pZCByZXNlcnZl
KHNpemVfdCBhZGRpdGlvbmFsU2l6ZSkgeyByZXNlcnZlKGJ1ZmZlclNpemUoKSwgYWRkaXRpb25h
bFNpemUpOyB9CiAgICAgdm9pZCBhZGRBdHRhY2htZW50KEF0dGFjaG1lbnQmJik7CiAgICAgVmVj
dG9yPEF0dGFjaG1lbnQ+IHJlbGVhc2VBdHRhY2htZW50cygpOwotICAgIHZvaWQgcmVzZXJ2ZShz
aXplX3QpOwotCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNJUENFbmNvZGVyID0gdHJ1ZTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGVuY29kZVNpbmdsZU9iamVjdChjb25zdCBUJiBvYmplY3QpCkBAIC0xMTYsMzMg
KzgxLDIyIEBAIHByaXZhdGU6CiAgICAgZW51bSBDb25zdHJ1Y3RXaXRob3V0SGVhZGVyVGFnIHsg
Q29uc3RydWN0V2l0aG91dEhlYWRlciB9OwogICAgIEVuY29kZXIoQ29uc3RydWN0V2l0aG91dEhl
YWRlclRhZyk7CiAKLSAgICB1aW50OF90KiBncm93KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCk7
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51
bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+Ci0gICAgdm9pZCBlbmNvZGUoRSBlbnVtVmFsdWUpCi0g
ICAgewotICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxFPihXVEY6OmVudW1Ub1VuZGVy
bHlpbmdUeXBlPEU+KGVudW1WYWx1ZSkpKTsKLSAgICAgICAgZW5jb2RlKFdURjo6ZW51bVRvVW5k
ZXJseWluZ1R5cGU8RT4oZW51bVZhbHVlKSk7Ci0gICAgfQotCiAgICAgYm9vbCBoYXNBdHRhY2ht
ZW50cygpIGNvbnN0OwogCiAgICAgdm9pZCBlbmNvZGVIZWFkZXIoKTsKICAgICBjb25zdCBPcHRp
b25TZXQ8TWVzc2FnZUZsYWdzPiYgbWVzc2FnZUZsYWdzKCkgY29uc3Q7CiAgICAgT3B0aW9uU2V0
PE1lc3NhZ2VGbGFncz4mIG1lc3NhZ2VGbGFncygpOworICAgIGJvb2wgcmVzZXJ2ZShzaXplX3Qg
YWxpZ25lZFNpemUsIHNpemVfdCBhZGRpdGlvbmFsU2l6ZSk7CiAKICAgICBNZXNzYWdlTmFtZSBt
X21lc3NhZ2VOYW1lOwogICAgIHVpbnQ2NF90IG1fZGVzdGluYXRpb25JRDsKIAogICAgIHVpbnQ4
X3QgbV9pbmxpbmVCdWZmZXJbNTEyXTsKIAotICAgIHVpbnQ4X3QqIG1fYnVmZmVyOwotICAgIHVp
bnQ4X3QqIG1fYnVmZmVyUG9pbnRlcjsKLSAgICAKLSAgICBzaXplX3QgbV9idWZmZXJTaXplOwog
ICAgIHNpemVfdCBtX2J1ZmZlckNhcGFjaXR5OwogCiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IG1f
YXR0YWNobWVudHM7CisgICAgZnJpZW5kIGNsYXNzIEVuY29kZXJCYXNlPEVuY29kZXI+OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9FbmNvZGVyQmFzZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2RlckJh
c2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZGE3YzJmNjY5NjRiZjI3YmZmZDcyNTZmNDk1OGY5NWJjYjE5ZDZl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRW5jb2RlckJh
c2UuaApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKworbmFtZXNwYWNlIElQQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFNlbGY+CitjbGFzcyBF
bmNvZGVyQmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBDRW5j
b2RlciA9IHRydWU7CisKKyAgICBFbmNvZGVyQmFzZSh1aW50OF90KiBidWZmZXIpCisgICAgICAg
IDogbV9idWZmZXIoYnVmZmVyKQorICAgICAgICAsIG1fYnVmZmVyUG9pbnRlcihidWZmZXIpCisg
ICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgYm9vbCBlbmNvZGVG
aXhlZExlbmd0aERhdGEoY29uc3QgVCogZGF0YSwgc2l6ZV90IGNvdW50ID0gMSkKKyAgICB7Cisg
ICAgICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKFQpICogY291bnQ7CisgICAgICAgIGludHB0cl90
IGFsaWduZWRTaXplID0gbV9idWZmZXJTaXplICsgKHJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25v
ZihUKT4obV9idWZmZXJQb2ludGVyKSAtIG1fYnVmZmVyUG9pbnRlcik7CisgICAgICAgIGlmICgh
c3RhdGljX2Nhc3Q8U2VsZio+KHRoaXMpLT5yZXNlcnZlKGFsaWduZWRTaXplLCBzaXplKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbV9idWZmZXJTaXplID0gYWxpZ25lZFNp
emUgKyBzaXplOworICAgICAgICBtX2J1ZmZlclBvaW50ZXIgPSBtX2J1ZmZlciArIGFsaWduZWRT
aXplICsgc2l6ZTsKKworICAgICAgICBUKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0X3B0cjxU
Kj4obV9idWZmZXIgKyBhbGlnbmVkU2l6ZSk7CisgICAgICAgIG1lbWNweShidWZmZXIsIGRhdGEs
IHNpemUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB1aW50OF90KiBidWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIHNpemVfdCBidWZmZXJTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXJTaXplOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6OmlzX2VudW08dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29u
c3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4+Ojp2YWx1ZSAmJiAhc3RkOjppc19hcml0
aG1ldGljPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNl
X3Q8VD4+Pjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdm9pZCBlbmNvZGUoVCYmIHQpCisgICAg
eworICAgICAgICBBcmd1bWVudENvZGVyPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZT46OnR5cGU+OjplbmNvZGUoKnN0YXRp
Y19jYXN0PFNlbGYqPih0aGlzKSwgc3RkOjpmb3J3YXJkPFQ+KHQpKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bTxFPjo6dmFs
dWU+KiA9IG51bGxwdHI+CisgICAgU2VsZiYgb3BlcmF0b3I8PChFJiYgZW51bVZhbHVlKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKFdURjo6aXNWYWxpZEVudW08RT4oV1RGOjplbnVtVG9VbmRlcmx5
aW5nVHlwZTxFPihlbnVtVmFsdWUpKSk7CisgICAgICAgIGVuY29kZShXVEY6OmVudW1Ub1VuZGVy
bHlpbmdUeXBlPEU+KGVudW1WYWx1ZSkpOworICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PFNl
bGYqPih0aGlzKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OmVuYWJs
ZV9pZl90PCFzdGQ6OmlzX2VudW08VD46OnZhbHVlPiogPSBudWxscHRyPgorICAgIFNlbGYmIG9w
ZXJhdG9yPDwoVCYmIHQpCisgICAgeworICAgICAgICBlbmNvZGUoc3RkOjpmb3J3YXJkPFQ+KHQp
KTsKKyAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxTZWxmKj4odGhpcyk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0
aWM8VD46OnZhbHVlPiogPSBudWxscHRyPgorICAgIHZvaWQgZW5jb2RlKFQgdmFsdWUpCisgICAg
eworICAgICAgICBlbmNvZGVGaXhlZExlbmd0aERhdGEoJnZhbHVlKTsKKyAgICB9CisKK3Byb3Rl
Y3RlZDoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
ZW51bTxFPjo6dmFsdWU+KiA9IG51bGxwdHI+CisgICAgdm9pZCBlbmNvZGUoRSBlbnVtVmFsdWUp
CisgICAgeworICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxFPihXVEY6OmVudW1Ub1Vu
ZGVybHlpbmdUeXBlPEU+KGVudW1WYWx1ZSkpKTsKKyAgICAgICAgZW5jb2RlKFdURjo6ZW51bVRv
VW5kZXJseWluZ1R5cGU8RT4oZW51bVZhbHVlKSk7CisgICAgfQorCisgICAgdWludDhfdCogbV9i
dWZmZXI7CisgICAgdWludDhfdCogbV9idWZmZXJQb2ludGVyOworICAgIHNpemVfdCBtX2J1ZmZl
clNpemUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1SZWNlaXZlci5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I2
YzYzMTg4NGM2Mzg2MzU1ZTc2NGYzMzVmZWM3Njg5NDQzZjFjNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTdHJlYW1SZWNlaXZlci5oCkBAIC0w
LDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlv
blN0cmVhbS5oIgorI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIK
KworbmFtZXNwYWNlIElQQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFNlbGY+CitjbGFzcyBNZXNz
YWdlU3RyZWFtUmVjZWl2ZXIgIHsKK3B1YmxpYzoKKyAgICBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIo
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYmIHN0cmVhbSkKKyAgICAgICAgOiBtX3N0
cmVhbShXVEZNb3ZlKHN0cmVhbSkpCisgICAgeyB9CisgICAgfk1lc3NhZ2VTdHJlYW1SZWNlaXZl
cigpID0gZGVmYXVsdDsKKworICAgIHZvaWQgc3RyZWFtV2FrZVVwKENvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCisgICAgeworICAgICAgICBpZiAoIW1fc3RyZWFtLmlzVmFsaWQoKSkgeworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogY2hlY2sg
ZWFybGllci4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhdXRvIGRl
c3RpbmF0aW9uSUQgPSBzdGF0aWNfY2FzdDxTZWxmKj4odGhpcyktPm1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCk7CisgICAgICAgIGF1dG8gc3BhbiA9IG1fc3RyZWFtLnRyeUFxdWlyZSgpOwor
ICAgICAgICB3aGlsZSAoc3Bhbi5jYXBhY2l0eSkgeworICAgICAgICAgICAgSVBDOjpEZWNvZGVy
IGRlY29kZXIgeyBzcGFuLnB0ciwgc3Bhbi5jYXBhY2l0eSwgZGVzdGluYXRpb25JRCB9OworICAg
ICAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OlN0b3BTdHJlYW1Qcm9jZXNzaW5n
KSB7CisgICAgICAgICAgICAgICAgc3BhbiA9IG1fc3RyZWFtLnJlbGVhc2UoZGVjb2Rlci5jdXJy
ZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxTZWxmKj4odGhpcyktPmRpZFJlY2VpdmVTdHJl
YW1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LmlzVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNwYW4gPSBtX3N0cmVhbS5yZWxlYXNlKGRl
Y29kZXIuY3VycmVudEJ1ZmZlclBvc2l0aW9uKCkpOworICAgICAgICB9CisgICAgfQorcHJpdmF0
ZToKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKKyAgICB7CisgICAgICAgIGNvbm5lY3Rpb24u
Y2xpZW50KCkuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VOYW1l
KTsKKyAgICB9CisgICAgRGVzdGluYXRpb25TdHJlYW1SZWNlaXZlciBtX3N0cmVhbTsKK307CisK
K30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvTWVzc2FnZVN0cmVhbVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVN0cmVhbVNlbmRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlN2NlNWQ2MjY0MjUyMDA1NzQ3NGI0MjE5
NzRkMTg1YWI2YjQ4MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9NZXNzYWdlU3RyZWFtU2VuZGVyLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
RGVzdGluYXRpb25TdHJlYW0uaCIKKyNpbmNsdWRlICJTdHJlYW1FbmNvZGVyLmgiCisjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKKwordGVtcGxhdGU8dHlwZW5h
bWUgU2VsZiwgdHlwZW5hbWUgU3RyZWFtV2FrZVVwTWVzc2FnZT4KK2NsYXNzIE1lc3NhZ2VTdHJl
YW1TZW5kZXIgIHsKK3B1YmxpYzoKKyAgICBNZXNzYWdlU3RyZWFtU2VuZGVyKHNpemVfdCBzdHJl
YW1TaXplKQorICAgICAgICA6IG1fc3RyZWFtKHN0cmVhbVNpemUpCisgICAgeyB9CisgICAgfk1l
c3NhZ2VTdHJlYW1TZW5kZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8
U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCisgICAgeworICAgICAgICBhdXRvKiBjb25u
ZWN0aW9uID0gc3RhdGljX2Nhc3Q8U2VsZio+KHRoaXMpLT5tZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpOworICAgICAgICBBU1NFUlQoY29ubmVjdGlvbik7CisgICAgICAgIHN0YXRpY19hc3NlcnQo
IVU6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKKyAgICAgICAgTW9ub3RvbmljVGltZSBh
YnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7CisKKyAgICAg
ICAgYXV0byBzcGFuID0gbV9zdHJlYW0udHJ5QWNxdWlyZSgpOworICAgICAgICB3aGlsZSAoc3Bh
bi5jYXBhY2l0eSA8IFN0cmVhbUVuY29kZXI6Om1pbmltdW1NZXNzYWdlU2l6ZSkgeworICAgICAg
ICAgICAgVGhyZWFkOjp5aWVsZCgpOworICAgICAgICAgICAgc3BhbiA9IG1fc3RyZWFtLnRyeUFj
cXVpcmUoKTsKKyAgICAgICAgICAgIGlmIChNb25vdG9uaWNUaW1lOjpub3coKSA+IGFic29sdXRl
VGltZW91dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgYXV0byBkZXN0aW5hdGlvbklEID0gc3RhdGljX2Nhc3Q8U2VsZio+KHRoaXMpLT5tZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpOworICAgICAgICBTdHJlYW1FbmNvZGVyIHN0cmVhbUVuY29k
ZXIgeyBVOjpuYW1lKCksIHNwYW4ucHRyLCBzcGFuLmNhcGFjaXR5IH07CisgICAgICAgIHN0cmVh
bUVuY29kZXIuZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOworICAgICAgICBpZiAoc3RyZWFt
RW5jb2Rlci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCgqcmVpbnRlcnByZXRfY2Fz
dDx1aW50MTZfdCo+KHNwYW4ucHRyKSk7CisgICAgICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9
IG1fc3RyZWFtLnJlbGVhc2Uoc3RyZWFtRW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgICAgICAg
ICAgaWYgKHdha2V1cFJlc3VsdCA9PSBEZXN0aW5hdGlvblN0cmVhbVNlbmRlcjo6V2FrZVVwUmVh
ZGVyOjpObykKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGF1dG8g
ZW5jb2RlciA9IG1ha2VVbmlxdWU8RW5jb2Rlcj4oU3RyZWFtV2FrZVVwTWVzc2FnZTo6bmFtZSgp
LCBkZXN0aW5hdGlvbklEKTsKKyAgICAgICAgICAgIHJldHVybiBjb25uZWN0aW9uLT5zZW5kTWVz
c2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CisgICAgICAgIH0KKworICAgICAg
ICBTdHJlYW1FbmNvZGVyIHN0b3BFbmNvZGVyIHsgTWVzc2FnZU5hbWU6OlN0b3BTdHJlYW1Qcm9j
ZXNzaW5nLCBzcGFuLnB0ciwgc3Bhbi5jYXBhY2l0eSB9OworICAgICAgICBBU1NFUlQoKnJlaW50
ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihzcGFuLnB0cikpOworICAgICAgICBhdXRvIHdha2V1cFJl
c3VsdCA9IG1fc3RyZWFtLnJlbGVhc2Uoc3RvcEVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICAg
ICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxFbmNvZGVyPihVOjpuYW1lKCksIGRlc3RpbmF0
aW9uSUQpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7Cisg
ICAgICAgIGlmICghY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2Vu
ZE9wdGlvbnMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAod2FrZXVw
UmVzdWx0ID09IERlc3RpbmF0aW9uU3RyZWFtU2VuZGVyOjpXYWtlVXBSZWFkZXI6Ok5vKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29k
ZXI+KFN0cmVhbVdha2VVcE1lc3NhZ2U6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAg
IHJldHVybiBjb25uZWN0aW9uLT5zZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0
aW9ucyk7CisgICAgfQorICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gQ29ubmVjdGlvbjo6U2Vu
ZFN5bmNSZXN1bHQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBTZW5kU3luY1Jlc3Vs
dCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgU2Vjb25k
cyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9u
PiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisgICAgeworICAgICAgICAvLyBGSVhNRTogc2VuZFN5
bmMgZG9lcyBub3QgZ28gdGhyb3VnaCB0aGUgc3RyZWFtIGJlY2F1c2UgdGhlIGNvbnN0cnVjdG9y
IG9mIHRoZSBzeW5jIGVuY29kZXIgaXMgdGllZCB0byB0aGUKKyAgICAgICAgLy8gQ29ubmVjdGlv
bi4gSXQncyBhIG1lY2hhbmljYWwgcmVmYWN0b3IgdG8gZml4IGl0LgorICAgICAgICBzdGF0aWNf
YXNzZXJ0KFQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgbm90IHN5bmMhIik7CisgICAgICAgIGF1dG8g
Y29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFNlbGYqPih0aGlzKS0+bWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKTsKKyAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworICAgICAgICBhdXRvIGRlc3Rp
bmF0aW9uSUQgPSBzdGF0aWNfY2FzdDxTZWxmKj4odGhpcyktPm1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCk7CisgICAgICAgIHJldHVybiBjb25uZWN0aW9uLT5zZW5kU3luYyhXVEZNb3ZlKG1l
c3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgc2VuZFN5bmNP
cHRpb25zKTsKKyAgICB9CisKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGRl
c3RpbmF0aW9uU3RyZWFtSGFuZGxlKCkgeyByZXR1cm4gbV9zdHJlYW0uZGVzdGluYXRpb25TdHJl
YW1IYW5kbGUoKTsgfQorcHJpdmF0ZToKKyAgICBEZXN0aW5hdGlvblN0cmVhbVNlbmRlciBtX3N0
cmVhbTsKK307CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCA1MDBmODM5ZGZhYWU5Mjk3ZjRkYzYz
ZGM2NjMwNTg3N2IyMmRmMmY4Li5kOTNlNDc2MDI2MTc5ZDE3NjczMTY0NjRhMjhjNjcxNjM5NWI3
NjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmNwcApAQCAtNDMsNyArNDMsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckNvcHk6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGlmICghYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0dXJu
OwogICAgIGZvciAoYXV0byYgc2VnbWVudCA6ICptX2J1ZmZlcikKLSAgICAgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc2Vn
bWVudC5zZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSwgMSk7CisgICAg
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpKSwgc2VnbWVudC5zZWdtZW50LT5zaXpl
KCkpOwogfQogCiBPcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzQ3ZWYzMDM0ODBjYzBkZjEyNGJhZDZjZGFjODJjZGRm
ZmYxY2QyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtRW5jb2Rlci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXJCYXNl
LmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitjbGFz
cyBTdHJlYW1FbmNvZGVyIGZpbmFsIDogcHVibGljIEVuY29kZXJCYXNlPFN0cmVhbUVuY29kZXI+
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBtaW5pbXVtTWVzc2FnZVNpemUgPSBzaXplb2YoTWVzc2FnZU5hbWUpOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBhbGlnbm9mKE1l
c3NhZ2VOYW1lKTsKKworICAgIFN0cmVhbUVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUs
IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbUNhcGFjaXR5KQorICAgICAgICA6IEVuY29k
ZXJCYXNlPFN0cmVhbUVuY29kZXI+KHN0cmVhbSkKKyAgICAgICAgLCBtX2J1ZmZlckNhcGFjaXR5
KHN0cmVhbUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgZW5jb2RlKG1lc3NhZ2VOYW1lKTsKKyAg
ICB9CisgICAgflN0cmVhbUVuY29kZXIoKSA9IGRlZmF1bHQ7CisgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXJDYXBhY2l0eTsgfQorcHJpdmF0ZToKKyAgICBib29sIHJl
c2VydmUoc2l6ZV90IGFsaWduZWRTaXplLCBzaXplX3QgYWRkaXRpb25hbFNpemUpCisgICAgewor
ICAgICAgICBzaXplX3Qgc2l6ZSA9IGFsaWduZWRTaXplICsgYWRkaXRpb25hbFNpemU7CisgICAg
ICAgIGlmIChzaXplIDw9IG1fYnVmZmVyQ2FwYWNpdHkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgbV9idWZmZXJDYXBhY2l0eSA9IDA7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBzaXplX3QgbV9idWZmZXJDYXBhY2l0eTsKKyAgICBmcmllbmQgY2xhc3Mg
RW5jb2RlckJhc2U8U3RyZWFtRW5jb2Rlcj47Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDBkOGRlMDQ5ZjRiNTBj
YmU3Yzk5ZTcxMDY4Mjk2NjkzZWU1MTg4MWMuLmY3YTMyNjViMjNmMzQ3MDIyNjkxMTUzY2UyYTRh
ZmU2N2MzMzRmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtMzMsNiArMzMsNyBAQCBMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFID0gJ0xlZ2FjeVJlY2Vp
dmVyJwogTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFID0gJ05vdFJlZkNvdW50ZWQn
CiBTWU5DSFJPTk9VU19BVFRSSUJVVEUgPSAnU3luY2hyb25vdXMnCiBBU1lOQ19BVFRSSUJVVEUg
PSAnQXN5bmMnCitTVFJFQU1fQVRUUklCVVRFID0gJ1N0cmVhbScKIAogX2xpY2Vuc2VfaGVhZGVy
ID0gIiIiLyoKICAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTQ5Nyw3ICs0OTgsOCBAQCBkZWYgYXN5bmNfbWVzc2FnZV9zdGF0ZW1l
bnQocmVjZWl2ZXIsIG1lc3NhZ2UpOgogCiAgICAgcmVzdWx0ID0gW10KICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6JXM6OiVzOjpu
YW1lKCkpIHtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKLSAgICByZXN1bHQu
YXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXMpO1xuJyAlIChkaXNw
YXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnLCAnLmpvaW4oZGlz
cGF0Y2hfZnVuY3Rpb25fYXJncykpKQorICAgIGlmIG5vdCAocmVjZWl2ZXIuaGFzX2F0dHJpYnV0
ZShTVFJFQU1fQVRUUklCVVRFKSBhbmQgbWVzc2FnZS5uYW1lID09ICdTdHJlYW1XYWtlVXAnKToK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+
KCVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFt
ZSwgJywgJy5qb2luKGRpc3BhdGNoX2Z1bmN0aW9uX2FyZ3MpKSkKICAgICByZXN1bHQuYXBwZW5k
KCcgICAgICAgIHJldHVybjtcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCiAgICAg
cmV0dXJuIHN1cnJvdW5kX2luX2NvbmRpdGlvbignJy5qb2luKHJlc3VsdCksIG1lc3NhZ2UuY29u
ZGl0aW9uKQpAQCAtODU4LDggKzg2MCwxMyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVy
KHJlY2VpdmVyKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFzeW5jX21lc3NhZ2VzLmFw
cGVuZChtZXNzYWdlKQogCisgICAgcmVjZWl2ZV92YXJpYW50ID0gJycKKyAgICBpZiByZWNlaXZl
ci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpOgorICAgICAgICByZWNl
aXZlX3ZhcmlhbnQgPSByZWNlaXZlci5uYW1lCisgICAgZWxpZiByZWNlaXZlci5oYXNfYXR0cmli
dXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAgICAgICByZWNlaXZlX3ZhcmlhbnQgPSAnU3RyZWFt
JwogICAgIGlmIGFzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNf
RElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FO
VFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgotICAgICAgICByZXN1bHQuYXBw
ZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZl
ci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVU
RSkgZWxzZSAnJykpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmUl
c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVfdmFyaWFudCkpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ3tcbicpCiAgICAgICAgIGlmIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKE5P
VF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7XG4nKQpAQCAtODc2
LDYgKzg4MywxMyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCiAKKyAgICBpZiByZWNlaXZlci5oYXNfYXR0cmli
dXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2Rl
ciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQo
J3tcbicpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBkaWRSZWNlaXZlU3RyZWFtTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTtcbicpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBz
dHJlYW1XYWtlVXAoY29ubmVjdGlvbik7XG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4n
KQorCiAgICAgaWYgc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRT
X0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4n
KQogICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlU3luYyVzTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcilcbicgJSAocmVjZWl2ZXIu
bmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNF
SVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQpAQCAtOTQ0LDYgKzk1OCw3IEBAIGRlZiBnZW5lcmF0
ZV9tZXNzYWdlX25hbWVzX2hlYWRlcihyZWNlaXZlcnMpOgogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnLCAnKQogICAgICAgICBmaXJzdF9tZXNzYWdlID0gRmFsc2UKICAgICAgICAgcmVzdWx0
LmFwcGVuZChlbnVtX3ZhbHVlKQorICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgU3RvcFN0cmVh
bVByb2Nlc3NpbmcnKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgV3JhcHBlZEFzeW5jTWVz
c2FnZUZvclRlc3RpbmcnKQogICAgIHJlc3VsdC5hcHBlbmQoJ1xuICAgICwgU3luY01lc3NhZ2VS
ZXBseScpCiAgICAgcmVzdWx0LmFwcGVuZCgnXG4gICAgLCBJbml0aWFsaXplQ29ubmVjdGlvbicp
CkBAIC05OTYsNiArMTAxMSw4IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX25hbWVzX2ltcGxlbWVu
dGF0aW9uKHJlY2VpdmVycyk6CiAgICAgZm9yIGVudW1fdmFsdWUgaW4gc29ydGVkKGVudW1fdmFs
dWVzKToKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OiVzOlxu
JyAlIGVudW1fdmFsdWUpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuICIl
cyI7XG4nICUgZW51bV92YWx1ZSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdl
TmFtZTo6U3RvcFN0cmVhbVByb2Nlc3Npbmc6XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgcmV0dXJuICJJUEM6OlN0b3BTdHJlYW1Qcm9jZXNzaW5nIjtcbicpCiAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OldyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5n
OlxuJykKICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybiAiSVBDOjpXcmFwcGVkQXN5
bmNNZXNzYWdlRm9yVGVzdGluZyI7XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OlxuJykKQEAgLTEwMzEsNiArMTA0OCw3IEBAIGRl
ZiBnZW5lcmF0ZV9tZXNzYWdlX25hbWVzX2ltcGxlbWVudGF0aW9uKHJlY2VpdmVycyk6CiAgICAg
Zm9yIGFzeW5jX3JlcGx5X21lc3NhZ2UgaW4gc29ydGVkKGFzeW5jX3JlcGx5X21lc3NhZ2VzKToK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OiVzOlxuJyAlIGFz
eW5jX3JlcGx5X21lc3NhZ2UpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm4gUmVj
ZWl2ZXJOYW1lOjpBc3luY1JlcGx5O1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6U3RvcFN0cmVhbVByb2Nlc3Npbmc6XG4nKQogICAgIHJlc3VsdC5hcHBlbmQo
JyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZzpcbicp
CiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVw
bHk6XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpJbml0aWFs
aXplQ29ubmVjdGlvbjpcbicpCkBAIC0xMDU0LDYgKzEwNzIsOCBAQCBkZWYgZ2VuZXJhdGVfbWVz
c2FnZV9uYW1lc19pbXBsZW1lbnRhdGlvbihyZWNlaXZlcnMpOgogICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIHRydWU7XG4nKQogICAgICAgICAgICAgaWYgbWVz
c2FnZS5jb25kaXRpb246CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnI2VuZGlmXG4n
KQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6U3RvcFN0cmVhbVByb2Nlc3NpbmcpXG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgcmV0dXJuIHRydWU7XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAobWVzc2FnZU5h
bWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6V3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcpXG4n
KQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuIHRydWU7XG4nKQogICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6U3luY01l
c3NhZ2VSZXBseSlcbicpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCBkNzY2NTRiNjRmNjJhMDkxY2Q5MzZkZmMwM2YwMDRhZGZjMTk5Y2I1
Li41YTFhZGU1MjliY2Q1MzRmM2M5ZGRmMDk2OTRlYzEwMmY3NjE2MTNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMxMjEsNyArMzEy
MSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8CiAKICAgICBhdXRvIHJhd0RhdGEgPSBpbWFn
ZURhdGEtPmRhdGEoKTsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihyYXdE
YXRhLT5ieXRlTGVuZ3RoKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJh
d0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+Ynl0ZUxlbmd0aCgpLCAxKTsKKyAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShyYXdEYXRhLT5kYXRhKCksIHJhd0RhdGEtPmJ5dGVMZW5ndGgo
KSk7CiB9CiAKIE9wdGlvbmFsPFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+PiBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpJbWFnZURhdGE+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCkBAIC0z
MTM3LDcgKzMxMzcsNyBAQCBPcHRpb25hbDxSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPj4gQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6SW1hZ2VEYXRhPj46OmRlY29kZQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCiAgICAgYXV0byByYXdEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoKmRhdGFMZW5ndGgpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVG
aXhlZExlbmd0aERhdGEocmF3RGF0YS0+ZGF0YSgpLCByYXdEYXRhLT5sZW5ndGgoKSwgMSkpCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyYXdEYXRhLT5kYXRhKCksIHJh
d0RhdGEtPmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGF1
dG8gaW1hZ2VEYXRhID0gSW1hZ2VEYXRhOjpjcmVhdGUoKmltYWdlRGF0YVNpemUsIFdURk1vdmUo
cmF3RGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggN2VlZDYzYTUxNjNhYmQ4Zjg3ZDJkMDZhNmEyOGZjYmUzNmMyODExZi4uZjM0
YjA2NmJjOWJhNDllNDk0YTliNjViMmE4MDFjYjhiMTcwODBlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzI2LDYgKzEzMjYsMTAg
QEAKIAkJN0FGQkQzNjcyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oICovOyB9OwogCQk3QUZCRDM2RjIxRTU0NkY4MDA1REJBQ0IgLyogUGVyc2lzdGVu
Y3lVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FGQkQzNkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLzsgfTsKIAkJ
N0IxREIyNjYyNTY2OENFMTAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2
QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLzsgfTsKKwkJN0I0Qzk5NDgyNThCOTU5ODAwMjVBNkY0
IC8qIEVuY29kZXJCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjRDOTk0NzI1OEI5NTk4MDAyNUE2RjQgLyogRW5jb2RlckJhc2UuaCAqLzsgfTsK
KwkJN0I0Qzk5NEEyNThCOUVBNjAwMjVBNkY0IC8qIFN0cmVhbUVuY29kZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNEM5OTQ5MjU4QjlFQTYwMDI1
QTZGNCAvKiBTdHJlYW1FbmNvZGVyLmggKi87IH07CisJCTdCRTcyNjdBMjU3QTczRDYwMEU4NUQ5
OCAvKiBNZXNzYWdlU3RyZWFtU2VuZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QkU3MjY3OTI1N0E3M0Q2MDBFODVEOTggLyogTWVzc2FnZVN0cmVh
bVNlbmRlci5oICovOyB9OworCQk3QkU3MjY3QzI1N0E3OUM4MDBFODVEOTggLyogTWVzc2FnZVN0
cmVhbVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QkU3MjY3QjI1N0E3OUM4MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmgg
Ki87IH07CiAJCTdDMDY1RjJDMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJEYXRhVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJEYXRhVHlwZXMuaCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1
Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEz
M0UxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBB
UElEaWN0aW9uYXJ5LmggKi87IH07CkBAIC00NTA2LDYgKzQ1MTAsOCBAQAogCQk3QUZCRDM2RDIx
RTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJz
aXN0ZW5jeVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZFMjFF
NTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBlcnNpc3RlbmN5VXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjFE
QjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I0Qzk5NDcyNThCOTU5ODAwMjVBNkY0IC8qIEVuY29kZXJCYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVuY29kZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCNEM5OTQ5MjU4QjlFQTYwMDI1QTZGNCAvKiBTdHJlYW1FbmNvZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUVuY29kZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjUy
NTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1MTYsNiArNDUy
Miw4IEBACiAJCTdCOTA0MTZEMjU1MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QkU3MjY1NzI1NzRGNjcyMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0JFNzI2NjgyNTc2ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCRTcyNjc5MjU3QTcz
RDYwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFtU2VuZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lc3NhZ2VTdHJlYW1TZW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0JFNzI2N0IyNTdBNzlDODAwRTg1RDk4IC8qIE1lc3NhZ2VTdHJlYW1SZWNlaXZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlU3RyZWFtUmVjZWl2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJE
OTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlw
ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyQTFDOENEOTVGMDBD
MkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIg
LyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY4ODEsNiArNjg4OSw4IEBACiAJCQkJQkMwMzJEOUUxMEY0MzdEMTAwNThDMTVBIC8q
IERlY29kZXIuaCAqLywKIAkJCQlCQzAzMkQ5RjEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5j
cHAgKi8sCiAJCQkJQkMwMzJEQTAxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuaCAqLywKKwkJ
CQk3QjRDOTk0NzI1OEI5NTk4MDAyNUE2RjQgLyogRW5jb2RlckJhc2UuaCAqLywKKwkJCQk3QjRD
OTk0OTI1OEI5RUE2MDAyNUE2RjQgLyogU3RyZWFtRW5jb2Rlci5oICovLAogCQkJCTlCRDhBQjQ5
MjU4MjBFNTIwMDUzODZGOCAvKiBGb250UmVmZXJlbmNlLmggKi8sCiAJCQkJNDE1MUU1QzMxRkJC
OTBBOTAwRTQ3RTJEIC8qIEZvcm1EYXRhUmVmZXJlbmNlLmggKi8sCiAJCQkJQzBDRTcyQUMxMjQ3
RTc4RDAwQkMwRUM0IC8qIEhhbmRsZU1lc3NhZ2UuaCAqLywKQEAgLTY4OTQsNiArNjkwNCw4IEBA
CiAJCQkJMUEzRUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5oICov
LAogCQkJCTFBQUIwMzc3MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmNwcCAqLywK
IAkJCQkxQUFCMDM3ODE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oICovLAorCQkJ
CTdCRTcyNjdCMjU3QTc5QzgwMEU4NUQ5OCAvKiBNZXNzYWdlU3RyZWFtUmVjZWl2ZXIuaCAqLywK
KwkJCQk3QkU3MjY3OTI1N0E3M0Q2MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVNlbmRlci5oICov
LAogCQkJCTJEQzE4MDAxRDkwREREMTVGQzY5OTFBOSAvKiBTaGFyZWRCdWZmZXJDb3B5LmNwcCAq
LywKIAkJCQk1Q0M1REI5MTIxNDg4RTE2MDA2Q0I4QTggLyogU2hhcmVkQnVmZmVyQ29weS5oICov
LAogCQkJCTJEQzE4NTVFREJGQjg1MEJBMEI2RDA2RCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlLmNwcCAqLywKQEAgLTExNTExLDcgKzExNTIzLDkgQEAKIAkJCQk0RjYwMTQzMjE1NUM1QUEy
MDAxRkJERTAgLyogQmxvY2tpbmdSZXNwb25zZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1
NzA1MTExQkU0MTBFNjAwODc0QUYxIC8qIEJsb2NrU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzMwNjVGQTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJN0I0Qzk5NDgyNThCOTU5ODAwMjVBNkY0IC8qIEVuY29kZXJCYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MTg5N0VEODFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3QjRDOTk0QTI1OEI5RUE2MDAyNUE2RjQgLyogU3RyZWFtRW5j
b2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGQUJEMkExRjRERTAwMTAwNkE2Qzk3IC8qIENh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTg5N0VEQTFGNDE1
RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTdCNEI0NjAyMEI1MDRBQzAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0
aGVudGljYXRpb25YUENDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLApAQCAtMTE2NjUsNiArMTE2
NzksOCBAQAogCQkJCTFBM0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0VFRDBGMTYxQTUzNTQwMEFFQjRGNSAvKiBNZXNzYWdl
UmVjZWl2ZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUIwMzdBMTg1QTdDNkEwMEVERjUw
MSAvKiBNZXNzYWdlU2VuZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkU3MjY3QzI1N0E3OUM4
MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
QkU3MjY3QTI1N0E3M0Q2MDBFODVEOTggLyogTWVzc2FnZVN0cmVhbVNlbmRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTEzQjNEQTIyMDdGMzlERTAwOTBDNThEIC8qIE1vYmlsZVdpRmlTUEkuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3RENFRENCMjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVu
dGljYXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREM3MjE0RjE4MzAwMDE2
Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IDM0YTA2ZmIwMDc2YWNkM2ZkMzJi
M2E0YjZiMDlkNjhkMDI3YmI1ODguLjEwN2U5ZjgyZDYxNmY5OWQ4MWI0NDU3MjJhMDI4NmMyMTkx
MGQ5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAt
NDgsMTkgKzQ4LDIyIEBAIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoYXR0cmlidXRlcykpOwogfQogCitz
dGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjI7CisKIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHko
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKLSAgICA6IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJzKQorICAgIDogSVBDOjpNZXNzYWdlU3RyZWFt
U2VuZGVyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U3RyZWFtV2FrZVVwPihkZWZhdWx0U3RyZWFtU2l6ZSkKKyAgICAsIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJzKQogewogICAgIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOwogICAg
IG1lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJz
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciksIDApOworICAgIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgZGVzdGluYXRpb25TdHJlYW1IYW5kbGUoKSksIDApOwogfQogCiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCiB7CiAgICAgSVBD
OjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFw
KCk7CiAgICAgbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7
Ci0gICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZUdy
YXBoaWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7CisgICAg
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKSwgMCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgcGxhdGZvcm1Td2FwQ2hh
aW4oKS5yZWN5Y2xlQnVmZmVyKCk7CiAjZW5kaWYKQEAgLTc4LDE2ICs4MSwyNSBAQCB1aW50NjRf
dCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVzaGFwZShp
bnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CisgICAgaWYgKG1fZGlkTG9zZUNvbnRleHQpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoIXNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZXNoYXBlKHdpZHRoLCBoZWlnaHQpLCBkZWZhdWx0U2VuZFRpbWVvdXQpKQorICAgICAg
ICB3YXNMb3N0KCk7CiAgICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKICAgICBtX2N1cnJlbnRI
ZWlnaHQgPSBoZWlnaHQ7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlz
cGxheSgpCiB7CisgICAgaWYgKG1fZGlkTG9zZUNvbnRleHQpCisgICAgICAgIHJldHVybjsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXJTZW5kUmln
aHQ7Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVw
YXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBh
cmVGb3JEaXNwbGF5OjpSZXBseShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXkoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6UmVw
bHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIDEwX3MpOworICAgIGlmICghc2VuZFJlc3VsdCkg
eworICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgYXV0byBk
aXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlz
cGxheUJ1ZmZlclNlbmRSaWdodCksIHNSR0JDb2xvclNwYWNlUmVmKCkpOwogICAgIGlmIChkaXNw
bGF5QnVmZmVyKSB7CiAgICAgICAgIGF1dG8mIHNjID0gcGxhdGZvcm1Td2FwQ2hhaW4oKTsKQEAg
LTk1LDE5ICsxMDcsMzEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVw
YXJlRm9yRGlzcGxheSgpCiAgICAgICAgIHNjLnByZXNlbnQoeyBXVEZNb3ZlKGRpc3BsYXlCdWZm
ZXIpLCBudWxscHRyIH0pOwogICAgIH0KICNlbHNlCi0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseSgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxh
eSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5
OjpSZXBseSgpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIGlmICghc2VuZFJlc3VsdCkgewor
ICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYKICAgICBt
YXJrTGF5ZXJDb21wb3NpdGVkKCk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZChleHRlbnNpb24pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgaWYgKG1fZGlkTG9zZUNvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChleHRlbnNpb24pLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIGlmICgh
c2VuZFJlc3VsdCkKKyAgICAgICAgd2FzTG9zdCgpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok5vdGlmeU1hcmtDb250ZXh0Q2hhbmdl
ZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKG1fZGlkTG9zZUNv
bnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICB3YXNM
b3N0KCk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2ltdWxhdGVD
b250ZXh0Q2hhbmdlZCgpCkBAIC0xNDAsNiArMTY0LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0
cmkKIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNMb3N0KCkKIHsKKyAg
ICBtX2RpZExvc2VDb250ZXh0ID0gdHJ1ZTsKICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlU
b1ZlY3RvcihtX2NsaWVudHMpKQogICAgICAgICBjbGllbnQtPmZvcmNlQ29udGV4dExvc3QoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggZDk5ZWRhMjlm
NmRiNWUxODE5NzEzMTc4ZjJhYTUzMWI0ZjVkZDZlMC4uM2NjMTNlMzc3ZTlkNzZhYjQ3YjY0M2Uz
MWFlMWFjMWMzNWNhYmMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VT
ZW5kZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU3RyZWFtU2VuZGVyLmgiCiAjaW5jbHVkZSAiUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtNDcs
NyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IGluIEdQVSBwcm9jZXNzLgogLy8gVGhlIGltcGxlbWVudGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJh
dGVkIGJ5IHJ1bm5pbmcgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsLgogY2xhc3Mg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBmaW5hbAotICAgIDogcHVibGljIElQQzo6TWVz
c2FnZVNlbmRlcgorICAgIDogcHVibGljIElQQzo6TWVzc2FnZVN0cmVhbVNlbmRlcjxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlN0cmVhbVdha2VVcD4KICAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PgogICAg
ICwgcHVibGljIFdlYkNvcmU6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlIHsKQEAg
LTU1LDkgKzU1LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYpOwogICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkgZmluYWw7CiAK
LSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgotICAgIElQQzo6Q29ubmVjdGlv
biogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKLSAgICB1aW50NjRfdCBt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworICAgIC8vIElQQzo6TWVz
c2FnZVN0cmVhbVNlbmRlciB0ZW1wbGF0ZSBjb250cmFjdC4KKyAgICBJUEM6OkNvbm5lY3Rpb24q
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Q7CisgICAgdWludDY0X3QgbWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
IG92ZXJyaWRlcy4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOwpAQCAtMzY5LDYgKzM2OSw4IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgZmluYWw7CiAKIHByaXZhdGU6CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDEwX3M7CisKICAgICAv
LyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KICAgICB2b2lkIHdhc0NyZWF0ZWQoU3RyaW5nJiYg
YXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CiAgICAg
dm9pZCB3YXNMb3N0KCk7CkBAIC0zNzYsNiArMzc4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJik7CiAgICAgYm9vbCBtX2RpZEluaXRpYWxpemUgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9kaWRMb3NlQ29udGV4dCB7IGZhbHNlIH07CiAgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIHsgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5j
dGlvbnNHZW5lcmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAppbmRl
eCBmN2VjZjg2NTU2YTAwNzNhZjhmNTU0Y2ZjZmMwZWYzMzlmNjFlODlhLi5lYzQzNmNkNzA1ODkz
ZDAzZjVlMjFmZjFmNTllNGM3NjQzYjE2ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlv
bnNHZW5lcmF0ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKQEAg
LTMyLDQwNyArMzIsNjg3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTZXRGYWlsTmV4dEdQVVN0YXR1
c0NoZWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSwgZGVm
YXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAg
d2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7
CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJvciksIGRlZmF1bHRTZW5kVGltZW91dCk7
CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9
CiB9CiAKIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92
ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxpc3QoKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxp
c3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YWN0
aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVUZXh0dXJlKHRleHR1cmUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpBY3RpdmVUZXh0dXJlKHRleHR1cmUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybUdMT2Jq
ZWN0IHByb2dyYW0sIFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpBdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVy
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlciksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymlu
ZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTHVpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAg
ICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QmluZEF0dHJpYkxvY2F0aW9uKGFyZzAsIGluZGV4LCBuYW1lKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVm
ZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyKHRhcmdldCwgYXJn
MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJh
bWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRGcmFtZWJ1ZmZlcih0
YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFt
X2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBhcmcx
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpiaW5kUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVj
dCBhcmcxKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
aW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJi
dWZmZXIodGFyZ2V0LCBhcmcxKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
ZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmluZFRleHR1cmUodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Qmlu
ZFRleHR1cmUodGFyZ2V0LCBhcmcxKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZENvbG9yKEdDR0xjbGFtcGYgcmVkLCBH
Q0dMY2xhbXBmIGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kQ29sb3IocmVk
LCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZENvbG9yKHJlZCwgZ3Jl
ZW4sIGJsdWUsIGFscGhhKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uKEdDR0xlbnVtIG1vZGUpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb24o
bW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb24obW9kZSksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRFcXVh
dGlvblNlcGFyYXRlKEdDR0xlbnVtIG1vZGVSR0IsIEdDR0xlbnVtIG1vZGVBbHBoYSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvblNl
cGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRXF1YXRpb25T
ZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAg
ICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyhHQ0dMZW51bSBzZmFj
dG9yLCBHQ0dMZW51bSBkZmFjdG9yKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCbGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3RvciksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmNTZXBhcmF0ZShHQ0dM
ZW51bSBzcmNSR0IsIEdDR0xlbnVtIGRzdFJHQiwgR0NHTGVudW0gc3JjQWxwaGEsIEdDR0xlbnVt
IGRzdEFscGhhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4
dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhh
LCBkc3RBbHBoYSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIEdDR0xlbnVtIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0NHTGVudW0gdGFy
Z2V0KQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0
YXJnZXQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVidWZm
ZXJTdGF0dXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNo
ZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyKEdDR0xiaXRmaWVsZCBtYXNrKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhcihtYXNrKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q2xlYXIobWFzayksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJDb2xvcihHQ0dMY2xhbXBmIHJlZCwg
R0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBmIGFscGhhKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckNvbG9yKHJl
ZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJDb2xvcihyZWQsIGdy
ZWVuLCBibHVlLCBhbHBoYSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2Vu
ZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJEZXB0aChHQ0dMY2xhbXBmIGRlcHRoKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckRlcHRoKGRl
cHRoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3Nl
Q29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJEZXB0aChkZXB0aCksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJTdGVuY2ls
KEdDR0xpbnQgcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q2xlYXJTdGVuY2lsKHMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhclN0ZW5jaWwocyksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29sb3JNYXNrKEdDR0xib29sZWFuIHJlZCwgR0NHTGJvb2xlYW4gZ3JlZW4sIEdDR0xib29sZWFu
IGJsdWUsIEdDR0xib29sZWFuIGFscGhhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb2xvck1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4ocmVkKSwgc3RhdGlj
X2Nhc3Q8Ym9vbD4oZ3JlZW4pLCBzdGF0aWNfY2FzdDxib29sPihibHVlKSwgc3RhdGljX2Nhc3Q8
Ym9vbD4oYWxwaGEpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+
KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSks
IHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAg
IGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNvbXBpbGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBpbGVTaGFkZXIoYXJn
MCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAg
ICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y29weVRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2
ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7Cisg
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwg
eSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4
U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRM
b3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
eG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3JlYXRlQnVmZmVyKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcigp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZlcjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyKCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyOjpSZXBseShyZXR1
cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkK
KyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwog
fQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0
ZUZyYW1lYnVmZmVyKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZyYW1lYnVm
ZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZm
ZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUZy
YW1lYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJh
bWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y3JlYXRlUHJvZ3JhbSgpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFs
dWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDcmVhdGVQcm9ncmFtKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlUHJvZ3JhbTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlUHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVByb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKIHsKICAgICB1aW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7
CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlUmVuZGVyYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0Zm9y
bUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcihHQ0dM
ZW51bSBhcmcwKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzAp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyKGFyZzAp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNoYWRlcjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1
bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
cmVhdGVUZXh0dXJlKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmUo
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlKCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1
bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZShHQ0dM
ZW51bSBtb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDdWxsRmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVs
ZXRlQnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlQnVmZmVyKGFyZzApLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEZWxldGVCdWZmZXIoYXJnMCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICgh
c2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEZWxldGVGcmFtZWJ1ZmZlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZm
ZXIoYXJnMCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkK
KyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVByb2dyYW0o
YXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVByb2dyYW0oYXJnMCksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUmVu
ZGVyYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUmVuZGVyYnVmZmVyKGFyZzApLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7Cisg
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZWxldGVSZW5kZXJidWZmZXIoYXJnMCksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU2hhZGVyKFBsYXRm
b3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RGVsZXRlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTaGFkZXIo
YXJnMCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAg
ICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRleHR1cmUoYXJn
MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRleHR1cmUoYXJnMCksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhGdW5jKEdD
R0xlbnVtIGZ1bmMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlcHRoRnVuYyhmdW5jKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhGdW5jKGZ1bmMpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlcHRoTWFzayhHQ0dMYm9vbGVhbiBmbGFnKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZXB0aE1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4oZmxhZykpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRl
cHRoUmFuZ2UoR0NHTGNsYW1wZiB6TmVhciwgR0NHTGNsYW1wZiB6RmFyKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aFJhbmdlKHpOZWFyLCB6RmFy
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGVwdGhSYW5nZSh6TmVhciwgekZhciksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hh
ZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgUGxhdGZvcm1HTE9iamVjdCBhcmcxKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJn
MCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRldGFjaFNoYWRlcihhcmcwLCBhcmcxKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2Fz
TG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
aXNhYmxlKEdDR0xlbnVtIGNhcCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGlzYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlKGNhcCksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRyYXdBcnJheXMoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVp
IGNvdW50KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
cmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXMo
bW9kZSwgZmlyc3QsIGNvdW50KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
ZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NH
THNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzKG1vZGUs
IGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmVuYWJsZShHQ0dMZW51bSBjYXApCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZShjYXApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpF
bmFibGUoY2FwKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkoaW5kZXgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShpbmRleCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZmluaXNoKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RmluaXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmZsdXNoKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Rmx1c2goKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRM
b3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Rmx1c2goKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHJlbmRl
cmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBhcmczKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJn
ZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVy
dGFyZ2V0LCBhcmczKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVz
dWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleHRhcmdldCwgUGxhdGZvcm1HTE9iamVj
dCBhcmczLCBHQ0dMaW50IGxldmVsKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRl
eHRhcmdldCwgYXJnMywgbGV2ZWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmUy
RCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgYXJnMywgbGV2ZWwpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyb250
RmFjZShHQ0dMZW51bSBtb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpGcm9udEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyb250RmFjZShtb2Rl
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZW5lcmF0ZU1pcG1hcChHQ0dMZW51bSB0YXJnZXQpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdlbmVyYXRlTWlwbWFwKHRhcmdldCksIGRlZmF1bHRTZW5kVGltZW91dCk7
CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9
CiB9CiAKIGJvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmli
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFy
ZzIpCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRl
eCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliOjpS
ZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3Rp
dmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEFjdGl2ZUF0dHJpYjo6UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogYm9vbCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtR0xPYmplY3QgcHJv
Z3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGFyZzIpCiB7CiAgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm06OlJlcGx5KHJldHVyblZhbHVlLCBh
cmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9k
aWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwg
aW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZv
cm06OlJlcGx5KHJldHVyblZhbHVlLCBhcmcyKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJp
bmcmIG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEF0dHJpYkxvY2F0aW9uKGFy
ZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEF0dHJpYkxv
Y2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRB
dHRyaWJMb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRBdHRyaWJMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRp
bWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7
CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFt
ZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0QnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAg
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5W
YWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAg
ICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQog
CiBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3RyaW5nKEdDR0xlbnVt
IG5hbWUpCiB7CiAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExv
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nKG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRGbG9hdHYoR0NHTGVudW0gcG5hbWUsIEdDR0xT
cGFuPEdDR0xmbG9hdD4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4g
dmFsdWVSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2OjpSZXBseSh2YWx1ZVJl
cGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwotICAgIGlmIChzZW5k
UmVzdWx0KQotICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZh
bHVlLmJ1ZlNpemUgKiBzaXplb2YoZmxvYXQpKTsKLSAgICAKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0djo6UmVwbHkodmFsdWVS
ZXBseSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAg
ICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtZW1jcHko
dmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoZmxv
YXQpKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRJbnRlZ2VydihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gdmFs
dWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1ZVJlcGx5OwotICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXJ2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwotICAgIGlmIChzZW5kUmVzdWx0KQotICAg
ICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUg
KiBzaXplb2YoaW50MzJfdCkpOwotICAgIAorICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2Vydjo6UmVwbHkodmFsdWVSZXBseSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkodmFsdWUu
ZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkp
OworICAgICAgICB9CisgICAgfQogfQogCiBHQ0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0SW50ZWdlcjY0KEdDR0xlbnVtIHBuYW1lKQogewogICAgIGludDY0X3QgcmV0
dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRJbnRlZ2VyNjQocG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldEludGVnZXI2NDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAg
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0SW50ZWdlcjY0KHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRJbnRlZ2VyNjQ6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7CiB9
CiAKIEdDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlZ2VyNjRp
KEdDR0xlbnVtIHBuYW1lLCBHQ0dMdWludCBpbmRleCkKIHsKICAgICBpbnQ2NF90IHJldHVyblZh
bHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEludGVnZXI2NGkocG5hbWUsIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpOjpSZXBseShyZXR1cm5WYWx1ZSksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4ocmV0
dXJuVmFsdWUpOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFByb2dyYW1pKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGVudW0gcG5hbWUpCiB7CiAg
ICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWkocHJvZ3JhbSwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1pOjpSZXBseShy
ZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVl
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJvb2xlYW52KEdD
R0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMYm9vbGVhbj4gdmFsdWUpCiB7CiAgICAgSVBDOjpB
cnJheVJlZmVyZW5jZTxib29sPiB2YWx1ZVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnYocG5h
bWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEJvb2xlYW52OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOwotICAgIGlmIChzZW5kUmVzdWx0KQotICAgICAgICBtZW1jcHkodmFsdWUuZGF0
YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoYm9vbCkpOwotICAg
IAorICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xlYW52
KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVSZXBseSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCks
IHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoYm9vbCkpOworICAgICAgICB9CisgICAgfQogfQogCiBH
Q0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcigpCiB7CiAgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEVycm9yOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRFcnJvcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEVycm9yOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAg
IGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0
dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1l
bnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwg
YXR0YWNobWVudCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVm
YXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAg
d2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFN0cmluZyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybUdM
T2JqZWN0IGFyZzApCiB7CiAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2co
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9M
b2c6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dy
YW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFBy
b2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
ZW51bSBwbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U2hhZGVyaShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0xlbnVtIHBuYW1lKQogewog
ICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpKGFyZzAsIHBuYW1lKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpKGFyZzAsIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJpOjpSZXBseShyZXR1cm5WYWx1
ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAg
ICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBT
dHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9OwotICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5m
b0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJ
bmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
aGFkZXJJbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFNoYWRlckluZm9Mb2c6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0K
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKQEAgLTQ0MCwxMDI5ICs3MjAsMTc2NSBAQCB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclByZWNpc2lvbkZvcm1h
dChHQ0dMZW51bSBzaGFkZXJUeXBlLAogewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dCwgMj4gcmFuZ2VSZXBseTsKICAgICBpbnQzMl90IHByZWNpc2lvblJlcGx5ID0geyB9OwotICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclByZWNpc2lvbkZv
cm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lzaW9uUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7Ci0gICAgaWYgKHNlbmRSZXN1bHQpIHsKLSAgICAgICAgbWVt
Y3B5KHJhbmdlLmRhdGEsIHJhbmdlUmVwbHkuZGF0YSgpLCByYW5nZS5idWZTaXplICogc2l6ZW9m
KGludDMyX3QpKTsKLSAgICAgICAgaWYgKHByZWNpc2lvbikKLSAgICAgICAgICAgICpwcmVjaXNp
b24gPSBwcmVjaXNpb25SZXBseTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlw
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9u
Rm9ybWF0OjpSZXBseShyYW5nZVJlcGx5LCBwcmVjaXNpb25SZXBseSksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkocmFuZ2UuZGF0YSwgcmFuZ2VSZXBs
eS5kYXRhKCksIHJhbmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICAgICAg
aWYgKHByZWNpc2lvbikKKyAgICAgICAgICAgICAgICAqcHJlY2lzaW9uID0gcHJlY2lzaW9uUmVw
bHk7CisgICAgICAgIH0KICAgICB9CiB9CiAKIFN0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0
cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJTb3VyY2U6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZShhcmcwKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJTb3VyY2U6OlJlcGx5KHJldHVyblZhbHVl
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdD
R0xmbG9hdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJmKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgZmxvYXQgcmV0dXJuVmFsdWUg
PSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZjo6UmVwbHkocmV0dXJu
VmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0K
IAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJp
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250
ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJpOjpSZXBseShy
ZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVl
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1mdihQ
bGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xm
bG9hdD4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4gdmFsdWVSZXBs
eTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2OjpSZXBs
eSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwotICAg
IGlmIChzZW5kUmVzdWx0KQotICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5k
YXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoZmxvYXQpKTsKLSAgICAKKyAgICBpZiAoIW1f
ZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFVuaWZvcm1mdjo6UmVwbHkodmFsdWVSZXBseSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCks
IHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YoZmxvYXQpKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtaXYoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1
ZSkKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7Ci0gICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdjo6UmVwbHkodmFsdWVS
ZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKLSAgICBpZiAoc2Vu
ZFJlc3VsdCkKLSAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2
YWx1ZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKLSAgICAKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24s
IHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVu
aWZvcm1pdjo6UmVwbHkodmFsdWVSZXBseSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAg
IGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVl
LmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm11aXYoUGxhdGZvcm1HTE9i
amVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3BhbjxHQ0dMdWludD4gdmFsdWUp
CiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4gdmFsdWVSZXBseTsKLSAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXY6OlJlcGx5KHZhbHVl
UmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Ci0gICAgaWYgKHNl
bmRSZXN1bHQpCi0gICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwg
dmFsdWUuYnVmU2l6ZSAqIHNpemVvZih1aW50MzJfdCkpOwotICAgIAorICAgIGlmICghbV9kaWRM
b3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm11aXYocHJvZ3JhbSwgbG9jYXRp
b24sIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFVuaWZvcm11aXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAg
ICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2
YWx1ZS5idWZTaXplICogc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAK
IEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUxvY2F0aW9u
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1f
ZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb24oYXJnMCwg
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0
aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJu
IHJldHVyblZhbHVlOwogfQogCiBHQ0dMc2l6ZWlwdHIgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDR0x1aW50IGluZGV4LCBHQ0dMZW51bSBwbmFt
ZSkKIHsKICAgICB1aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldChpbmRl
eCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0
dHJpYk9mZnNldDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0OjpSZXBseShyZXR1cm5WYWx1ZSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xzaXplaXB0
cj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmhpbnQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBtb2RlKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpIaW50KHRhcmdldCwgbW9kZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogR0NH
TGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNCdWZmZXIoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZlcihhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZlcjo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNCdWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVm
YXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAg
d2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJl
dHVyblZhbHVlKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNFbmFibGVkKEdDR0xlbnVtIGNhcCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9
OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFi
bGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFibGVkOjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0VuYWJsZWQoY2Fw
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0VuYWJsZWQ6OlJlcGx5KHJl
dHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7
CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VD
b250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7CiB9CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmlzUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzUHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1Byb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzUHJvZ3JhbShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1By
b2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogR0NHTGJvb2xl
YW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcihhcmcw
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcjo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNSZW5kZXJidWZmZXIo
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNSZW5kZXJidWZmZXI6
OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
ZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcw
KQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNTaGFkZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNTaGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsK
IH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNUZXh0dXJl
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9Owot
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJl
KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Cisg
ICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJlKGFyZzAp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVGV4dHVyZTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
Q0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmxpbmVXaWR0aChHQ0dMZmxvYXQgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpMaW5lV2lkdGgoYXJnMCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2Vu
ZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcw
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpMaW5rUHJv
Z3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9k
aWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TGlua1Byb2dyYW0oYXJnMCksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGl4ZWxT
dG9yZWkoR0NHTGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cG9seWdvbk9mZnNl
dChHQ0dMZmxvYXQgZmFjdG9yLCBHQ0dMZmxvYXQgdW5pdHMpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRl
eHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVy
YnVmZmVyU3RvcmFnZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0
b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxl
Q292ZXJhZ2UoR0NHTGNsYW1wZiB2YWx1ZSwgR0NHTGJvb2xlYW4gaW52ZXJ0KQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVDb3ZlcmFnZSh2YWx1
ZSwgc3RhdGljX2Nhc3Q8Ym9vbD4oaW52ZXJ0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZUNvdmVy
YWdlKHZhbHVlLCBzdGF0aWNfY2FzdDxib29sPihpbnZlcnQpKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29yKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNjaXNzb3IoeCwgeSwg
d2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAo
IW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNjaXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdo
dCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAg
ICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgY29uc3QgU3RyaW5n
JiBhcmcxKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpT
aGFkZXJTb3VyY2UoYXJnMCwgYXJnMSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNoYWRlclNvdXJjZShhcmcw
LCBhcmcxKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpzdGVuY2lsRnVuYyhHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NH
THVpbnQgbWFzaykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6U3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1
bmMoZnVuYywgcmVmLCBtYXNrKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
ZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDR0xlbnVtIGZh
Y2UsIEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNrKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuY1NlcGFyYXRl
KGZhY2UsIGZ1bmMsIHJlZiwgbWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJh
dGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFzayhHQ0dMdWludCBtYXNr
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2ls
TWFzayhtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9k
aWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2sobWFzayksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNp
bE1hc2tTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBHQ0dMdWludCBtYXNrKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFza1NlcGFyYXRlKGZh
Y2UsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2sp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxPcChHQ0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0g
enBhc3MpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0
ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsT3AoZmFp
bCwgemZhaWwsIHpwYXNzKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3BTZXBhcmF0ZShHQ0dMZW51bSBmYWNlLCBH
Q0dMZW51bSBmYWlsLCBHQ0dMZW51bSB6ZmFpbCwgR0NHTGVudW0genBhc3MpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNlcGFyYXRlKGZh
Y2UsIGZhaWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcFNlcGFyYXRl
KGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAg
IGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyZihHQ0dMZW51bSB0
YXJnZXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMZmxvYXQgcGFyYW0pCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFt
ZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBh
cmFtKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAg
ICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJpKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xpbnQgcGFyYW0pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZihsb2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm0xZihsb2NhdGlvbiwgeCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTFmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRM
b3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYu
YnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0xaShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMaW50IHgpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaShs
b2NhdGlvbiwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1f
ZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaShsb2NhdGlvbiwgeCksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTFpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWl2
KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtMWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRp
bWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7
CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0y
ZihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHkpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZihsb2NhdGlvbiwg
eCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZihsb2NhdGlvbiwgeCwgeSksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yZnYo
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJm
dihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybTJpKGxvY2F0aW9uLCB4LCB5KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0K
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMml2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaXYobG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4o
di5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaXYobG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQz
Ml90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAg
IGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNmKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZihsb2NhdGlvbiwgeCwg
eSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zZihsb2NhdGlvbiwgeCwgeSwgeiksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0z
ZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTNmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAg
fQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zaShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6KQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24s
IHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2kobG9jYXRpb24sIHgsIHksIHopLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAg
ICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnVuaWZvcm0zaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4g
dikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTNpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTNpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9z
dCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtNGYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxv
YXQgeiwgR0NHTGZsb2F0IHcpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm00Zihsb2NhdGlvbiwgeCwgeSwgeiwgdyksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTRmdihHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHYpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00ZnYobG9jYXRpb24sIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRh
dGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYu
ZGF0YSksIHYuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dM
aW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwg
eiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwgeiwgdyksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTRpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
NGl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtNGl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2Fz
dDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJh
bnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJp
eDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNv
bnN0IEdDR0xmbG9hdD4gdmFsdWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+
KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2Up
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2YWx1ZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZv
cm1NYXRyaXg0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1
ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVzZVByb2dyYW0oUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
c2VQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVc2VQcm9ncmFtKGFyZzApLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZh
bGlkYXRlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmFsaWRhdGVQcm9ncmFtKGFyZzApLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAg
ICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFmKEdDR0x1
aW50IGluZGV4LCBHQ0dMZmxvYXQgeCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWZ2KEdDR0x1aW50IGlu
ZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDE+IHZhbHVlcykKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAxPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWIxZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDE+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmVydGV4QXR0cmliMmYoR0NHTHVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliMmYoaW5kZXgsIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIyZihpbmRleCwg
eCwgeSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAg
ICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMmZ2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMZmxvYXQsIDI+IHZhbHVlcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliMmZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNl
PGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2
YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQq
Pih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliM2YoR0NH
THVpbnQgaW5kZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHopCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNm
KGluZGV4LCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHgs
IHksIHopLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29u
c3QgR0NHTGZsb2F0LCAzPiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjNmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwg
dmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliM2Z2KGluZGV4LCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAzPihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRmKEdD
R0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dM
ZmxvYXQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWI0ZihpbmRleCwgeCwgeSwgeiwgdyksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAg
IGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGZ2KEdDR0x1aW50
IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQsIDQ+IHZhbHVlcykKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0
ZXhBdHRyaWI0ZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dM
aW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8
Ym9vbD4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250
ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBz
dGF0aWNfY2FzdDxib29sPihub3JtYWxpemVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dmlld3BvcnQoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAg
fQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWlwdHIgYXJnMSwgR0NHTGVudW0gdXNhZ2UpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlckRhdGEwKHRhcmdl
dCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzEpLCB1c2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1
ZmZlckRhdGEwKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzEpLCB1c2FnZSksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBk
YXRhLCBHQ0dMZW51bSB1c2FnZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVm
U2l6ZSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTEodGFyZ2V0LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEuZGF0YSksIGRhdGEuYnVmU2l6ZSksIHVzYWdlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJTdWJEYXRhKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBk
YXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZm
ZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEodGFy
Z2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDhfdD4gZGF0YVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczA6OlJlcGx5KGRhdGFSZXBseSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKLSAgICBpZiAoc2VuZFJlc3VsdCkKLSAgICAgICAg
bWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9m
KHVpbnQ4X3QpKTsKLSAgICAKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpSZWFkblBpeGVsczAoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRh
LmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxz
MDo6UmVwbHkoZGF0YVJlcGx5KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
ZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRhdGEuYnVmU2l6ZSAq
IHNpemVvZih1aW50OF90KSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMxKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZWFkblBpeGVsczEoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ob2Zmc2V0KSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICgh
c2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdl
MkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJE
MSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xp
bnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBo
ZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
THZvaWQ+IHBpeGVscykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VGV4U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3Nl
Q29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRh
KSwgcGl4ZWxzLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
ZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG9mZnNldCkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUs
IEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4
SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
bXByZXNzZWRUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4
SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNpemVpIGlt
YWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGlt
YWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEu
YnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1h
Z2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhT
dWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRyYXdBcnJheXNJbnN0YW5jZWQoR0NHTGVudW0gbW9kZSwgR0NHTGludCBmaXJzdCwgR0NHTHNp
emVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBj
b3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZChtb2Rl
LCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAg
IGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdD
R0xlbnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBv
ZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAg
ICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliRGl2aXNvcihH
Q0dMdWludCBpbmRleCwgR0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNv
ciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAg
ICB3YXNMb3N0KCk7CisgICAgfQogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5KCkKIHsKICAgICB1aW50MzJfdCByZXR1
cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2Fz
TG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
ZWxldGVWZXJ0ZXhBcnJheShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXko
YXJnMCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAg
ICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQog
ewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5KGFyZzApLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXk6OlJlcGx5KHJldHVyblZhbHVlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3Nl
Q29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJpbmRWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheShhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5KGFyZzApLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlCdWZmZXJTdWJEYXRh
KEdDR0xlbnVtIHJlYWRUYXJnZXQsIEdDR0xlbnVtIHdyaXRlVGFyZ2V0LCBHQ0dMaW50cHRyIHJl
YWRPZmZzZXQsIEdDR0xpbnRwdHIgd3JpdGVPZmZzZXQsIEdDR0xzaXplaXB0ciBhcmc0KQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5QnVmZmVyU3Vi
RGF0YShyZWFkVGFyZ2V0LCB3cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlYWRP
ZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oYXJnNCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFy
Z2V0LCB3cml0ZVRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlYWRPZmZzZXQpLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4od3JpdGVPZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJn
NCkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50cHRyIG9m
ZnNldCwgR0NHTFNwYW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PiBkYXRhUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIGRhdGEuYnVmU2l6ZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YTo6UmVwbHkoZGF0YVJlcGx5
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwotICAgIGlmIChzZW5kUmVz
dWx0KQotICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1
ZlNpemUgKiBzaXplb2YodWludDhfdCkpOwotICAgIAorICAgIGlmICghbV9kaWRMb3NlQ29udGV4
dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4ob2Zmc2V0KSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhOjpSZXBseShkYXRhUmVwbHkpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJl
cGx5LmRhdGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICAgICAgfQor
ICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVi
dWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBzcmNYMSwgR0NHTGlu
dCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGludCBkc3RYMSwgR0NH
TGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRlcikKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNy
Y1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFz
aywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9k
aWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwg
c3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0
dGFjaG1lbnQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGludCBsZXZlbCwgR0NHTGlu
dCBsYXllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZl
bCwgbGF5ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclRleHR1cmVMYXllcih0YXJnZXQs
IGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllciksIGRlZmF1bHRTZW5kVGltZW91dCk7
CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW52YWxpZGF0ZUZyYW1l
YnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTGVudW0+IGF0dGFjaG1l
bnRzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZh
bGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFj
aG1lbnRzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRh
cmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29u
c3QgR0NHTGVudW0+IGF0dGFjaG1lbnRzLCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4o
YXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0aCwgaGVp
Z2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3Nl
Q29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf
dCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSwgeCwgeSwgd2lkdGgs
IGhlaWdodCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkK
KyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6cmVhZEJ1ZmZlcihHQ0dMZW51bSBzcmMpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRCdWZmZXIoc3JjKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAg
ICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UmVhZEJ1ZmZlcihzcmMpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAo
IXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBzYW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0K
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlMkQodGFyZ2V0LCBsZXZlbHMsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTJE
KHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4
U3RvcmFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVp
IGRlcHRoKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpU
ZXhTdG9yYWdlM0QodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVscywgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0K
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQgYm9y
ZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2
b2lkPiBwaXhlbHMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhl
bHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFt
X2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNEKEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCBpbnRlcm5hbGZvcm1hdCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xpbnQg
Ym9yZGVyLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFn
ZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgs
IGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlRleEltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgs
IEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+
IHBpeGVscykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBp
eGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAo
IW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QwKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3Jt
YXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN1
YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQs
IEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTNEMSh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29weVRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50
IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkg
ZGVwdGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNE
MCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJv
cmRlciwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
bXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGlu
dHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAo
IW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMSh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwg
aW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3Nl
ZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhv
ZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
c2l6ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1Yklt
YWdlM0QwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50
OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRM
b3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QwKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBm
b3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2Fz
TG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2Uz
RDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh0YXJnZXQsIGxldmVs
LCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0
LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRG
cmFnRGF0YUxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBu
YW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dy
YW0sIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRh
TG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMXVpKEdDR0xpbnQgbG9jYXRpb24sIEdD
R0x1aW50IHYwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtMXVpKGxvY2F0aW9uLCB2MCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWkobG9j
YXRpb24sIHYwKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYw
LCBHQ0dMdWludCB2MSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTJ1aShsb2NhdGlvbiwgdjAsIHYxKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTJ1aShsb2NhdGlvbiwgdjAsIHYxKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0x1aW50IHYwLCBHQ0dMdWludCB2MSwgR0NHTHVpbnQgdjIpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2
MSwgdjIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExv
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3VpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtNHVpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0x1aW50IHYwLCBHQ0dMdWludCB2
MSwgR0NHTHVpbnQgdjIsIEdDR0x1aW50IHYzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRl
eHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSwgZGVm
YXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAg
d2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtMXVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4g
ZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybTF1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTF1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMdWludD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWlu
dDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9k
aWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJ1aXYobG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM3VpdihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aXYobG9jYXRpb24sIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aXYobG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNHVp
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWludD4gZGF0YSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aXYobG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTR1aXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtTWF0cml4MngzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJh
bnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6
ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VD
b250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIHN0YXRpY19j
YXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2Fz
TG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtTWF0cml4M3gyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3Rh
dGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3gyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJv
b2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
TWF0cml4Mng0ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nh
c3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7Cisg
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRy
YW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4
NHgyZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9v
bD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9z
ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxv
YXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMZmxvYXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJh
bnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihk
YXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYoR0NHTGlu
dCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3Nl
KSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0
cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRh
dGEpLCBkYXRhLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
ZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGkoR0NHTHVpbnQgaW5kZXgs
IEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpKGluZGV4
LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTRpKGluZGV4LCB4LCB5
LCB6LCB3KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNGl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMaW50LCA0PiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRh
dGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGl2KGlu
ZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWJJNHVpKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCB4LCBHQ0dMdWludCB5LCBHQ0dMdWlu
dCB6LCBHQ0dMdWludCB3KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
STR1aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50LCA0PiB2YWx1ZXMp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYkk0dWl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90LCA0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250
ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgSVBDOjpBcnJheVJlZmVy
ZW5jZTx1aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVl
cy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dM
dWludCBpbmRleCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRl
LCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VmVydGV4QXR0cmliSVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0cmlk
ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd1JhbmdlRWxlbWVudHMoR0NHTGVudW0gbW9kZSwgR0NH
THVpbnQgc3RhcnQsIEdDR0x1aW50IGVuZCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMaW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5
cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd1Jh
bmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3QnVmZmVycyhHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYnVmcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAg
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEcmF3QnVmZmVycyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y2xlYXJCdWZmZXJpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNw
YW48Y29uc3QgR0NHTGludD4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpB
cnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2
YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVy
aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUp
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjbGVhckJ1ZmZlcnVpdihHQ0dMZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZl
ciwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IHZhbHVlcykKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVm
ZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDbGVhckJ1ZmZlcnVpdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPih2YWx1ZXMuZGF0YSks
IHZhbHVlcy5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2Vu
ZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdihHQ0dMZW51bSBidWZmZXIsIEdD
R0xpbnQgZHJhd2J1ZmZlciwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZXMpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVyZnYo
YnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7
CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRh
KSwgdmFsdWVzLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
ZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZpKEdDR0xlbnVtIGJ1ZmZlciwg
R0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMZmxvYXQgZGVwdGgsIEdDR0xpbnQgc3RlbmNpbCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJm
aShidWZmZXIsIGRyYXdidWZmZXIsIGRlcHRoLCBzdGVuY2lsKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xl
YXJCdWZmZXJmaShidWZmZXIsIGRyYXdidWZmZXIsIGRlcHRoLCBzdGVuY2lsKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9z
dCgpOworICAgIH0KIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjcmVhdGVRdWVyeSgpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVR
dWVyeSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5OjpS
ZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVRdWVyeSgp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5OjpSZXBseShy
ZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVl
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KFBs
YXRmb3JtR0xPYmplY3QgcXVlcnkpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUXVl
cnkocXVlcnkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1F1ZXJ5KFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCiB7
CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzUXVlcnkocXVlcnkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzUXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0K
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblF1ZXJ5KEdDR0xlbnVtIHRh
cmdldCwgUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAg
ICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6QmVnaW5RdWVyeSh0YXJnZXQsIHF1ZXJ5KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVyeShHQ0dMZW51bSB0
YXJnZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVu
ZFF1ZXJ5KHRhcmdldCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAo
IW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFF1ZXJ5KHRhcmdldCksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0UXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAg
ICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAg
ICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTHVp
bnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UXVlcnlPYmplY3R1aShQbGF0Zm9y
bUdMT2JqZWN0IHF1ZXJ5LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRl
eHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTYW1wbGVyKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBsZXIoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyOjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBp
ZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyKCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcjo6UmVwbHkocmV0
dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKFBs
YXRmb3JtR0xPYmplY3Qgc2FtcGxlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlU2FtcGxlcihzYW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlU2FtcGxlcihzYW1wbGVyKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
ZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogR0NHTGJvb2xl
YW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTYW1wbGVyKFBsYXRmb3JtR0xPYmpl
Y3Qgc2FtcGxlcikKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyKHNhbXBsZXIpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2FtcGxlcjo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFt
X2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyKHNhbXBsZXIpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2FtcGxlcjo6UmVwbHkocmV0dXJuVmFs
dWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9v
bGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJpbmRTYW1wbGVyKEdDR0x1aW50IHVuaXQsIFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlcikK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBs
ZXIodW5pdCwgc2FtcGxlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBp
ZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBs
ZXIpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NH
TGVudW0gcG5hbWUsIEdDR0xpbnQgcGFyYW0pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJh
bSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lLCBwYXJh
bSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAg
ICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dM
ZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFy
YW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VD
b250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFy
YW0pLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiBHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRlcmYoUGxhdGZvcm1HTE9iamVjdCBzYW1w
bGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQ
YXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7
CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlciwgcG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmOjpSZXBs
eShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBs
ZXJQYXJhbWV0ZXJpKFBsYXRmb3JtR0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7
CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1l
dGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2Ft
cGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMc3luYyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpmZW5jZVN5bmMoR0NHTGVudW0gY29uZGl0aW9u
LCBHQ0dMYml0ZmllbGQgZmxhZ3MpCiB7CiAgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07
Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5
bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpG
ZW5jZVN5bmMoY29uZGl0aW9uLCBmbGFncyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RmVuY2VTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7
CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R0NHTHN5bmM+KHN0YXRpY19jYXN0PGludHB0
cl90PihyZXR1cm5WYWx1ZSkpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojppc1N5bmMoR0NHTHN5bmMgYXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVl
ID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihh
cmcwKSkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU3luYzo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jKHN0YXRpY19jYXN0
PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSkpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0
dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVN5bmMoR0NHTHN5bmMgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVsZXRlU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlU3luYyhzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2Fz
TG9zdCgpOworICAgIH0KIH0KIAogR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y2xpZW50V2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dM
dWludDY0IHRpbWVvdXQpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3lu
YyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkp
LCBmbGFncywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VD
b250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih0aW1lb3V0KSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q2xpZW50V2FpdFN5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0K
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6d2FpdFN5bmMoR0NHTHN5bmMgYXJnMCwgR0NHTGJpdGZpZWxkIGZsYWdzLCBHQ0dM
aW50NjQgdGltZW91dCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVvdXQpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8aW50cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVvdXQp
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRTeW5jaShHQ0dMc3luYyBhcmcwLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAg
ICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2koc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRTeW5jaShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0U3luY2k6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQogewogICAg
IHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjazo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVl
ZGJhY2soKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zv
cm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAg
ICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUcmFuc2Zvcm1G
ZWVkYmFjayhpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1f
ZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlkKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayhQbGF0Zm9ybUdMT2JqZWN0IGlkKQogewog
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrKGlkKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1f
ZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrKGlkKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RyYW5zZm9ybUZlZWRiYWNrOjpS
ZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2Vu
ZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwg
UGxhdGZvcm1HTE9iamVjdCBpZCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAg
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBpZCksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5UcmFuc2Zv
cm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVNb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2
ZU1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExv
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1v
ZGUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmVuZFRyYW5zZm9ybUZlZWRiYWNrKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAg
ICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RW5kVHJhbnNmb3JtRmVlZGJhY2soKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0cmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmdzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhcnlp
bmdzLCBHQ0dMZW51bSBidWZmZXJNb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0sIHZhcnlp
bmdzLCBidWZmZXJNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
cyhwcm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgaW5kZXgsIEFjdGl2
ZUluZm8mIGFyZzIpCiB7Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Zzo6UmVwbHkoYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmcocHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZzo6UmVwbHkoYXJnMiksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cGF1
c2VUcmFuc2Zvcm1GZWVkYmFjaygpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UGF1
c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAo
IXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzdW1lVHJhbnNm
b3JtRmVlZGJhY2soKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpiaW5kQnVmZmVyQmFzZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0
Zm9ybUdMT2JqZWN0IGJ1ZmZlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9z
dCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5k
QnVmZmVyUmFuZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwgUGxhdGZvcm1HTE9i
amVjdCBidWZmZXIsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWlwdHIgYXJnNCkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdl
KHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0
YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJSYW5n
ZSh0YXJnZXQsIGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnNCkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAg
ICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiBW
ZWN0b3I8R0NHTHVpbnQ+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1J
bmRpY2VzKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHVu
aWZvcm1OYW1lcykKIHsKICAgICBWZWN0b3I8dWludDMyX3Q+IHJldHVyblZhbHVlID0geyB9Owot
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9y
bUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlczo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXMocHJvZ3JhbSwgdW5pZm9ybU5hbWVz
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlczo6
UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAogVmVjdG9yPEdDR0xpbnQ+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldEFjdGl2ZVVuaWZvcm1zKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgVmVj
dG9yPEdDR0x1aW50PiYgdW5pZm9ybUluZGljZXMsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIFZl
Y3RvcjxpbnQzMl90PiByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZv
cm1JbmRpY2VzLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
QWN0aXZlVW5pZm9ybXM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEFjdGl2ZVVuaWZvcm1zKHByb2dyYW0sIHVuaWZvcm1JbmRpY2VzLCBwbmFtZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXM6OlJlcGx5
KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVz
dWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFs
dWU7CiB9CiAKIEdDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZv
cm1CbG9ja0luZGV4KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiB1bmlm
b3JtQmxvY2tOYW1lKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2Nr
SW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXg6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZv
cm1CbG9ja05hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZv
cm1CbG9ja0luZGV4OjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZShQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4KQogewogICAgIFN0cmluZyByZXR1cm5WYWx1
ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05h
bWU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEw
X3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2
ZVVuaWZvcm1CbG9ja05hbWUocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWU6OlJlcGx5
KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVz
dWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFs
dWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybUJsb2Nr
QmluZGluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHQ0dMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtQmxvY2tCaW5kaW5nKHByb2dyYW0sIHVu
aWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybUJsb2NrQmluZGluZyhwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2Nr
QmluZGluZyksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkK
KyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwg
R0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dM
aW50PiBwYXJhbXMpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNS
ZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1C
bG9ja0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKLSAgICBpZiAoc2VuZFJlc3Vs
dCkKLSAgICAgICAgbWVtY3B5KHBhcmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFt
cy5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKLSAgICAKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9ncmFtLCB1
bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdjo6UmVwbHkocGFyYW1z
UmVwbHkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5
KHBhcmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6ZW9m
KGludDMyX3QpKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkKIHsKICAgICBpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkI6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmJsaXRGcmFtZWJ1ZmZlckFOR0xFKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAs
IEdDR0xpbnQgc3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0
WTAsIEdDR0xpbnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dM
ZW51bSBmaWx0ZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kxLCBkc3RY
MCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Qmxp
dEZyYW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZ
MCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAg
ICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2VN
dWx0aXNhbXBsZUFOR0xFKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7CiAgICAgdWludDMy
X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUygpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUygpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTOjpSZXBseShy
ZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVl
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFy
cmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5T0VTKGFyZzApLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQog
fQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFy
cmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNW
ZXJ0ZXhBcnJheU9FUyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1ZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpJc1ZlcnRleEFycmF5T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVl
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJy
YXlPRVMoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJnMCksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAog
U3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgU3RyaW5nIHJldHVyblZh
bHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKGFyZzApLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZUFOR0xFKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRTo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjppbnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBTdHJpbmcm
IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklu
c2VydEV2ZW50TWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtl
ckVYVChhcmcwKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpwdXNoR3JvdXBNYXJrZXJFWFQoY29uc3QgU3RyaW5nJiBhcmcwKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQdXNoR3JvdXBN
YXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAo
IW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChhcmcwKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojpwb3BHcm91cE1hcmtlckVYVCgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlBvcEdyb3VwTWFya2VyRVhUKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlBvcEdy
b3VwTWFya2VyRVhUKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnNFWFQoR0NHTFNwYW48Y29uc3QgR0NHTGVu
dW0+IGJ1ZnMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RHJhd0J1ZmZlcnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6ZSkp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZp
cnN0LCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRShtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTHNpemVpIGNvdW50LCBH
Q0dMZW51bSB0eXBlLCBHQ0dMdm9pZHB0ciBvZmZzZXQsIEdDR0xzaXplaSBwcmltY291bnQpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
b2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBw
cmltY291bnQpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHQ0dMdWludCBpbmRleCwg
R0NHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluZGV4LCBkaXZpc29yKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2Fz
TG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpCiB7CiAgICAgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXNSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVy
bmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIHBhcmFtcy5idWZTaXpl
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlcm5hbGZvcm1hdGl2
OjpSZXBseShwYXJhbXNSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKLSAgICBpZiAoc2VuZFJlc3VsdCkKLSAgICAgICAgbWVtY3B5KHBhcmFtcy5kYXRhLCBwYXJh
bXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKLSAgICAK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlcm5hbGZv
cm1hdGl2KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBwYXJhbXMuYnVmU2l6ZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZXJuYWxmb3JtYXRpdjo6UmVw
bHkocGFyYW1zUmVwbHkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgbWVtY3B5KHBhcmFtcy5kYXRhLCBwYXJhbXNSZXBseS5kYXRhKCksIHBhcmFtcy5idWZTaXpl
ICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogcGl4ZWxzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQ
SS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNw
cAppbmRleCAwM2NiNzEwZjA1OTZiZDY2MzFjZTJjZDFhZDc2MzViODdmNGVjY2I1Li5iZjk4MGIz
NDBkZTA5MWQyOGJkZTk3NDRiNDg2MDFmY2ZjNjJiOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcApAQCAtMzEyLDcgKzMxMiw3
IEBAIHN0YXRpYyBib29sIGVuY29kZVR5cGVkQXJyYXkoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1CiAgICAgaWYgKCFidWZmZXJTaXplKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIpLCBidWZmZXJTaXplLCAxKTsKKyAg
ICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihidWZmZXIpLCBidWZmZXJTaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc4OGEzNDQ0
OGM5NWE3OWY1MWZkZjFhNmI1YzM4MmMyOWJkMmVlODguLjk3N2IxZDMxN2VkNGUyYzkyOWZlM2I2
N2I2ZjVmNGVjOTBhYzcxM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0xMi0wOCAgS2ltbW8gS2lubnVuZW4g
IDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIEdQVSBwcm9jZXNzIElQQyBz
aG91bGQgYmUgZmFzdGVyIHRoYW4gY3VycmVudCBXZWJLaXQgSVBDCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZ2VuZXJhdGUtZ3B1cC13ZWJn
bCB0byBnZW5lcmF0ZSBzZW5kIGNhbGxzIGZvciBzZW5kaW5nIHN0cmVhbQorICAgICAgICBtZXNz
YWdlcy4gU3RyZWFtIG1lc3NhZ2VzIGhhdmUgaW1wbGllZCBkZXN0aW5hdGlvbiwgc28gZGVzdGlu
YXRpb24gaWQKKyAgICAgICAgZG9lcyBub3QgbmVlZCB0byBiZSBwYXJ0IG9mIHNlbmQgbWV0aG9k
IGNhbGwuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIwMjAt
MTItMTQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIE1l
ZGlhRm9ybWF0UmVhZGVyLmJ1bmRsZSBmYWlscyB0byBsb2FkIGluIFdlYktpdFRlc3RSdW5uZXIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCBmMTZiNDIyMjljZjJmODI4YzY2YzdlN2I0
MTc3M2MyZWJlNDQzMTE0Li43MDA0NTVmNjQ1NDExNTRmOTUzZGJhMWE1MDU4YzI2NmNjMzFiZTdi
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9v
bHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC04OSw3ICs4OSw3IEBAIGNvbnRleHRf
bWVzc2FnZXNfdGVtcGxhdGUgPSAoCiAgICAgdGVtcGxhdGVfcHJlYW1ibGUKICAgICArICIiIiNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworbWVzc2FnZXMgLT4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFJlc2hh
cGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZm
ZXIpIFN5bmNocm9ub3VzCkBAIC05OSw2ICs5OSw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQge3sKICNlbmRpZgogICAgIHZvaWQgRW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChTdHJpbmcgZXh0ZW5zaW9uKQogICAgIHZvaWQgTm90aWZ5TWFya0NvbnRl
eHRDaGFuZ2VkKCkKKyAgICB2b2lkIFN0cmVhbVdha2VVcCgpIFdhbnRzQ29ubmVjdGlvbiAvLyBU
T0RPOiB0aGlzIHNob3VsZCBiZSBtb3ZlZCB0byBtZXNzYWdlcy5weQoge30KIH19CiAKQEAgLTU4
NSwyMiArNTg2LDI2IEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToK
ICAgICAgICAgaW5fZXhwcnMgPSAiLCAiLmpvaW4oW3N0cihpKSBmb3IgaSBpbiBzZWxmLmluX2V4
cHJzXSkKICAgICAgICAgb3V0X2V4cHJzID0gIiwgIi5qb2luKHN0cihvKSBmb3IgbyBpbiBzZWxm
Lm91dF9leHBycykKICAgICAgICAgaXNfYXN5bmMgPSBzZWxmLnJldHVybl90eXBlLmlzX3ZvaWQo
KSBhbmQgbGVuKG91dF9leHBycykgPT0gMAorICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWyAi
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7IiBdCiAgICAgICAgIGlmIGlzX2FzeW5jOgogICAgICAg
ICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKLSAgICAgICAgICAgICAgICBmInNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsiLAorICAgICAgICAgICAgICAgIGYiICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ojp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIGRlZmF1bHRTZW5kVGltZW91dCk7IiwKICAg
ICAgICAgICAgIF0KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gIiIK
LSAgICAgICAgICAgIGlmIHNlbGYucG9zdF9jYWxsX3N0bXRzOiAKLSAgICAgICAgICAgICAgICBz
ZW5kX3Jlc3VsdCA9ICJhdXRvIHNlbmRSZXN1bHQgPSAiCi0gICAgICAgICAgICAgICAgc2VsZi5w
b3N0X2NhbGxfc3RtdHMgPSBbCi0gICAgICAgICAgICAgICAgICAgICJpZiAoc2VuZFJlc3VsdCki
ICsgKCIgeyIgaWYgbGVuKHNlbGYucG9zdF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKLSAgICAg
ICAgICAgICAgICBdICsgWyIgICAgIiArIHMgZm9yIHMgaW4gc2VsZi5wb3N0X2NhbGxfc3RtdHNd
ICsgWwotICAgICAgICAgICAgICAgICAgICAoIn0iIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10
cykgPiAxIGVsc2UgIiIpCi0gICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgc2VsZi5jYWxs
X3N0bXRzICs9IFsKLSAgICAgICAgICAgICAgICBmIntzZW5kX3Jlc3VsdH1zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX06OlJl
cGx5KHtvdXRfZXhwcnN9KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOyIs
CisgICAgICAgICAgICAgICAgZiIgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9OjpSZXBs
eSh7b3V0X2V4cHJzfSksIGRlZmF1bHRTZW5kVGltZW91dCk7IgorICAgICAgICAgICAgXQorICAg
ICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWworICAgICAgICAgICAgIiAgICBpZiAoIXNlbmRSZXN1
bHQpIiwKKyAgICAgICAgICAgICIgICAgICAgIHdhc0xvc3QoKTsiLAorICAgICAgICBdCisgICAg
ICAgIGlmIHNlbGYucG9zdF9jYWxsX3N0bXRzOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRz
ICs9IFsKKyAgICAgICAgICAgICAgICAiICAgIGVsc2UgeyIKICAgICAgICAgICAgIF0KKyAgICAg
ICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gWyAiICAgICIgKyBsIGZvciBsIGluIHNlbGYu
cG9zdF9jYWxsX3N0bXRzIF0KKyAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFsg
IiAgICB9IiBdCisgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFsgIn0iIF0KIAogCiAg
ICAgZGVmIHByb2Nlc3NfaW5fYXJncyhzZWxmLCBpbl9hcmdzOiBMaXN0W2NwcF9hcmddKToKQEAg
LTYyMSw4ICs2MjYsOCBAQCBjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgc2VsZi5vdXRfZXhwcnMgKz0gW2VdCiAgICAgICAgICAgICAgICAg
c2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0gWwogICAgICAgICAgICAgICAgICAgICAjZm10OiBvZmYK
LSAgICAgICAgICAgICAgICAgICAgZiJpZiAoe28ubmFtZX0pIiwKLSAgICAgICAgICAgICAgICAg
ICAgZiIgICAgKntvLm5hbWV9ID0ge3dlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHZhbHVlX3R5
cGUpfTsiCisgICAgICAgICAgICAgICAgICAgIGYiICAgIGlmICh7by5uYW1lfSkiLAorICAgICAg
ICAgICAgICAgICAgICBmIiAgICAgICAgKntvLm5hbWV9ID0ge3dlYmtpdF9pcGNfY29udmVydF9l
eHByKGUsIHZhbHVlX3R5cGUpfTsiCiAgICAgICAgICAgICAgICAgICAgICNmbXQ6IG9uCiAgICAg
ICAgICAgICAgICAgXQogICAgICAgICAgICAgZWxpZiBvLnR5cGUuaXNfc3BhbigpOgpAQCAtNjM0
LDcgKzYzOSw3IEBAIGNsYXNzIHdlYmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKICAg
ICAgICAgICAgICAgICBpZiBvLnR5cGUuaXNfZHluYW1pY19zcGFuKCk6CiAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuaW5fZXhwcnMgKz0gW2NwcF9leHByKGdldF9jcHBfdHlwZSgic2l6ZV90Iiks
IGYie28ubmFtZX0uYnVmU2l6ZSIpXQogICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0
bXRzICs9IFsKLSAgICAgICAgICAgICAgICAgICAgZiJtZW1jcHkoe28ubmFtZX0uZGF0YSwge3Yu
bmFtZX0uZGF0YSgpLCB7by5uYW1lfS5idWZTaXplICogc2l6ZW9mKHtzdHIod2Via2l0X2lwY190
eXBlLmdldF9jb250YWluZWRfdHlwZSgpKX0pKTsiCisgICAgICAgICAgICAgICAgICAgIGYiICAg
IG1lbWNweSh7by5uYW1lfS5kYXRhLCB7di5uYW1lfS5kYXRhKCksIHtvLm5hbWV9LmJ1ZlNpemUg
KiBzaXplb2Yoe3N0cih3ZWJraXRfaXBjX3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkpfSkpOyIK
ICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNl
bGYub3V0X2V4cHJzICs9IFtjcHBfZXhwcihvLnR5cGUsIG8ubmFtZSldCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418406</attachid>
            <date>2021-01-26 06:01:00 -0800</date>
            <delta_ts>2021-02-01 13:06:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210126160057.patch</filename>
            <type>text/plain</type>
            <size>65114</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ5MjhlNTRlNTE4ODljMmZmMmRhNWM2
ZGY4YmMxYzM4YWE1OTczYzIuLjY1NmUyM2U4MDEzOTk2M2E0ZjU4ZjcwNWIzMzMxY2M3OTc3YTVi
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDEtMjYgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBNYWNoU2VtYXBob3JlIGRvZXMgbm90IHdvcmsg
d2VsbCB3aXRoIElQQyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIwOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdu
bWVudCBvcGVyYXRvciBmb3IgTWFjaFNlbWFwaG9yZS4KKyAgICAgICAgTWFrZXMgaXQgcG9zc2li
bGUgdG8gY3JlYXRlIHR5cGVzIHRoYXQgaG9sZCBNYWNoU2VtYXBob3JlIGJ1dCBzdGlsbAorICAg
ICAgICBhcmUgZGVjb2RlKClhYmxlIGZyb20gYSBJUEMgbWVzc2FnZS4gVGhlIGRlY29kZWQgb2Jq
ZWN0cyBhcmUgaGVsZCB3aXRoCisgICAgICAgIE9wdGlvbmFsLCBhbmQgdGhpcyBmb3JjZXMgdGhl
IHN1Ym9iamVjdHMgdG8gaGF2ZSBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCisKKyAgICAgICAg
QWRkIGFzc2VydHMgdGhhdCB0aGUgbW92ZWQtYXdheSBvYmplY3QgaXMgbm90IHVzZWQuCisgICAg
ICAgIEFkZCB0aGUgYXNzZXJ0cyBhcyBhc3NlcnRzIG9uIHRoZSBjYWxsIHJldHVybiB2YWx1ZXMs
IHNvIHRoZSB2YWx1ZXMKKyAgICAgICAgYXJlIGFsc28gY2hlY2tlZCBvbiBub3JtYWwgb2JqZWN0
cyBvbiBub3JtYWwgb3BlcmF0aW9uLgorCisgICAgICAgICogd3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuY3BwOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKToKKyAg
ICAgICAgKFdURjo6TWFjaFNlbWFwaG9yZTo6fk1hY2hTZW1hcGhvcmUpOgorICAgICAgICAoV1RG
OjpNYWNoU2VtYXBob3JlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3Jl
OjpzaWduYWwpOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAg
KFdURjo6TWFjaFNlbWFwaG9yZTo6d2FpdEZvcik6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhv
cmU6OmNyZWF0ZVNlbmRSaWdodCBjb25zdCk6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6
OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg6CisgICAgICAg
IChXVEY6Ok1hY2hTZW1hcGhvcmU6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorCiAyMDIxLTAxLTI1
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBBYm9y
dFNpZ25hbCBpbiBhZGRFdmVudExpc3RlbmVyT3B0aW9ucyB0byB1bnN1YnNjcmliZSBmcm9tIGV2
ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBhY2IwMGUzNjI2ZDJkZDZlNWRlNjFhMjMyYzU1MDViMmRmMjY3ZTEx
Li5lZmM0ZDBmYTU5MDliYzYzOTJkMmNmNjVmOGE3ODU3MjA4OTFlMTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwOSBAQAorMjAyMS0wMS0yNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIE1hY2hTZW1hcGhvcmUgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGgg
SVBDIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjA5MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnQgYW4gZW5jb2RlciBhbmQgZGVjb2RlciBmb3IgV1RGOjpNYWNoU2VtYXBo
b3JlLiBNYWtlcyBpdCBwb3NzaWJsZSB0byBzZW5kIGl0CisgICAgICAgIHZpYSBJUEMgYXMgaXRz
IG93biB0eXBlLCBub3QgYXMgTWFjaFNlbmRSaWdodC4KKworICAgICAgICBBcyBhbiBleGFtcGxl
LCBjaGFuZ2VzIGV4aXN0aW5nIHVzZXMgb2YgTWFjaFNlbmRSaWdodCBmb3Igc2VtYXBob3JlcyBp
biBtZXNzYWdlcyBhcworICAgICAgICBNYWNoU2VtYXBob3JlcywgZGVzY3JpYmVkIGJlbG93Lgor
CisgICAgICAgIENoYW5nZXMgUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5IHRvIHNlbmQgaXRz
IG93biBzZW1hcGhvcmUgZnJvbQorICAgICAgICBXZWJQcm9jZXNzIHRvIEdQVVByb2Nlc3MuIFBy
ZXZpb3VzbHkgdGhlIHNlbWFwaG9yZSB3b3VsZCBiZSBzZW50IGJhY2sgYnkKKyAgICAgICAgUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuIFByZXZpb3VzbHkgdGhlIGNvZGUgc3RydWN0dXJl
IGlzIG1vcmUKKyAgICAgICAgY29tcGxpY2F0ZWQgdGhhbiBuZWNjZXNzYXJ5LCBhcyB0aGUgc2Vt
YXBob3JlIGhvbGRlciB3YXMgYmVpbmcKKyAgICAgICAgbnVsbC1jaGVja2VkLCByZXNldCBhbmQg
cmUtc2VhdGVkLiBUaGUgV2ViUHJvY2VzcyBnZXRzIGFscmVhZHkgdG8gY2hvb3NlCisgICAgICAg
IHRoZSBzZW1hcGhvcmVzIEdQVVByb2Nlc3MgdXNlcywgc28gdGhpcyBzaG91bGQgbm90IGluY3Jl
YXNlIHNlY3VyaXR5CisgICAgICAgIHN1cmZhY2UuIFRoZSBjaGFuZ2UgY2hvc2VuIGhlcmUgc2lk
ZS1zdGVwcyB0aGUgc2hvcnRjb21pbmcgb2YgdGhlIElQQworICAgICAgICBzeXN0ZW0gd2hlcmUg
dW5wYWNraW5nIG9iamVjdHMgZnJvbSB0aGUgUmVwbHkgbWVzc2FnZXMgbWFuZGF0ZXMgdGhhdCBh
CisgICAgICAgIGNvbnN0cnVjdGVkIHZlcnNpb24gb2YgdGhhdCB0eXBlIGV4aXN0cy4gRm9yIHBy
ZXZpb3VzIE1hY2hTZW5kUmlnaHQKKyAgICAgICAgZW1wdHktY29uc3RydWN0ZWQgb2JqZWN0IGlz
IHNpbXBsZSwgYnV0IGZvciBNYWNoU2VtYXBob3JlCisgICAgICAgIGVtcHR5LWNvbnN0cnVjdGVk
IG9iamVjdCBjcmVhdGVzIHVubmVjZXNzYXJ5IGNvbXBsaWNhdGlvbiB0aGF0IGlzIG5vdAorICAg
ICAgICByZXF1aXJlZCBvdGhlcndpc2UgYXQgdGhlIG1vbWVudC4gVGhlIGFsdGVybmF0aXZlIHRv
IHdoYXQgd2FzIGNob3NlbgorICAgICAgICBoZXJlIHdvdWxkIGJlIHRvIGhvbGQgd2l0aCBPcHRp
b25hbDxNYWNoU2VtYXBob3JlPiBhbmQgYWRkIGEKKyAgICAgICAgZW1wdHktaW5pdGlhbGl6aW5n
IGNvbnN0cnVjdG9yIHRvIGhvbGQgdGhlIG9iamVjdCB3aGVyZSB0byB1bnBhY2sgdGhlCisgICAg
ICAgIHNlbWFwaG9yZSBvYmplY3QgZnJvbSB0aGUgUmVwbHkuCisKKyAgICAgICAgQ2hhbmdlcyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHRvIHJlY2VpdmUgaXRzIHBhcmFtZXRlcnMgZnJvbSB0aGUg
bm9ybWFsCisgICAgICAgIG1lc3NhZ2UgcGFyYW1ldGVycyBpbnN0ZWFkIG9mIHJlZHVuZGFudAor
ICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLiBUaGUgSVBD
IGdlbmVyYXRvciBhbHJlYWR5CisgICAgICAgIGdlbmVyYXRlcyAxOjEgaWRlbnRpY2FsIHN0cnVj
dHVyZSwgaXQgaXMganVzdCB0aGUgbWVzc2FnZQorICAgICAgICBNZXNzYWdlczo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlUmVuZGVyaW5nQmFja2VuZC4gVGhlcmUgaXMgbm8KKyAg
ICAgICAgbmVlZCB0byBkb3VibGUtd3JhcCB0aGUgc2ltcGxlIGxpc3Qgb2YgcGFyYW1ldGVycy4g
VGhlIGRvdWJsZS13cmFwcGluZworICAgICAgICBpcyBhIHByb2JsZW06IFRoZSBtZXNzYWdlIHN5
c3RlbSBwYXJhbWV0ZXJzIGFyZSBvZiBvd25lcnNoaXAgImNvbnN0CisgICAgICAgIHJlZmVyZW5j
ZSIsIHdoaWNoIGlzIHdoYXQgaXMgZXhwZWN0ZWQuCisgICAgICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgY29udGVudHMgd2VyZSBvZiBvd25lcnNoaXAKKyAgICAg
ICAgInZhbHVlIiwgd2hpY2ggd29ya3MgYXMgZXhwZWN0ZWQgb25seSBmb3Igc2ltcGxlIHByaW1p
dGl2ZSB0eXBlcy4KKyAgICAgICAgRXNzZW50aWFsbHkgcHJldmlvdXNseSBjYWxsaW5nIHRoZSBJ
UEMgZnVuY3Rpb24gbWVhbnQgdHJhbnNmZXJpbmcKKyAgICAgICAgb2JqZWN0cyB0byBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLiBUaGlzIGlzIG5vdCBob3cgdGhlCisg
ICAgICAgIElQQyBzeXN0ZW0gaXMgbWVhbnQgdG8gd29yay4gVGhlIGludGVudGlvbiBvZiBhIElQ
QyBjYWxsIGlzIHRvLCBieQorICAgICAgICBkZWZhdWx0LCByZWZlcmVuY2UgaXRzIGFyZ3VtZW50
cyBmb3IgdGhlIHB1cnBvc2Ugb2YgZW5jb2RpbmcuIFRoZSBwYXRjaAorICAgICAgICB0cmllcyB0
byBhY2hpZXZlIGEgYml0IHRoZSBzYW1lIGdvYWwgYXMgdGhlIG9yaWdpbmFsCisgICAgICAgIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgcHJlc3VtYWJseSBoYWQsIGku
ZS4gdG8gYXZvaWQKKyAgICAgICAgcHJvYmxlbXMgd2l0aCAjaWYgUExBVEZPUk0oQ09DT0EpLSNl
bHNlIGluIG1ldGhvZCBkZWNsYXJhdGlvbnMgYW5kCisgICAgICAgIGRlZmluaXRpb25zLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
QWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cyk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlv
RGVzdGluYXRpb246OlJlbW90ZUF1ZGlvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRlQXVkaW9EZXN0aW5hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxldGVBdWRp
b0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1h
bmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1
ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpzdG9wQXVkaW9EZXN0aW5hdGlvbik6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW46CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdHMvTWFrZWZpbGU6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVz
c2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcDoKKyAgICAgICAgKElQQzo6anNWYWx1ZUZvckFy
Z3VtZW50cyk6CisgICAgICAgIChJUEM6Om1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucyk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcDoKKyAgICAgICAg
KElQQzo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoSVBDOjpyZWNlaXZlck5hbWUpOgorICAgICAg
ICAoSVBDOjppc1ZhbGlkTWVzc2FnZU5hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoTWFjaFNlbWFwaG9yZS5tZXNzYWdlcy5pbjogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4uCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2Vp
dmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6
ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aE1hY2hTZW1hcGhv
cmU6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgIChNZXNz
YWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OlNlbmRTZW1hcGhvcmU6Om5hbWUp
OgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFwaG9y
ZTo6U2VuZFNlbWFwaG9yZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBo
b3JlOjpTZW5kU2VtYXBob3JlOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6
OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6UmVjZWl2ZVNlbWFwaG9yZTo6bmFtZSk6CisgICAgICAg
IChNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjphcmd1
bWVudHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFj
aFNlbWFwaG9yZU1lc3NhZ2VzUmVwbGllcy5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8V1RGOjpNYWNoU2VtYXBob3JlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXVEY6Ok1hY2hTZW1hcGhvcmU+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmg6IFJlbW92ZWQuCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5OjpzdGFydFJlbmRl
cmluZ1RocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94
eTo6c3RvcFJlbmRlcmluZ1RocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVz
dGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblBy
b3h5Lmg6CisKIDIwMjEtMDEtMjYgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWJHTCBwb3dlciBwcmVmZXJlbmNlIGFuZCBkaXNjcmV0ZS9pbnRlcm5h
bCBncHUgc2VsZWN0aW9uIGltcGxlbWVudGVkIGluY29ycmVjdGx5IHdpdGggQU5HTEUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAKaW5kZXggOTJmY2YxNWMwN2Q5MjRhNDUwNzkz
N2ZkMjMwNDU3MmM0ZGJiYjk2Ni4uNmZiMzU3N2VhZDM4NDhjZjgwYzA4NTg4MWM3ZTZhZTE3Y2Uz
Y2QzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5jcHAKQEAgLTM2LDYgKzM2
LDEyIEBAIE1hY2hTZW1hcGhvcmU6Ok1hY2hTZW1hcGhvcmUoKQogICAgIEFTU0VSVF9VTlVTRUQo
cmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKIH0KIAorTWFjaFNlbWFwaG9yZTo6TWFjaFNlbWFw
aG9yZShNYWNoU2VtYXBob3JlJiYgb3RoZXIpCisgICAgOiBtX3NlbmRSaWdodChXVEZNb3ZlKG90
aGVyLm1fc2VuZFJpZ2h0KSkKKyAgICAsIG1fc2VtYXBob3JlKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIu
bV9zZW1hcGhvcmUsIFNFTUFQSE9SRV9OVUxMKSkKK3sKK30KKwogTWFjaFNlbWFwaG9yZTo6TWFj
aFNlbWFwaG9yZShNYWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0KQogICAgIDogbV9zZW5kUmlnaHQo
V1RGTW92ZShzZW5kUmlnaHQpKQogICAgICwgbV9zZW1hcGhvcmUobV9zZW5kUmlnaHQuc2VuZFJp
Z2h0KCkpCkBAIC00NSwyOSArNTEsNTYgQEAgTWFjaFNlbWFwaG9yZTo6TWFjaFNlbWFwaG9yZShN
YWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0KQogCiBNYWNoU2VtYXBob3JlOjp+TWFjaFNlbWFwaG9y
ZSgpCiB7Ci0gICAgaWYgKCFtX3NlbmRSaWdodCkKLSAgICAgICAgc2VtYXBob3JlX2Rlc3Ryb3ko
bWFjaF90YXNrX3NlbGYoKSwgbV9zZW1hcGhvcmUpOworICAgIGRlc3Ryb3koKTsKK30KKworTWFj
aFNlbWFwaG9yZSYgTWFjaFNlbWFwaG9yZTo6b3BlcmF0b3I9KE1hY2hTZW1hcGhvcmUmJiBvdGhl
cikKK3sKKyAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgZGVzdHJveSgpOworICAg
ICAgICBtX3NlbmRSaWdodCA9IFdURk1vdmUob3RoZXIubV9zZW5kUmlnaHQpOworICAgICAgICBt
X3NlbWFwaG9yZSA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9zZW1hcGhvcmUsIFNFTUFQSE9SRV9O
VUxMKTsKKyAgICB9CisKKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKIHZvaWQgTWFjaFNlbWFwaG9y
ZTo6c2lnbmFsKCkKIHsKLSAgICBzZW1hcGhvcmVfc2lnbmFsKG1fc2VtYXBob3JlKTsKKyAgICBh
dXRvIHJldCA9IHNlbWFwaG9yZV9zaWduYWwobV9zZW1hcGhvcmUpOworICAgIEFTU0VSVF9VTlVT
RUQocmV0LCByZXQgPT0gS0VSTl9TVUNDRVNTKTsKIH0KIAogdm9pZCBNYWNoU2VtYXBob3JlOjp3
YWl0KCkKIHsKLSAgICBzZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9yZSk7CisgICAgYXV0byByZXQg
PSBzZW1hcGhvcmVfd2FpdChtX3NlbWFwaG9yZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJl
dCA9PSBLRVJOX1NVQ0NFU1MpOwogfQogCiB2b2lkIE1hY2hTZW1hcGhvcmU6OndhaXRGb3IoU2Vj
b25kcyB0aW1lb3V0KQogewogICAgIGF1dG8gc2Vjb25kcyA9IHRpbWVvdXQuc2Vjb25kc0FzPHVu
c2lnbmVkPigpOwotICAgIHNlbWFwaG9yZV90aW1lZHdhaXQobV9zZW1hcGhvcmUsIHsgc2Vjb25k
cywgc3RhdGljX2Nhc3Q8Y2xvY2tfcmVzX3Q+KHRpbWVvdXQubmFub3NlY29uZHNBczx1aW50NjRf
dD4oKSAtIHNlY29uZHMgKiBOU0VDX1BFUl9TRUMpIH0pOworICAgIGF1dG8gcmV0ID0gc2VtYXBo
b3JlX3RpbWVkd2FpdChtX3NlbWFwaG9yZSwgeyBzZWNvbmRzLCBzdGF0aWNfY2FzdDxjbG9ja19y
ZXNfdD4odGltZW91dC5uYW5vc2Vjb25kc0FzPHVpbnQ2NF90PigpIC0gc2Vjb25kcyAqIE5TRUNf
UEVSX1NFQykgfSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1Mg
fHwgcmV0ID09IEtFUk5fT1BFUkFUSU9OX1RJTUVEX09VVCk7CiB9CiAKLU1hY2hTZW5kUmlnaHQg
TWFjaFNlbWFwaG9yZTo6Y3JlYXRlU2VuZFJpZ2h0KCkKK01hY2hTZW5kUmlnaHQgTWFjaFNlbWFw
aG9yZTo6Y3JlYXRlU2VuZFJpZ2h0KCkgY29uc3QKIHsKICAgICByZXR1cm4gTWFjaFNlbmRSaWdo
dDo6Y3JlYXRlKG1fc2VtYXBob3JlKTsKIH0KIAordm9pZCBNYWNoU2VtYXBob3JlOjpkZXN0cm95
KCkKK3sKKyAgICBpZiAobV9zZW5kUmlnaHQpIHsKKyAgICAgICAgbV9zZW5kUmlnaHQgPSBNYWNo
U2VuZFJpZ2h0KCk7CisgICAgICAgIG1fc2VtYXBob3JlID0gU0VNQVBIT1JFX05VTEw7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fc2VtYXBob3JlID09IFNFTUFQSE9SRV9OVUxM
KQorICAgICAgICByZXR1cm47CisgICAgYXV0byByZXQgPSBzZW1hcGhvcmVfZGVzdHJveShtYWNo
X3Rhc2tfc2VsZigpLCBtX3NlbWFwaG9yZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9
PSBLRVJOX1NVQ0NFU1MpOworICAgIG1fc2VtYXBob3JlID0gU0VNQVBIT1JFX05VTEw7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTWFj
aFNlbWFwaG9yZS5oIGIvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCmluZGV4
IGJlN2NlYTA0NmI4MTJjYmMzZWIzYTcyMTMwZDlhNWJhMDA5M2Y5MmYuLjRiNWRiNzRlNzE2YzMy
OGY3N2IyNjJkYjlkM2IwY2MxNWNkOTA3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL01hY2hTZW1hcGhvcmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBo
b3JlLmgKQEAgLTM3LDE2ICszNywyMCBAQCBjbGFzcyBNYWNoU2VtYXBob3JlIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShNYWNoU2VtYXBob3JlKTsKIHB1YmxpYzoKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgTWFjaFNlbWFwaG9yZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBNYWNoU2Vt
YXBob3JlKE1hY2hTZW1hcGhvcmUmJik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0
IE1hY2hTZW1hcGhvcmUoTWFjaFNlbmRSaWdodCYmKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
fk1hY2hTZW1hcGhvcmUoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFjaFNlbWFwaG9yZSYg
b3BlcmF0b3I9KE1hY2hTZW1hcGhvcmUmJik7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzaWduYWwoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWl0KCk7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdEZvcihTZWNvbmRzKTsKIAotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBNYWNoU2VuZFJpZ2h0IGNyZWF0ZVNlbmRSaWdodCgpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBNYWNoU2VuZFJpZ2h0IGNyZWF0ZVNlbmRSaWdodCgpIGNvbnN0OwogCisgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VuZFJpZ2h0IHx8IG1fc2Vt
YXBob3JlICE9IFNFTUFQSE9SRV9OVUxMOyB9CiBwcml2YXRlOgorICAgIHZvaWQgZGVzdHJveSgp
OwogICAgIE1hY2hTZW5kUmlnaHQgbV9zZW5kUmlnaHQ7CiAgICAgc2VtYXBob3JlX3QgbV9zZW1h
cGhvcmUgeyBTRU1BUEhPUkVfTlVMTCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA5MDA1NjY5NGE1
MzAwZGMzYThiZmRkMWVlMzBlYzE2YmQ4ZWJkZWE4Li45ZGY4ZDE2MjFmMzQwNWNlOWNiN2QyNGM3
OTlhNzBlOGQwMDhlMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVk
ZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oIgotI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWVzc2FnZXMuaCIKQEAg
LTI5MSwxMCArMjkwLDE4IEBAIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5JiBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjphdWRpb1Nlc3Npb25Qcm94eSgpCiB9CiAjZW5kaWYKIAotdm9pZCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIGlkZW50aWZpZXIKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAsIE1hY2hT
ZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZQorI2VuZGlmCisgICAgKQogewot
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShw
YXJhbWV0ZXJzLmlkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNy
ZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0oKSB7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyPihS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIHsKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUpCisjZW5kaWYKKyAgICAgICAgfSkpOwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA0NDE4Y2E2
YWVhMmE0MDhlMzc3NTM4OTBlMWQzMGRkZWM3NmVjN2NhLi5iNmEyNGNiMzIwYTM2M2U3ZTlmZWRk
NDNkMjkwNjM1OTY0OTUwNjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTY1LDcgKzY1LDYgQEAgY2xhc3MgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w7CiBjbGFzcyBSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJNYW5hZ2VyOwogY2xhc3MgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKIHN0cnVjdCBS
ZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uOwotc3RydWN0IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MKICAgICA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPgpAQCAtMTI3LDcgKzEyNiwxMSBA
QCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFj
a2VuZChSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIHZvaWQgY3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciwgTWFjaFNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBo
b3JlKTsKKyNlbHNlCisgICAgdm9pZCBjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKKyNlbmRpZgogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tl
bmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5BQkxFKFdFQkdMKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwY2JjNWQ4Nzk4M2U2NjZlNDhlODM5YTY0NjQ4
OTg3OTUwYTM5MmJmLi4xZTQ5YjMzZWNmNmE1MzE1YzJiMWE0Mjk4ZTJkNDE3MjU5MmQyYTMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsMTIgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
V2FudHNEaXNwYXRjaE1lc3NhZ2UgewotICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChz
dHJ1Y3QgV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzIHBh
cmFtZXRlcnMpCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdC
YWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgaWRlbnRpZmllciwgTWFj
aFNlbWFwaG9yZSByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKKyNlbmRpZgorI2lmICFQTEFU
Rk9STShDT0NPQSkKKyAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyKQorI2VuZGlmCiAgICAgdm9pZCBSZWxl
YXNlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIENy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4
IDMyYWZkMzEwYmU1YzMwMzA2NDdkNzI1OGMyM2ZkYTAxMDJiMmQ3NzUuLmYwODY5OTFlZjFkY2I0
MTU3MGM0MGJhYmI4Nzc5NzJkMDNjODgyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAg
LTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJSZW1v
dGVNZWRpYVBsYXllclByb3h5LmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CkBAIC02NSwxNyArNjQsMTcgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitSZWY8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZD4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYgcGFyYW1z
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgaWRlbnRpZmllciwgV1RGTW92ZShwYXJhbXMpKSk7CiB9CiAKLVJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFBsYXRmb3JtQ3JlYXRlUGFyYW1zJiYgcGFyYW1zKQogICAgIDogbV93b3JrUXVldWUoV29ya1F1
ZXVlOjpjcmVhdGUoIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgd29yayBxdWV1ZSIsIFdvcmtRdWV1
ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXNlckludGVyYWN0aXZlKSkKICAgICAs
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQot
ICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcihwYXJhbWV0ZXJzLmlkZW50aWZpZXIp
CisgICAgLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKGlkZW50aWZpZXIpCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgLCBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKG1ha2VVbmlx
dWU8TWFjaFNlbWFwaG9yZT4oV1RGTW92ZShwYXJhbWV0ZXJzLnNlbmRSaWdodEZvclJlc3VtZURp
c3BsYXlMaXN0U2VtYXBob3JlKSkpCisgICAgLCBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KFdURk1vdmUocGFyYW1zLnJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSkKICNlbmRpZgogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC0yMzEsNyArMjMwLDcgQEAgUmVmUHRy
PEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlckFmdGVyQXBwbHkKIAogICAgICAgICAgICAgaGFuZGxlLnN0YXJ0V2FpdGluZygpOwog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICAgICAgbV9yZXN1bWVEaXNwbGF5TGlzdFNlbWFw
aG9yZS0+d2FpdEZvcigzMF91cyk7CisgICAgICAgICAgICBtX3Jlc3VtZURpc3BsYXlMaXN0U2Vt
YXBob3JlLndhaXRGb3IoMzBfdXMpOwogI2Vsc2UKICAgICAgICAgICAgIHNsZWVwKDMwX3VzKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggZTYzODk5MDNiNjUwYmE4ZDk3M2RhZjli
M2RjY2E2NDUzNTZmNDVmOC4uODBjM2UyNDQyNjI2MmJkOWJhNDk1MTg5ZmJlZmE0MzJkMWM4MWRj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC00Miw5ICs0Miw3IEBACiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotbmFtZXNwYWNlIFdURiB7Ci1jbGFz
cyBNYWNoU2VtYXBob3JlOwotfQorI2luY2x1ZGUgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjIsMTQgKzYwLDE4IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZTsKIGNsYXNzIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci1zdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZAogICAgIDog
cHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICAsIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246
OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcgogICAgICwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgc3RydWN0
IFBsYXRmb3JtQ3JlYXRlUGFyYW1zIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgTWFj
aFNlbWFwaG9yZSByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKKyNlbmRpZgorICAgIH07Cisg
ICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBQbGF0Zm9ybUNyZWF0
ZVBhcmFtcyYmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CiAKICAg
ICBSZW1vdGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4gbV9y
ZW1vdGVSZXNvdXJjZUNhY2hlOyB9CkBAIC04Niw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpc2Nvbm5lY3QoKTsKIAogcHJpdmF0ZToKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBQbGF0Zm9ybUNyZWF0ZVBh
cmFtcyYmKTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxl
PiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGUsIHVpbnQ4X3QqIGhhbmRs
ZUxvY2F0aW9uKSBvdmVycmlkZTsKIApAQCAtMTQ5LDcgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAg
SGFzaE1hcDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFJlZlB0
cjxEaXNwbGF5TGlzdFJlYWRlckhhbmRsZT4+IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzOwog
ICAgIE9wdGlvbmFsPFBlbmRpbmdXYWtldXBJbmZvcm1hdGlvbj4gbV9wZW5kaW5nV2FrZXVwSW5m
bzsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpNYWNoU2Vt
YXBob3JlPiBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOworICAgIFdURjo6TWFjaFNlbWFw
aG9yZSBtX3Jlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyLmNwcAppbmRleCAwZjg0MDdjMWYzZGM3ODdiNTBlOWJmNjA5OTFh
ZWU3Y2I0MTBiNGZhLi43YmE0MTAwNWUzY2U1YWI3MzM3Y2JiNWEyMjQ2M2EyOTk0MzkyMzEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5jcHAKQEAgLTUxLDEwICs1MSwxNSBAQCBjbGFz
cyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uCiAjZW5kaWYKIHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3Qg
UGxhdGZvcm1DcmVhdGVQYXJhbXMgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBNYWNo
U2VtYXBob3JlIHJlbmRlclNlbWFwaG9yZTsKKyNlbmRpZgorICAgIH07CiAgICAgc3RhdGljIFJl
ZjxSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgY29ubmVjdGlvbiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
ciwKLSAgICAgICAgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNh
bXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkKKyAgICAgICAgY29uc3QgU3RyaW5n
JiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJl
U2FtcGxlUmF0ZSwgUGxhdGZvcm1DcmVhdGVQYXJhbXMmJiBwYXJhbXMpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uKGNvbm5lY3Rpb24s
IGlkZW50aWZpZXIsIGlucHV0RGV2aWNlSWQsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscywgc2FtcGxlUmF0ZSwgaGFyZHdhcmVTYW1wbGVSYXRlKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oY29ubmVjdGlv
biwgaWRlbnRpZmllciwgaW5wdXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUsIFdURk1v
dmUocGFyYW1zKSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUF1ZGlvRGVzdGluYXRp
b24oKSA9IGRlZmF1bHQ7CkBAIC02OCw4ICs3Myw2IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0IGNyZWF0ZVJlbmRlclNlbWFwaG9yZVNl
bmRSaWdodCgpIHsgcmV0dXJuIG1fcmVuZGVyU2VtYXBob3JlLmNyZWF0ZVNlbmRSaWdodCgpOyB9
Ci0KICAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKGNvbnN0IFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlJiBpcGNIYW5kbGUsIGNvbnN0IFdlYkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYgZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9mRnJhbWVzKQogICAgIHsKICAg
ICAgICAgbV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+
KG1ha2VVbmlxdWVSZWY8UmVhZE9ubHlTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZT4oaXBjSGFuZGxl
LmhhbmRsZSksIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CkBAIC0xMDQsMTEgKzEwNywx
MiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1BsYXlpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUGxh
eWluZzsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZUF1ZGlvRGVzdGluYXRpb24oR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUpCisgICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlv
bihHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZs
b2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgUGxhdGZvcm1DcmVhdGVQ
YXJhbXMmJiBwYXJhbXMpCiAgICAgICAgIDogbV9pZChpZGVudGlmaWVyKQogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgICAgICAsIG1fYXVkaW9PdXRwdXRVbml0QWRhcHRvcigqdGhpcykKICAgICAg
ICAgLCBtX3JpbmdCdWZmZXIobWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpDQVJpbmdCdWZmZXI+KCkp
CisgICAgICAgICwgbV9yZW5kZXJTZW1hcGhvcmUoV1RGTW92ZShwYXJhbXMucmVuZGVyU2VtYXBo
b3JlKSkKICNlbmRpZgogICAgIHsKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTE2MiwxOSArMTY2
LDIzIEBAIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcihHUFVDb25uZWN0aW9uVG9XZWJQCiAKIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25N
YW5hZ2VyOjp+UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKLXZv
aWQgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OmNyZWF0ZUF1ZGlvRGVzdGluYXRpb24o
Y29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUsIGZs
b2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwgQ3JlYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6Y3JlYXRl
QXVkaW9EZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51
bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLAorI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIE1hY2hTZW1hcGhvcmUmJiByZW5kZXJTZW1hcGhvcmUsCisjZW5kaWYKKyAgICBN
ZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGlu
YXRpb25EZWxheWVkUmVwbHkmJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIG5ld0lE
ID0gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgp
OwotICAgIGF1dG8gZGVzdGluYXRpb24gPSBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUo
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5wdXREZXZpY2VJZCwgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBzYW1wbGVSYXRlLCBoYXJk
d2FyZVNhbXBsZVJhdGUpOwotICAgIG1fYXVkaW9EZXN0aW5hdGlvbnMuYWRkKG5ld0lELCBkZXN0
aW5hdGlvbi5jb3B5UmVmKCkpOworICAgIGF1dG8gZGVzdGluYXRpb24gPSBSZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uOjpjcmVhdGUobV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBuZXdJRCwgaW5w
dXREZXZpY2VJZCwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBzYW1wbGVSYXRlLCBoYXJkd2FyZVNhbXBsZVJhdGUsIHsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBjb21wbGV0aW9uSGFuZGxlcihuZXdJRCwgZGVzdGluYXRpb24tPmNyZWF0ZVJlbmRlclNl
bWFwaG9yZVNlbmRSaWdodCgpKTsKLSNlbHNlCi0gICAgY29tcGxldGlvbkhhbmRsZXIobmV3SUQp
OworICAgICAgICBXVEZNb3ZlKHJlbmRlclNlbWFwaG9yZSkKICNlbmRpZgorICAgIH0pOworICAg
IG1fYXVkaW9EZXN0aW5hdGlvbnMuYWRkKG5ld0lELCBkZXN0aW5hdGlvbi5jb3B5UmVmKCkpOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ld0lEKTsKIH0KIAotdm9pZCBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlcjo6ZGVsZXRlQXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpkZWxl
dGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50
aWZpZXIsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6RGVsZXRlQXVk
aW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkmJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRv
IGRlc3RpbmF0aW9uID0gbV9hdWRpb0Rlc3RpbmF0aW9ucy50YWtlKGlkZW50aWZpZXIpOwogICAg
IGlmIChkZXN0aW5hdGlvbikKQEAgLTE4Miw3ICsxOTAsNyBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25NYW5hZ2VyOjpkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGlu
YXRpbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6
c3RhcnRBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlk
ZW50aWZpZXIsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6U3RhcnRB
dWRpb0Rlc3RpbmF0aW9uQXN5bmNSZXBseSYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGJv
b2wgaXNQbGF5aW5nID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2F1ZGlvRGVzdGlu
YXRpb25zLmdldChpZGVudGlmaWVyKSkgewpAQCAtMTkyLDcgKzIwMCw3IEBAIHZvaWQgUmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OnN0YXJ0QXVkaW9EZXN0aW5hdGlvbihSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uCiAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNQbGF5aW5nKTsKIH0KIAotdm9p
ZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6c3RvcEF1ZGlvRGVzdGluYXRpb24oUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXI6OnN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlcjo6U3RvcEF1ZGlvRGVzdGluYXRpb25Bc3luY1JlcGx5JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYm9vbCBpc1BsYXlpbmcgPSBmYWxzZTsKICAgICBpZiAoYXV0byogaXRlbSA9
IG1fYXVkaW9EZXN0aW5hdGlvbnMuZ2V0KGlkZW50aWZpZXIpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9u
TWFuYWdlci5oCmluZGV4IGI4M2YyOWY4ZGMxMzNhMWEyYzNhODc0YmE3MzNiNTgwYjI2ZTc2MmQu
LjdiNDA5MDk0NjJiYjkzZGM2YjcwZjI1YTAxMTBlYWRiMzM4Zjk1OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlci5oCkBAIC0yOSwxOSArMjksMTkgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmgiCiAj
aW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oPgorI2Vu
ZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENB
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIH0KLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBNYWNo
U2VuZFJpZ2h0OwotfQogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjQsMTQgKzY0
LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHVzaW5nIENyZWF0aW9uQ29tcGxldGlvbkhhbmRs
ZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlm
aWVyLCBXVEY6Ok1hY2hTZW5kUmlnaHQpPjsKKyAgICB2b2lkIGNyZWF0ZUF1ZGlvRGVzdGluYXRp
b24oY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkLCB1aW50MzJfdCBudW1iZXJPZklucHV0Q2hh
bm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUs
IGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSwKKyAgICAgICAgTWFjaFNlbWFwaG9yZSYmIHJlbmRl
clNlbWFwaG9yZSwgTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVh
dGVBdWRpb0Rlc3RpbmF0aW9uRGVsYXllZFJlcGx5JiYpOwogI2Vsc2UKLSAgICB1c2luZyBDcmVh
dGlvbkNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVBdWRp
b0Rlc3RpbmF0aW9uSWRlbnRpZmllcik+OworICAgIHZvaWQgY3JlYXRlQXVkaW9EZXN0aW5hdGlv
bihjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51bWJlck9mSW5wdXRDaGFu
bmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSwg
ZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLAorICAgICAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9u
RGVsYXllZFJlcGx5JiYpOwogI2VuZGlmCi0gICAgdm9pZCBjcmVhdGVBdWRpb0Rlc3RpbmF0aW9u
KGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5u
ZWxzLCB1aW50MzJfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBm
bG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUsIENyZWF0aW9uQ29tcGxldGlvbkhhbmRsZXImJik7Ci0g
ICAgdm9pZCBkZWxldGVBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc3RhcnRBdWRp
b0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUF1ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
cjo6RGVsZXRlQXVkaW9EZXN0aW5hdGlvbkFzeW5jUmVwbHkmJik7CisgICAgdm9pZCBzdGFydEF1
ZGlvRGVzdGluYXRpb24oUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIsIE1lc3NhZ2Vz
OjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6U3RhcnRBdWRpb0Rlc3RpbmF0aW9uQXN5
bmNSZXBseSYmKTsKKyAgICB2b2lkIHN0b3BBdWRpb0Rlc3RpbmF0aW9uKFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLCBNZXNzYWdlczo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFn
ZXI6OlN0b3BBdWRpb0Rlc3RpbmF0aW9uQXN5bmNSZXBseSYmKTsKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIGF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkKFJlbW90ZUF1ZGlvRGVzdGlu
YXRpb25JZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIGNvbnN0IFdl
YkNvcmU6OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHVpbnQ2NF90IG51bWJlck9mRnJhbWVz
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
CmluZGV4IDU1Nzg5ODQ2ZDc0ZDg1NzRiYmRhMWFiZGYyNzE4YmQzYmE1YmM0ZTQuLjM4ZTM0ZTAz
NGQxN2FlYTY4MTRhYjcwMjYzN2JmMzhhZjYwNTgxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0
aW5hdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAKIAogbWVzc2FnZXMg
LT4gUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIgTm90UmVmQ291bnRlZCB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgQ3JlYXRlQXVkaW9EZXN0aW5hdGlvbihTdHJpbmcgaW5wdXREZXZp
Y2VJZCwgdWludDMyX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1aW50MzJfdCBudW1iZXJPZk91
dHB1dENoYW5uZWxzLCBmbG9hdCBzYW1wbGVSYXRlLCBmbG9hdCBoYXJkd2FyZVNhbXBsZVJhdGUp
IC0+IChXZWJLaXQ6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIs
IE1hY2hTZW5kUmlnaHQgcmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0KSBTeW5jaHJvbm91cworICAg
IENyZWF0ZUF1ZGlvRGVzdGluYXRpb24oU3RyaW5nIGlucHV0RGV2aWNlSWQsIHVpbnQzMl90IG51
bWJlck9mSW5wdXRDaGFubmVscywgdWludDMyX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSwgZmxvYXQgaGFyZHdhcmVTYW1wbGVSYXRlLCBNYWNoU2VtYXBob3JlIHJl
bmRlclNlbWFwaG9yZSkgLT4gKFdlYktpdDo6UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMKICNlbmRpZgogI2lmICFQTEFURk9STShDT0NPQSkK
ICAgICBDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uKFN0cmluZyBpbnB1dERldmljZUlkLCB1aW50MzJf
dCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVpbnQzMl90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMs
IGZsb2F0IHNhbXBsZVJhdGUsIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSkgLT4gKFdlYktpdDo6
UmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgU3luY2hyb25vdXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVjOGJjZjA4N2Rm
MTZkZjYwZGJlMDA4MGU0Y2ViMDYxZDE3NjhmZjcuLmUwY2ExYWU1Njg4N2M0ZGVmNmZhYmQzNGYx
MTVkMzBiNDMyODIwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQpAQCAtMjU1LDYgKzI1NSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmVkKCk6CiAgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAnSVBDOjpG
b250UmVmZXJlbmNlJywKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAorICAgICAgICAnTWFjaFNl
bWFwaG9yZScsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKICAgICAg
ICAgJ1dlYkNvcmU6OkNvbG9yU3BhY2UnLApAQCAtMzM0LDYgKzMzNSw4IEBAIGRlZiBjb25kaXRp
b25zX2Zvcl9oZWFkZXIoaGVhZGVyKToKICAgICAgICAgJyJJbnB1dE1ldGhvZFN0YXRlLmgiJzog
WyJQTEFURk9STShHVEspIiwgIlBMQVRGT1JNKFdQRSkiXSwKICAgICAgICAgJyJMYXllckhvc3Rp
bmdDb250ZXh0LmgiJzogWyJQTEFURk9STShDT0NPQSkiLCBdLAogICAgICAgICAnIkdlc3R1cmVU
eXBlcy5oIic6IFsiUExBVEZPUk0oSU9TX0ZBTUlMWSkiXSwKKyAgICAgICAgJzx3dGYvTWFjaFNl
bmRSaWdodC5oPic6IFsiUExBVEZPUk0oQ09DT0EpIl0sCisgICAgICAgICc8d3RmL2NvY29hL01h
Y2hTZW1hcGhvcmUuaD4nOiBbIlBMQVRGT1JNKENPQ09BKSJdLAogICAgIH0KICAgICBpZiBub3Qg
aGVhZGVyIGluIGNvbmRpdGlvbnM6CiAgICAgICAgIHJldHVybiBOb25lCkBAIC0zNTQsNiArMzU3
LDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzKHJlY2VpdmVyKToKIAog
ICAgIG5vbl90ZW1wbGF0ZV93dGZfdHlwZXMgPSBmcm96ZW5zZXQoWwogICAgICAgICAnTWFjaFNl
bmRSaWdodCcsCisgICAgICAgICdNYWNoU2VtYXBob3JlJywKICAgICAgICAgJ01lZGlhVHlwZScs
CiAgICAgICAgICdTdHJpbmcnLAogICAgIF0pCkBAIC00MDksNiArNDEzLDcgQEAgZGVmIGZvcndh
cmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzX2Zvcl9yZXBsaWVzKHJlY2VpdmVyKToKIAogICAg
IG5vbl90ZW1wbGF0ZV93dGZfdHlwZXMgPSBmcm96ZW5zZXQoWwogICAgICAgICAnTWFjaFNlbmRS
aWdodCcsCisgICAgICAgICdNYWNoU2VtYXBob3JlJywKICAgICAgICAgJ01lZGlhVGltZScsCiAg
ICAgICAgICdTdHJpbmcnLAogICAgIF0pCkBAIC02MzksNiArNjQ0LDcgQEAgZGVmIGhlYWRlcnNf
Zm9yX3R5cGUodHlwZSk6CiAKICAgICBzcGVjaWFsX2Nhc2VzID0gewogICAgICAgICAnTWFjaFNl
bmRSaWdodCc6IFsnPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+J10sCisgICAgICAgICdNYWNoU2VtYXBo
b3JlJzogWyc8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4nXSwKICAgICAgICAgJ0pTQzo6TWVz
c2FnZUxldmVsJzogWyc8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+J10sCiAgICAgICAg
ICdKU0M6Ok1lc3NhZ2VTb3VyY2UnOiBbJzxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4n
XSwKICAgICAgICAgJ0luc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZSc6IFsnPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvclRhcmdldC5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKaW5kZXggNmVjNmViNGRhNTU3NzNmY2VkNjNk
MzgyMjMzYzMyNTgxOWE5YTNjMy4uYWRlYjg1ZjkwYjNmNGQ1OWJiNzNmNDE2MmUwNjgxYTlmNjc2
OTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191
bml0dGVzdC5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3Vu
aXR0ZXN0LnB5CkBAIC0zOSw3ICszOSw3IEBAIHRlc3RzX2RpcmVjdG9yeSA9IG9zLnBhdGguam9p
bihtb2R1bGVfZGlyZWN0b3J5LCAndGVzdHMnKQogCiByZXNldF9yZXN1bHRzID0gRmFsc2UKIAot
X3Rlc3RfcmVjZWl2ZXJfbmFtZXMgPSBbJ1Rlc3RXaXRoU3VwZXJjbGFzcycsICdUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyJywgJ1Rlc3RXaXRob3V0QXR0cmlidXRlcycsICdUZXN0V2l0aElmTWVzc2Fn
ZSddCitfdGVzdF9yZWNlaXZlcl9uYW1lcyA9IFsnVGVzdFdpdGhTdXBlcmNsYXNzJywgJ1Rlc3RX
aXRoTGVnYWN5UmVjZWl2ZXInLCAnVGVzdFdpdGhvdXRBdHRyaWJ1dGVzJywgJ1Rlc3RXaXRoSWZN
ZXNzYWdlJywgJ1Rlc3RXaXRoTWFjaFNlbWFwaG9yZSddCiAKIAogZGVmIHJlY2VpdmVyX2hlYWRl
cl9maWxlX25hbWUocmVjZWl2ZXJfbmFtZSk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9NYWtlZmlsZQppbmRleCA4Nzk2ZmZiYzVhM2Y4N2I5MjNlZDZjOTgwMjM5MWE4NzZi
YWMzODJlLi4zOWFmMTNjZTcwMmE1ODM3ZGM4NzEyNWM3YzUyY2QyN2IyYTc3ZWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKQEAgLTEsMiArMSwyIEBA
CiBhbGw6Ci0JcHl0aG9uIC4uLy4uL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgLiBUZXN0
V2l0aFN1cGVyY2xhc3MgVGVzdFdpdGhMZWdhY3lSZWNlaXZlciBUZXN0V2l0aG91dEF0dHJpYnV0
ZXMgVGVzdFdpdGhJZk1lc3NhZ2UKKwlweXRob24gLi4vLi4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNl
aXZlci5weSAuIFRlc3RXaXRoU3VwZXJjbGFzcyBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyIFRlc3RX
aXRob3V0QXR0cmlidXRlcyBUZXN0V2l0aElmTWVzc2FnZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFy
Z3VtZW50RGVzY3JpcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcAppbmRleCA1OTQwNDQzOTBjYWRhYzJm
ZjBjZGZhYTllMzA1MDQ0Mjc3ODM4MGZlLi44M2M1ZDBjYjMzMjIyYmIxYTZmYjczNDU0ZDQwNzlk
ZDYyZTRjYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCkBAIC00Niw2
ICs0Niw3IEBACiAjZW5kaWYKICNpbmNsdWRlICJUZXN0V2l0aElmTWVzc2FnZU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiVGVzdFdpdGhMZWdhY3lSZWNlaXZlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
VGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0aFN1cGVy
Y2xhc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRlc3RXaXRob3V0QXR0cmlidXRlc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC02NSw2ICs2Niw5IEBA
CiAjZW5kaWYKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhv
cmUuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKQEAgLTIxNSw2ICsyMTksMTIgQEAgT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1Zh
bHVlRm9yQXJndW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTWUKICNp
ZiBQTEFURk9STShHVEspCiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhJZk1lc3NhZ2Vf
TG9hZFVSTDoKICAgICAgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRzPE1lc3Nh
Z2VzOjpUZXN0V2l0aElmTWVzc2FnZTo6TG9hZFVSTDo6QXJndW1lbnRzPihnbG9iYWxPYmplY3Qs
IGRlY29kZXIpOworI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1NlbmRTZW1hcGhvcmU6CisgICAgICAgIHJldHVy
biBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBo
b3JlOjpTZW5kU2VtYXBob3JlOjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3JlX1JlY2VpdmVTZW1hcGhv
cmU6CisgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6
VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjpBcmd1bWVudHM+KGdsb2Jh
bE9iamVjdCwgZGVjb2Rlcik7CiAjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsK
QEAgLTUxNiw2ICs1MjYsMTQgQEAgT3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+
PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUgbmEKICAgICAgICAgICAg
IHsidXJsIiwgIlN0cmluZyIsIG51bGxwdHIsIGZhbHNlfSwKICAgICAgICAgICAgIHsidmFsdWUi
LCAiaW50NjRfdCIsIG51bGxwdHIsIGZhbHNlfSwKICAgICAgICAgfTsKKyNlbmRpZgorI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9y
ZV9TZW5kU2VtYXBob3JlOgorICAgICAgICByZXR1cm4gVmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRp
b24+IHsKKyAgICAgICAgICAgIHsiczAiLCAiTWFjaFNlbWFwaG9yZSIsIG51bGxwdHIsIGZhbHNl
fSwKKyAgICAgICAgfTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhv
cmVfUmVjZWl2ZVNlbWFwaG9yZToKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxBcmd1bWVudERlc2Ny
aXB0aW9uPiB7IH07CiAjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcApp
bmRleCA3NmZhZDM3YzU0NjBhZGJjZmVhMzcyZDE4NjY1NTBmYTdjOGE4NTEzLi45OGNlMzJkOTU1
ZTc5NjM4YzIzZTI1YmY3MzgxMzA3NmEyODI0ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCkBAIC03Miw2ICs3MiwxMCBA
QCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBuYW1lKQogICAgICAgICByZXR1
cm4gIlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMiOwogICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVudDoKICAg
ICAgICAgcmV0dXJuICJUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQiOworICAgIGNh
c2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOgor
ICAgICAgICByZXR1cm4gIlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlIjsK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9y
ZToKKyAgICAgICAgcmV0dXJuICJUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZSI7
CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkw6CiAgICAg
ICAgIHJldHVybiAiVGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkwiOwogICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlOgpAQCAtMTgxLDYgKzE4
NSw5IEBAIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUp
CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9UZXN0UGFyYW1l
dGVyQXR0cmlidXRlczoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2FjeVJlY2Vp
dmVyX1RvdWNoRXZlbnQ6CiAgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBob3Jl
X1JlY2VpdmVTZW1hcGhvcmU6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2Vt
YXBob3JlX1NlbmRTZW1hcGhvcmU6CisgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RX
aXRoTWFjaFNlbWFwaG9yZTsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xh
c3NfTG9hZFVSTDoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVz
dEFzeW5jTWVzc2FnZToKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3Nf
VGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uOgpAQCAtMjk4LDYgKzMwNSwxNCBAQCBib29s
IGlzVmFsaWRNZXNzYWdlTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICNpZiAoRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgKE5FU1RFRF9NRVNTQUdFX0NPTkRJVElPTiB8fCBTT01FX09USEVS
X01FU1NBR0VfQ09ORElUSU9OKSkKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChtZXNzYWdlTmFtZSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmVfUmVjZWl2ZVNlbWFwaG9y
ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhNYWNoU2VtYXBo
b3JlX1NlbmRTZW1hcGhvcmUpCisgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgaWYg
KG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2Fk
VVJMKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmluZGV4IDIzZjc1NjA4N2Q2ODNhZDIyYjA2OGUy
YTcxZmQ5NWEwZjNjZTU1NWUuLmZiMGQ5MWJhODhkYzhkNjhlZjViZTc0YTJiMmEyM2YyZDQzMzMx
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2Fn
ZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdl
TmFtZXMuaApAQCAtMzEsMTEgKzMxLDEyIEBAIG5hbWVzcGFjZSBJUEMgewogZW51bSBjbGFzcyBS
ZWNlaXZlck5hbWUgOiB1aW50OF90IHsKICAgICBUZXN0V2l0aElmTWVzc2FnZSA9IDEKICAgICAs
IFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXIgPSAyCi0gICAgLCBUZXN0V2l0aFN1cGVyY2xhc3MgPSAz
Ci0gICAgLCBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgPSA0Ci0gICAgLCBJUEMgPSA1Ci0gICAgLCBB
c3luY1JlcGx5ID0gNgotICAgICwgSW52YWxpZCA9IDcKKyAgICAsIFRlc3RXaXRoTWFjaFNlbWFw
aG9yZSA9IDMKKyAgICAsIFRlc3RXaXRoU3VwZXJjbGFzcyA9IDQKKyAgICAsIFRlc3RXaXRob3V0
QXR0cmlidXRlcyA9IDUKKyAgICAsIElQQyA9IDYKKyAgICAsIEFzeW5jUmVwbHkgPSA3CisgICAg
LCBJbnZhbGlkID0gOAogfTsKIAogZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsK
QEAgLTYwLDYgKzYxLDggQEAgZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsKICAg
ICAsIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVtcGxhdGVUZXN0CiAgICAgLCBUZXN0V2l0aExl
Z2FjeVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzCiAgICAgLCBUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyX1RvdWNoRXZlbnQKKyAgICAsIFRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZl
U2VtYXBob3JlCisgICAgLCBUZXN0V2l0aE1hY2hTZW1hcGhvcmVfU2VuZFNlbWFwaG9yZQogICAg
ICwgVGVzdFdpdGhTdXBlcmNsYXNzX0xvYWRVUkwKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19U
ZXN0QXN5bmNNZXNzYWdlCiAgICAgLCBUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2Fn
ZVdpdGhDb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9yZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlLm1lc3NhZ2VzLmluCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY1MjU4MzUzZjA5NGM0MDZhNDIzZjYxMDBiY2U5Y2E4MjYyMDZjYTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
TWFjaFNlbWFwaG9yZS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI4IEBACisjIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisj
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK21lc3NhZ2VzIC0+IFRlc3RXaXRoTWFjaFNlbWFw
aG9yZSB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBTZW5kU2VtYXBob3JlKE1hY2hT
ZW1hcGhvcmUgczApCisgICAgdm9pZCBSZWNlaXZlU2VtYXBob3JlKCkgLT4gKE1hY2hTZW1hcGhv
cmUgcjApCisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2Fn
ZVJlY2VpdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNGVlNDBjMzZhYWQ4M2Y5ZTcwMWQ4NmM4YWVjNzYz
YTM3OGVhZTgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGVzdFdpdGhNYWNoU2VtYXBob3JlLmgiCisKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5j
bHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUgIlRlc3RXaXRoTWFjaFNlbWFwaG9yZU1l
c3NhZ2VzLmgiCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3RmL2NvY29hL01hY2hT
ZW1hcGhvcmUuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBUZXN0V2l0
aE1hY2hTZW1hcGhvcmU6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZTo6U2VuZFNlbWFw
aG9yZTo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVz
dFdpdGhNYWNoU2VtYXBob3JlOjpTZW5kU2VtYXBob3JlPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhNYWNoU2VtYXBob3JlOjpzZW5kU2VtYXBob3JlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyNlbmRpZgorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0o
ZGVjb2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgVGVzdFdpdGhN
YWNoU2VtYXBob3JlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiByZXBseUVuY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhNYWNoU2VtYXBob3JlOjpSZWNlaXZlU2VtYXBob3JlOjpu
YW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aE1h
Y2hTZW1hcGhvcmU6OlJlY2VpdmVTZW1hcGhvcmU+KGRlY29kZXIsICpyZXBseUVuY29kZXIsIHRo
aXMsICZUZXN0V2l0aE1hY2hTZW1hcGhvcmU6OnJlY2VpdmVTZW1hcGhvcmUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAg
IFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0ocmVwbHlFbmNvZGVyKTsK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFj
aFNlbWFwaG9yZU1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoTWFjaFNlbWFwaG9yZU1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTMxMjE1ZDJlNDRi
NDJiZTRiMWQwYmViMmE2YjM2OThmOGNkNDQzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhNYWNoU2VtYXBob3JlTWVzc2FnZXMu
aApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJUZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNz
YWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHd0
Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+CisjZW5kaWYKKworCituYW1lc3BhY2UgTWVzc2FnZXMg
eworbmFtZXNwYWNlIFRlc3RXaXRoTWFjaFNlbWFwaG9yZSB7CisKK3N0YXRpYyBpbmxpbmUgSVBD
OjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6
UmVjZWl2ZXJOYW1lOjpUZXN0V2l0aE1hY2hTZW1hcGhvcmU7Cit9CisKKyNpZiBQTEFURk9STShD
T0NPQSkKK2NsYXNzIFNlbmRTZW1hcGhvcmUgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8Y29uc3QgTWFjaFNlbWFwaG9yZSY+OworCisgICAgc3RhdGljIElQQzo6
TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoTWFj
aFNlbWFwaG9yZV9TZW5kU2VtYXBob3JlOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5j
ID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBTZW5kU2VtYXBob3JlKGNvbnN0IE1hY2hTZW1hcGhv
cmUmIHMwKQorICAgICAgICA6IG1fYXJndW1lbnRzKHMwKQorICAgIHsKKyAgICB9CisKKyAgICBj
b25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50
czsKK307CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorY2xhc3MgUmVjZWl2ZVNlbWFw
aG9yZSB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTw+OworCisg
ICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5h
bWU6OlRlc3RXaXRoTWFjaFNlbWFwaG9yZV9SZWNlaXZlU2VtYXBob3JlOyB9CisgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBs
ZTxNYWNoU2VtYXBob3JlJj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxl
PE1hY2hTZW1hcGhvcmU+OworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2l0aE1hY2hTZW1hcGhvcmUKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoTWFjaFNlbWFwaG9y
ZU1lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNzYWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTcwYzRh
MTNiYjc2YTM2MDU3NzNiZTNhYTdjN2JlMWExOWE2MTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aE1hY2hTZW1hcGhvcmVNZXNz
YWdlc1JlcGxpZXMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhNYWNoU2Vt
YXBob3JlIHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aE1hY2hTZW1hcGhvcmUKK30gLy8g
bmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDI4MTRlOGI1ZWYzMmQ1MDI2
NThiYWI1YWVmNzEzY2Y2MTQ3MDJiNTcuLjgzNWE2NDA5YmQ4NzczZDQzNGExZDAxMTM0MmIyY2Vm
MTRjNTk1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEkuaD4KKyNpbXBv
cnQgPHd0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogI2ltcG9ydCA8VUlLaXQvVUlGb250Lmg+CkBAIC02NSw2ICs2NiwxOSBAQCBPcHRpb25hbDxX
ZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkF0dHJpYnV0
ZWRTdHJpbmc+OjpkZQogICAgIHJldHVybiB7IHsgV1RGTW92ZShhdHRyaWJ1dGVkU3RyaW5nKSwg
V1RGTW92ZShkb2N1bWVudEF0dHJpYnV0ZXMpIH0gfTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVy
PFdURjo6TWFjaFNlbWFwaG9yZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXVEY6
Ok1hY2hTZW1hcGhvcmUmIHNlbWFwaG9yZSkKK3sKKyAgICBlbmNvZGVyIDw8IHNlbWFwaG9yZS5j
cmVhdGVTZW5kUmlnaHQoKTsKK30KKworT3B0aW9uYWw8TWFjaFNlbWFwaG9yZT4gQXJndW1lbnRD
b2RlcjxXVEY6Ok1hY2hTZW1hcGhvcmU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodDsKKyAgICBpZiAoZGVjb2Rlci5kZWNvZGUoc2VuZFJp
Z2h0KSkKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFdURjo6TWFjaFNlbWFwaG9yZT4geyBzdGQ6
OmluX3BsYWNlLCBXVEZNb3ZlKHNlbmRSaWdodCkgfTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworfQorCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAogI2lmIEhBVkUoUEFTU0tJVF9JTlNUQUxM
TUVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQ3YjVhNzZhZjI1MjBjOWU3MjAxMDY4MDhhOTM0ZmQxOTc4OTlkMjQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCisrKyAvZGV2
L251bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQotCi0jaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotc3RydWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgewot
ICAgIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXI7Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZTsKLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzPiBkZWNvZGUo
RGVjb2RlciYpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBpZGVudGlmaWVyOwotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIGVuY29kZXIgPDwgc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7
Ci0jZW5kaWYKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnM+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRD
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIE9w
dGlvbmFsPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyPiBpZGVudGlmaWVyOwotICAgIGRlY29k
ZXIgPj4gaWRlbnRpZmllcjsKLSAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICBwYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSAqaWRlbnRpZmllcjsK
LQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRS
aWdodEZvclJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwotICAgIGRlY29kZXIgPj4gc2VuZFJp
Z2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmU7Ci0gICAgaWYgKCFzZW5kUmlnaHRGb3JS
ZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LQotICAgIHBhcmFtZXRlcnMuc2VuZFJpZ2h0Rm9yUmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUg
PSBXVEZNb3ZlKCpzZW5kUmlnaHRGb3JSZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7Ci0jZW5k
aWYKLQotICAgIHJldHVybiBwYXJhbWV0ZXJzOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZmE5NmNkYTg0ZWNiN2Q0ODhhZTQyOTEzM2Mw
ZjViNDQzNzA0OGRiMS4uNTA4MjFkMWRiNzM4MGUxMDY0ZTE5ZWJiMGQ4ZTNmN2NkYzZhYmFjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTgx
LDYgKzgxLDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkKIG5hbWVzcGFjZSBXVEYgewogY2xhc3Mg
TWFjaFNlbmRSaWdodDsKK2NsYXNzIE1hY2hTZW1hcGhvcmU7CiB9CiAjZW5kaWYKIApAQCAtNDg3
LDYgKzQ4OCwxMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENHQWZmaW5lVHJh
bnNmb3JtPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBDR0FmZmluZVRyYW5z
Zm9ybSk7CiAgICAgc3RhdGljIE9wdGlvbmFsPENHQWZmaW5lVHJhbnNmb3JtPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpNYWNoU2Vt
YXBob3JlPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXVEY6Ok1h
Y2hTZW1hcGhvcmUmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V1RGOjpNYWNoU2VtYXBob3JlPiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGZhMDNkYzg1MTQwMDM4NTgyNjE3NTNkZWNjZjk1Nzc3YTFhYmNlYTEuLjI0YjEzMmIyMjNmOTkz
ODkwZmFhMTA5NThlNmJmZTcwMTQxMjEzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTk2OCw3ICsxOTY4LDYgQEAKIAkJRjQyRDYz
NDEyMkEwRUZERjAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyRDYzM0YyMkEwRUZEMzAwRDJG
QjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oICovOyB9OwogCQlGNDMwRTk0MjIyNDczMzVG
MDA1RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8q
IFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCAqLzsgfTsKIAkJRjQzMEU5NDQyMjQ3M0RGRjAw
NUZFMDUzIC8qIFdlYkNvbnRlbnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDMwRTk0MzIyNDczREI4MDA1RkUwNTMgLyogV2ViQ29udGVudE1v
ZGUuaCAqLzsgfTsKLQkJRjQzN0M4RDkyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzdDOEQ4MjU5M0I3RTMwMERCOEExQyAvKiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCUY0MzhDRDFDMjI0MTQy
MTQwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzOENEMUIyMjQxNDBBNjAwREU2RERBIC8qIFdL
V2VicGFnZVByZWZlcmVuY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OwogCQlGNDM4Q0QxRjIyNDE0RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVy
ZW5jZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQzOENEMUUyMjQxNEQ0MDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzSW50
ZXJuYWwuaCAqLzsgfTsKIAkJRjQzOENEMjEyMjQxRjY5NTAwREU2RERBIC8qIFdLV2VicGFnZVBy
ZWZlcmVuY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQzOENEMjAyMjQxRjY5NTAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2Vz
UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC01Nzg2LDcgKzU3ODUsNiBAQAogCQlGNDJENjM0MDIyQTBFRkQzMDBEMkZCM0EgLyogV2Vi
QXV0b2NvcnJlY3Rpb25EYXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0
aW9uRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzMEU5NDEyMjQ3MzJB
OTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDMwRTk0MzIyNDczREI4MDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViQ29udGVudE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjQz
N0M4RDgyNTkzQjdFMzAwREI4QTFDIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9u
UGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxQjIyNDE0
MEE2MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tX
ZWJwYWdlUHJlZmVyZW5jZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzOENE
MUQyMjQxNEFENjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tXZWJwYWdlUHJlZmVyZW5jZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0MzhDRDFFMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNl
c0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1MjUsNyArNjUyMyw2IEBACiAJCQkJ
RTFDQzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovLAogCQkJCTQ2M0ZENDgx
MUVCOTRFQUQwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCAqLywKIAkJCQk5
QjEyMjlEMDIzRkYyQTVFMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIuaCAqLywKLQkJCQlGNDM3QzhEODI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCTVDQjdBRkU2MjNDNjgxQjAwMEU0
OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi8sCiAJCQkJNUMwMDk5M0IyNDE3RkI3RTAwRDUz
QzI1IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNDEwNDgy
Q0IxREREMkZCNTAwRjAwNkQwIC8qIFJUQ05ldHdvcmsuY3BwICovLApAQCAtMTE4NzAsNyArMTE4
NjcsNiBAQAogCQkJCTFBNTcwNEZDMUJFMTc1MTEwMDg3NEFGMSAvKiBSZW1vdGVPYmplY3RJbnZv
Y2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMxMzM4MDE4NTkwQUU0MDBGM0VDMDUgLyog
UmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEzMzg2MTg1OTBD
NDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKLQkJCQlGNDM3QzhEOTI1OTNCN0UzMDBEQjhBMUMgLyogUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZENyZWF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3OTAxODdCM0Iz
QTAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjU5NDdBODE4N0I1MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1OTQ3OUIxODdCM0I2MDAwNDM3ODU3
IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDYxYjRjODI0OTU3NmRl
MTI4YTlhYmVkMDkyN2Y0MWVlNDE2MmJlNmUuLmMxZTM2Y2VkYTFkMjM3YzZhODk1Yzg1MTc2ZmE1
NjRhMmZlOWE4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAK
QEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgiCi0jaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCkBAIC02NywxMiArNjYsMTEgQEAgdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgIGF1dG8m
IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbigpOwogICAgIGNvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBjb25uZWN0
aW9uLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoewot
ICAgICAgICBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLAorICAgIHNlbmQoTWVzc2FnZXM6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQobV9yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcgogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBtX3Jl
c3VtZURpc3BsYXlMaXN0U2VtYXBob3JlLmNyZWF0ZVNlbmRSaWdodCgpLAorICAgICAgICAsIG1f
cmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUKICNlbmRpZgotICAgIH0pLCAwKTsKKyAgICApLCAw
KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlZXN0YWJsaXNoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkuY3BwCmlu
ZGV4IDM0ZTMwY2UxMTkzNjBjOTMwYzJiMDdlOWMzMDhhMWI2NDBlZDBhM2UuLmUwMDc0ZTkxNzMz
NmFiMjRmZTVjYjU2OTk2MmZkMTA0Yjg2NmJkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRp
b25Qcm94eS5jcHAKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NBUmluZ0J1
ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXVkaW9CdWZmZXJMaXN0Lmg+CiAjaW5jbHVk
ZSA8bWFjaC9tYWNoX3RpbWUuaD4KLSNpbmNsdWRlIDx3dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5o
PgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODAsNyArNzksNyBAQCB2b2lkIFJl
bW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6c3RhcnRSZW5kZXJpbmdUaHJlYWQoKQogCiAgICAg
YXV0byBvZmZUaHJlYWRSZW5kZXJpbmcgPSBbdGhpc10oKSBtdXRhYmxlIHsKICAgICAgICAgZG8g
ewotICAgICAgICAgICAgbV9yZW5kZXJTZW1hcGhvcmUtPndhaXQoKTsKKyAgICAgICAgICAgIG1f
cmVuZGVyU2VtYXBob3JlLndhaXQoKTsKICAgICAgICAgICAgIGlmIChtX3Nob3VsZFN0b3BUaHJl
YWQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTk4LDggKzk3LDcgQEAgdm9pZCBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3BSZW5kZXJpbmdUaHJlYWQoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX3Nob3VsZFN0b3BUaHJlYWQgPSB0cnVlOwotICAgIGlmIChtX3JlbmRl
clNlbWFwaG9yZSkKLSAgICAgICAgbV9yZW5kZXJTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgIG1f
cmVuZGVyU2VtYXBob3JlLnNpZ25hbCgpOwogICAgIG1fcmVuZGVyVGhyZWFkLT53YWl0Rm9yQ29t
cGxldGlvbigpOwogICAgIG1fcmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKICNlbmRpZgpAQCAtMTA3
LDIwICsxMDUsMTQgQEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OnN0b3BSZW5k
ZXJpbmdUaHJlYWQoKQogCiB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVj
dFRvR1BVUHJvY2VzcygpCiB7Ci0gICAgUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIg
ZGVzdGluYXRpb25JRDsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBNYWNoU2VuZFJpZ2h0IHJl
bmRlclNlbWFwaG9yZVNlbmRSaWdodDsKLSNlbmRpZgotCiAgICAgYXV0byYgY29ubmVjdGlvbiA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAg
ICAgY29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOwogICAgIGF1dG8gZGlkU3VjY2VlZCA9IGNv
bm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmRTeW5jKAotICAgICAgICBNZXNzYWdlczo6UmVtb3Rl
QXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb24obV9pbnB1dERl
dmljZUlkLCBtX251bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygp
LCBzYW1wbGVSYXRlKCksIGhhcmR3YXJlU2FtcGxlUmF0ZSgpKSwKLSAgICAgICAgTWVzc2FnZXM6
OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjpDcmVhdGVBdWRpb0Rlc3RpbmF0aW9uOjpS
ZXBseShkZXN0aW5hdGlvbklECisgICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0
aW9uTWFuYWdlcjo6Q3JlYXRlQXVkaW9EZXN0aW5hdGlvbihtX2lucHV0RGV2aWNlSWQsIG1fbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCksIHNhbXBsZVJhdGUo
KSwgaGFyZHdhcmVTYW1wbGVSYXRlKCkKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgICAg
ICwgcmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0CisgICAgICAgICAgICAsIG1fcmVuZGVyU2VtYXBo
b3JlCiAjZW5kaWYKLSAgICAgICAgKSwgMCk7CisgICAgICAgICAgICApLCBNZXNzYWdlczo6UmVt
b3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXI6OkNyZWF0ZUF1ZGlvRGVzdGluYXRpb246OlJlcGx5
KG1fZGVzdGluYXRpb25JRCksIDApOwogCiAgICAgaWYgKCFkaWRTdWNjZWVkKSB7CiAgICAgICAg
IC8vIFRoZSBHUFVQcm9jZXNzIGxpa2VseSBjcmFzaGVkIGR1cmluZyB0aGlzIHN5bmNocm9ub3Vz
IElQQy4gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZSgpIHdpbGwgZ2V0IGNhbGxlZCB0byBy
ZWNvbm5lY3QgdG8gdGhlIEdQVVByb2Nlc3MuCkBAIC0xMjgsNyArMTIwLDYgQEAgdm9pZCBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmNvbm5lY3RUb0dQVVByb2Nlc3MoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9kZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG1fY3VycmVudEZyYW1lID0gMDsKQEAgLTEzNiw3ICsx
MjcsNiBAQCB2b2lkIFJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eTo6Y29ubmVjdFRvR1BVUHJv
Y2VzcygpCiAgICAgZ2V0QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKHN0cmVhbUZvcm1hdCk7
CiAgICAgbV9yaW5nQnVmZmVyLT5hbGxvY2F0ZShzdHJlYW1Gb3JtYXQsIG1fbnVtYmVyT2ZGcmFt
ZXMpOwogICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJDb3JlOjpXZWJBdWRp
b0J1ZmZlckxpc3Q+KHN0cmVhbUZvcm1hdCk7Ci0gICAgbV9yZW5kZXJTZW1hcGhvcmUgPSBtYWtl
VW5pcXVlPE1hY2hTZW1hcGhvcmU+KFdURk1vdmUocmVuZGVyU2VtYXBob3JlU2VuZFJpZ2h0KSk7
CiAjZW5kaWYKIAogICAgIHN0YXJ0UmVuZGVyaW5nVGhyZWFkKCk7CkBAIC0yMDUsOSArMTk1LDcg
QEAgdm9pZCBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9u
RGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3QKICAgICBvbGRDb25uZWN0aW9uLnJlbW92ZUNsaWVu
dCgqdGhpcyk7CiAKICAgICBzdG9wUmVuZGVyaW5nVGhyZWFkKCk7Ci0jaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgbV9yZW5kZXJTZW1hcGhvcmUgPSBudWxscHRyOwotI2VuZGlmCisKICAgICBjb25u
ZWN0VG9HUFVQcm9jZXNzKCk7CiAKICAgICBpZiAoaXNQbGF5aW5nKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGluYXRpb25Q
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkuaAppbmRleCA4ZDJjNjNlYjljNTVmYjhiMmFjNTRiYWFkZThmNzNjZTVk
NWIxY2M1Li5hZjYzNmZmMzY2NDljMjQwMDYyMzI0YWFlYWEyMGYxN2QxNTgwZmY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvRGVzdGlu
YXRpb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQXVkaW9EZXN0aW5hdGlvblByb3h5LmgKQEAgLTM4LDYgKzM4LDggQEAKICNpZiBQTEFURk9S
TShDT0NPQSkKICNpbmNsdWRlICJTaGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbkNvY29hLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisjaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4KICNlbHNlCiAjaW5jbHVk
ZSA8V2ViQ29yZS9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmg+CiAjZW5kaWYKQEAgLTQ3LDEx
ICs0OSw3IEBAIGNsYXNzIENBUmluZ0J1ZmZlcjsKIGNsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdDsK
IH0KIAotbmFtZXNwYWNlIFdURiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi1jbGFzcyBNYWNoU2Vt
YXBob3JlOwotI2VuZGlmCi19CisKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTEwNCw3ICsx
MDIsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHVpbnQ2NF90IG1fbnVt
YmVyT2ZGcmFtZXMgeyAwIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNBUmluZ0J1
ZmZlcj4gbV9yaW5nQnVmZmVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6Ok1hY2hTZW1hcGhv
cmU+IG1fcmVuZGVyU2VtYXBob3JlOworICAgIE1hY2hTZW1hcGhvcmUgbV9yZW5kZXJTZW1hcGhv
cmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OldlYkF1ZGlvQnVmZmVyTGlzdD4gbV9h
dWRpb0J1ZmZlckxpc3Q7CiAgICAgdWludDY0X3QgbV9jdXJyZW50RnJhbWUgeyAwIH07CiAgICAg
ZmxvYXQgbV9zYW1wbGVSYXRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418915</attachid>
            <date>2021-02-01 13:06:16 -0800</date>
            <delta_ts>2021-02-01 13:22:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210201230614.patch</filename>
            <type>text/plain</type>
            <size>351116</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYyMjg4MzgxOGY3YzZkNmUwZWU1NjU1
ODg2ZjcwZGFkZmVjN2JlNWQuLjdhNGZiZDkxNTk1OTE1OTk3YWU3MGI3MDM5NWQ5YmQ3MjgyZTU3
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBHUFUgcHJvY2VzcyBJUEMgc2hvdWxk
IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBhc3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzIzNDA2NTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIG1vdmUgY29uc3RydWN0b3JzIGFuZCBhc3NpZ25tZW50IG9wZXJh
dG9ycyBzbyB0aGF0IE1hY2hTZW1hcGhvcmUKKyAgICAgICAgY2FuIGJlIHBhcnQgb2YgYW4gb2Jq
ZWN0IHRoYXQgaXMgc2VudCB0aHJvdWdoIElQQy4gT3RoZXJ3aXNlIHJlY2VpdmluZworICAgICAg
ICB0aGUgb2JqZWN0IHRocm91Z2ggT3B0aW9uYWw8VHlwZT4gaXMgbm90IHBvc3NpYmxlLgorCisg
ICAgICAgICogd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwOgorICAgICAgICAoV1RGOjpNYWNo
U2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKToKKyAgICAgICAgKFdURjo6TWFjaFNlbWFwaG9yZTo6
fk1hY2hTZW1hcGhvcmUpOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjpzaWduYWwpOgorICAgICAgICAoV1RGOjpN
YWNoU2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAgKFdURjo6TWFjaFNlbWFwaG9yZTo6d2FpdEZv
cik6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCBjb25zdCk6
CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9j
b2NvYS9NYWNoU2VtYXBob3JlLmg6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6Om9wZXJh
dG9yIGJvb2wgY29uc3QpOgorCiAyMDIxLTAxLTMxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGF0ZS5wYXJzZSByZXR1cm5zIG5vbi1pbnRlZ3JhbCB0aW1l
IHZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGY4ZjQ1YTNkYWZlNWJhMGQxZjQ4ZDlkNmY2OWQ5NWRlZTFiOTQw
YzYuLjA2NjE3NjQyYTlkMDFkZTA2ZDI2ODQ5NjBkNjM5ODA2NmY2NWEzYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDgyIEBACisyMDIxLTAyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nlc3MgSVBDIHNob3VsZCB1c2Ugc2hh
cmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNzYWdlIGJ1ZmZlci4gVGhpcyBpcyBh
IHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFuZCBidWZmZXIiIG9yICJkaXNwbGF5
IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2FnZXMKKyAgICAgICAgY2FuIGJlIGFk
ZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRoZW4gcGxheWVkIGJhY2sgYnkgYQor
ICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBhZGRzIGEg
c3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBzZW1pLWR1cGxleCBtZXNzYWdlIGJ1
ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci4gVGhpcworICAgICAgICBpcyBh
IGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJlYW0gY29ubmVjdGlvbiwgYW4gb2Jq
ZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1lc3NhZ2VzIGVpdGhlciB0aHJvdWdo
IHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJvdWdoIG5vcm1hbCBJUEM6OkNvbm5l
Y3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAgICAgICBpbXBsZW1lbnRlZCBhcyBJ
UEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZlciBhbmQgY2xpZW50IGRpc3RpbmN0
aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVjdGlvbi4gVW5saWtlIElQQzo6Q29u
bmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3ltbWV0cmljCisgICAgICAgIGluIGZl
YXR1cmVzOiBjbGllbnQgY2FuIHNlbmQgbWVzc2FnZXMgYW5kIHJlY2VpdmUgcmVwbGllcywgd2hl
cmUKKyAgICAgICAgYXMgc2VydmljZSBjYW4gcmVjZWl2ZSBtZXNzYWdlcyBhbmQgc2VuZCByZXBs
aWVzLgorCisgICAgICAgIE1lc3NhZ2VzIHJlY2VpdmVkIHRocm91Z2ggc2VydmVyIHN0cmVhbSBj
b25uZWN0aW9ucyBjYW4gYmUgcHJvY2Vzc2VkIGJ5CisgICAgICAgIFN0cmVhbUNvbm5lY3Rpb25Q
cm9jZXNzb3IuCisKKyAgICAgICAgQ3VycmVudGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUg
YWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRo
ZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQgdGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAg
IEltcGxlbWVudGVkIGFzIGZvbGxvd3M6CisgICAgICAgIFNlbmRlciBzaGFyZXMgdGhlIHNoYXJl
ZCBtZW1vcnkgYXJlYSB3aXRoIHRoZSBkZXN0aW5hdGlvbiB3aGVuIGNyZWF0aW5nCisgICAgICAg
IHRoZSBkZXN0aW5hdGlvbi4KKworICAgICAgICBJZiB0aGUgbWVzc2FnZSBmaXRzIHRvIHRoZSBz
dHJlYW0gc2hhcmVkIG1lbW9yeSBhcmVhLCB3cml0ZSBpdCB0aGVyZS4KKyAgICAgICAgT3RoZXJ3
aXNlIHNlbmQgaXQgdmlhIG5vcm1hbCBJUEMgYXMgb3V0IG9mIGxpbmUgbWVzc2FnZS4KKworICAg
ICAgICBNZXNzYWdlcyB0byB0aGUgZGVzdGluYXRpb24gYXJyaXZlIGFzIGJlZm9yZSwgaW4gb3Jk
ZXIuIEZvciBlYWNoIG91dCBvZiBsaW5lCisgICAgICAgIG1lc3NhZ2UsIGFuIGVudHJ5IGlzIHB1
c2hlZCB0byB0aGUgc3RyZWFtLiBSZWNlaXZlciB3aWxsIHN0b3AgcHJvY2Vzc2luZyB0aGUKKyAg
ICAgICAgc3RyZWFtIGFuZCBwcm9jZXNzaW5nIHdpbGwgY29udGludWUgb25jZSB0aGUgb3V0LW9m
LWxpbmUKKyAgICAgICAgbWVzc2FnZSBoYXMgYmVlbiBwcm9jZXNzZWQuCisKKyAgICAgICAgU2Vu
ZGVyIGNhbiB3cml0ZSBtZXNzYWdlcyB0byB0aGUgc3RyZWFtIHNpbXVsdGFuZW91cyB0byB0aGUg
cmVjZWl2ZXIgcmVhZGluZworICAgICAgICB0aGUgbWVzc2FnZXMuIFRoaXMgaXMgaW1wbGVtZW50
ZWQgYXMgYSByaW5nIGJ1ZmZlciB3aXRoIGF0b21pYyBzZW5kZXIgYW5kIHJlY2VpdmVyCisgICAg
ICAgIHBvaW50ZXJzLgorCisgICAgICAgIFN0cmVhbSBjb25uZWN0aW9uIHByb2Nlc3NpbmcgaXMg
aW1wbGVtZW50ZWQgYXMgYSBzaGFyZWQgc2VtYXBob3JlLiBUaGlzIHNlbWFwaG9yZQorICAgICAg
ICBpcyBub3RpZmllZCBpZiB0aGUgcmVjZWl2ZXIgaXMgd2FpdGluZyBvbiBpdC4KKworICAgICAg
ICBQZXJmb3JtYW5jZSBpbXBhY3QgKGlNYWMgUHJvKToKKyAgICAgICAgICAgIC0gTW90aW9uTWFy
ayB0cmlhbmdsZXM6IDgwMCBwb2ludHMgLT4gNDUwMCBwb2ludHMKKyAgICAgICAgICAgICAgKH44
ODAwIHBvaW50cyBuby1HUFVQKQorICAgICAgICAgICAgLSBXZWJHTCBzYW1wbGVzIEFxdWFyaXVt
OiAxMDAwIGZpc2ggfjYwZnBzIC0+IDEwMDAwIGZpc2ggfjYwZnBzCisgICAgICAgICAgICAgICh+
MTAwMDAgZmlzaCB3aXRoIG5vLUdQVVApCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY29wZWREaXNjb25uZWN0OjpTY29wZWREaXNjb25u
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NvcGVk
RGlzY29ubmVjdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6U2NvcGVkRGlzY29ubmVjdDo6flNjb3BlZERpc2Nvbm5lY3QpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Qcm9jZXNzb3Ip
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6On5SZW1v
dGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6ZGVpbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6c2VuZCBjb25zdCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMQ29jb2E6OmluaXRpYWxpemUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVN0cmluZ1RleHQpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFN0cmluZz46OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXJzLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjphZGRNZXNzYWdlRmlsdGVyKToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6cmVtb3ZlTWVzc2FnZUZpbHRlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2spOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjppbnZhbGlkYXRlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246Omhhc0luY29taW5nU3luY01lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVRvRmlsdGVyKToKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkRlY29kZXI6OkRl
Y29kZXIpOgorICAgICAgICAoSVBDOjptX2J1ZmZlckRlYWxsb2NhdG9yKToKKyAgICAgICAgKElQ
Qzo6bV9kZXN0aW5hdGlvbklEKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgIChJUEM6Omhh
bmRsZU1lc3NhZ2VTeW5jaHJvbm91cyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VG
aWx0ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5o
LgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TZW1hcGhvcmVIYW5kbGUuaDogQ29waWVkIGZyb20g
U291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oLgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93
dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwSGFuZGxlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9T
dHJlYW1DbGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlT
ZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENv
bm5lY3Rpb246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1w
ZWRMaW1pdCBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25C
dWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKElQQzo6Y3JlYXRlTWVtb3J5KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcik6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6Om9wZXJhdG9yPSk6CisgICAgICAg
IChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJ
UEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDogQWRkZWQuCisgICAgICAgIChJUEM6OlN0cmVh
bUNvbm5lY3Rpb25CdWZmZXI6OndyYXBPZmZzZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyOjphbGlnbk9mZnNldCBjb25zdCk6CisgICAgICAgIChJUEM6OlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVh
bUNvbm5lY3Rpb25CdWZmZXI6OnJlY2VpdmVyT2Zmc2V0KToKKyAgICAgICAgKElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXI6OmRhdGFTaXplIGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlcjo6c2VuZGVyV2FpdFNlbWFwaG9yZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25CdWZmZXI6OmhlYWRlciBjb25zdCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXI6OmhlYWRlclNpemUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
b25uZWN0aW9uRW5jb2Rlci5oOiBBZGRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFt
Q29ubmVjdGlvblByb2Nlc3Nvci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1Db25u
ZWN0aW9uUHJvY2Vzc29yOjpTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yKToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvcjo6ZGlzcGF0Y2gpOgorICAgICAgICAoSVBDOjpT
dHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yOjphZGRTdHJlYW1Db25uZWN0aW9uKToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvcjo6cmVtb3ZlU3RyZWFtQ29ubmVjdGlvbik6
CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3I6OnN0b3ApOgorICAgICAg
ICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yOjp3YWtlVXApOgorICAgICAgICAoSVBD
OjpTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yOjp3YWtlVXBIYW5kbGUpOgorICAgICAgICAoSVBD
OjpTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yOjp3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvcjo6cHJvY2Vzc1N0cmVhbXMpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAg
ICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6
CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZl
ck9mZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFT
aXplIGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNl
bmRTeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2Vp
dmVyPjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAo
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNz
YWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpw
cm9jZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVh
bU1lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21vZGVs
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHA6Cisg
ICAgICAgIChJUEM6OmpzVmFsdWVGb3JBcmd1bWVudHMpOgorICAgICAgICAoSVBDOjptZXNzYWdl
QXJndW1lbnREZXNjcmlwdGlvbnMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL01l
c3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKElQ
Qzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1lKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
bWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJl
YW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VGVz
dFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVkLgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1
ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNl
bmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29uc3QpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2Fn
ZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRl
c3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAgICAg
KE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6CisgICAgICAg
IChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRzIGNvbnN0
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9u
aXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJp
bmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2Fn
ZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnJlc2hhcGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVh
dGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2Fz
TG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
aXRVbnRpbEluaXRpYWxpemVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmluZFRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyRGVwdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpjb2xvck1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2spOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJs
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmZyb250RmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
QnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJp
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJp
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dy
YW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Jl
bmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmlzU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bGluZVdpZHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29y
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVy
U291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c3RlbmNpbEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm00ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtNGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYjFmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dmVydGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRm
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliNGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRl
eEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWJEaXZpc29yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1
ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpibGl0RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlYWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNE
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvcHlUZXhTdWJJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9j
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMXVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTJ1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0zdWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0
cml4M3gyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtTWF0cml4Mng0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWJJNGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VF
bGVtZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJCdWZmZXJpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVy
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1
ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aXNTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2Ft
cGxlclBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmZlbmNlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2kpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNm
b3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm1JbmRpY2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
QmxvY2tCaW5kaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVy
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJy
YXlPRVMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZFZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRN
YXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwdXNoR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpwb3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJy
YXlzQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMS0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ2hlY2sgYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSBmb3IgbnVsbCBj
b25zaXN0ZW50bHkgZXZlcnl3aGVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2Ev
TWFjaFNlbWFwaG9yZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmNw
cAppbmRleCA5MmZjZjE1YzA3ZDkyNGE0NTA3OTM3ZmQyMzA0NTcyYzRkYmJiOTY2Li42ZmIzNTc3
ZWFkMzg0OGNmODBjMDg1ODgxYzdlNmFlMTdjZTNjZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9N
YWNoU2VtYXBob3JlLmNwcApAQCAtMzYsNiArMzYsMTIgQEAgTWFjaFNlbWFwaG9yZTo6TWFjaFNl
bWFwaG9yZSgpCiAgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1MpOwog
fQogCitNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKE1hY2hTZW1hcGhvcmUmJiBvdGhlcikK
KyAgICA6IG1fc2VuZFJpZ2h0KFdURk1vdmUob3RoZXIubV9zZW5kUmlnaHQpKQorICAgICwgbV9z
ZW1hcGhvcmUoc3RkOjpleGNoYW5nZShvdGhlci5tX3NlbWFwaG9yZSwgU0VNQVBIT1JFX05VTEwp
KQoreworfQorCiBNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJiBz
ZW5kUmlnaHQpCiAgICAgOiBtX3NlbmRSaWdodChXVEZNb3ZlKHNlbmRSaWdodCkpCiAgICAgLCBt
X3NlbWFwaG9yZShtX3NlbmRSaWdodC5zZW5kUmlnaHQoKSkKQEAgLTQ1LDI5ICs1MSw1NiBAQCBN
YWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQpCiAK
IE1hY2hTZW1hcGhvcmU6On5NYWNoU2VtYXBob3JlKCkKIHsKLSAgICBpZiAoIW1fc2VuZFJpZ2h0
KQotICAgICAgICBzZW1hcGhvcmVfZGVzdHJveShtYWNoX3Rhc2tfc2VsZigpLCBtX3NlbWFwaG9y
ZSk7CisgICAgZGVzdHJveSgpOworfQorCitNYWNoU2VtYXBob3JlJiBNYWNoU2VtYXBob3JlOjpv
cGVyYXRvcj0oTWFjaFNlbWFwaG9yZSYmIG90aGVyKQoreworICAgIGlmICh0aGlzICE9ICZvdGhl
cikgeworICAgICAgICBkZXN0cm95KCk7CisgICAgICAgIG1fc2VuZFJpZ2h0ID0gV1RGTW92ZShv
dGhlci5tX3NlbmRSaWdodCk7CisgICAgICAgIG1fc2VtYXBob3JlID0gc3RkOjpleGNoYW5nZShv
dGhlci5tX3NlbWFwaG9yZSwgU0VNQVBIT1JFX05VTEwpOworICAgIH0KKworICAgIHJldHVybiAq
dGhpczsKIH0KIAogdm9pZCBNYWNoU2VtYXBob3JlOjpzaWduYWwoKQogewotICAgIHNlbWFwaG9y
ZV9zaWduYWwobV9zZW1hcGhvcmUpOworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3NpZ25hbCht
X3NlbWFwaG9yZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1Mp
OwogfQogCiB2b2lkIE1hY2hTZW1hcGhvcmU6OndhaXQoKQogewotICAgIHNlbWFwaG9yZV93YWl0
KG1fc2VtYXBob3JlKTsKKyAgICBhdXRvIHJldCA9IHNlbWFwaG9yZV93YWl0KG1fc2VtYXBob3Jl
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CiB9CiAKIHZv
aWQgTWFjaFNlbWFwaG9yZTo6d2FpdEZvcihTZWNvbmRzIHRpbWVvdXQpCiB7CiAgICAgYXV0byBz
ZWNvbmRzID0gdGltZW91dC5zZWNvbmRzQXM8dW5zaWduZWQ+KCk7Ci0gICAgc2VtYXBob3JlX3Rp
bWVkd2FpdChtX3NlbWFwaG9yZSwgeyBzZWNvbmRzLCBzdGF0aWNfY2FzdDxjbG9ja19yZXNfdD4o
dGltZW91dC5uYW5vc2Vjb25kc0FzPHVpbnQ2NF90PigpIC0gc2Vjb25kcyAqIE5TRUNfUEVSX1NF
QykgfSk7CisgICAgYXV0byByZXQgPSBzZW1hcGhvcmVfdGltZWR3YWl0KG1fc2VtYXBob3JlLCB7
IHNlY29uZHMsIHN0YXRpY19jYXN0PGNsb2NrX3Jlc190Pih0aW1lb3V0Lm5hbm9zZWNvbmRzQXM8
dWludDY0X3Q+KCkgLSBzZWNvbmRzICogTlNFQ19QRVJfU0VDKSB9KTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyB8fCByZXQgPT0gS0VSTl9PUEVSQVRJT05fVElN
RURfT1VUKTsKIH0KIAotTWFjaFNlbmRSaWdodCBNYWNoU2VtYXBob3JlOjpjcmVhdGVTZW5kUmln
aHQoKQorTWFjaFNlbmRSaWdodCBNYWNoU2VtYXBob3JlOjpjcmVhdGVTZW5kUmlnaHQoKSBjb25z
dAogewogICAgIHJldHVybiBNYWNoU2VuZFJpZ2h0OjpjcmVhdGUobV9zZW1hcGhvcmUpOwogfQog
Cit2b2lkIE1hY2hTZW1hcGhvcmU6OmRlc3Ryb3koKQoreworICAgIGlmIChtX3NlbmRSaWdodCkg
eworICAgICAgICBtX3NlbmRSaWdodCA9IE1hY2hTZW5kUmlnaHQoKTsKKyAgICAgICAgbV9zZW1h
cGhvcmUgPSBTRU1BUEhPUkVfTlVMTDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
bV9zZW1hcGhvcmUgPT0gU0VNQVBIT1JFX05VTEwpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRv
IHJldCA9IHNlbWFwaG9yZV9kZXN0cm95KG1hY2hfdGFza19zZWxmKCksIG1fc2VtYXBob3JlKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CisgICAgbV9zZW1h
cGhvcmUgPSBTRU1BUEhPUkVfTlVMTDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmggYi9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmgKaW5kZXggYmU3Y2VhMDQ2YjgxMmNiYzNlYjNhNzIxMzBk
OWE1YmEwMDkzZjkyZi4uNGI1ZGI3NGU3MTZjMzI4Zjc3YjI2MmRiOWQzYjBjYzE1Y2Q5MDc5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaApAQCAtMzcsMTYgKzM3LDIwIEBAIGNs
YXNzIE1hY2hTZW1hcGhvcmUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hY2hTZW1hcGhv
cmUpOwogcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBNYWNoU2VtYXBob3JlKCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW1hcGhvcmUoTWFjaFNlbWFwaG9yZSYmKTsKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgTWFjaFNlbWFwaG9yZShNYWNoU2VuZFJpZ2h0
JiYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+TWFjaFNlbWFwaG9yZSgpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBNYWNoU2VtYXBob3JlJiBvcGVyYXRvcj0oTWFjaFNlbWFwaG9yZSYmKTsK
IAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNpZ25hbCgpOwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHdhaXQoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWl0Rm9y
KFNlY29uZHMpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW5kUmlnaHQgY3JlYXRl
U2VuZFJpZ2h0KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW5kUmlnaHQgY3JlYXRl
U2VuZFJpZ2h0KCkgY29uc3Q7CiAKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gbV9zZW5kUmlnaHQgfHwgbV9zZW1hcGhvcmUgIT0gU0VNQVBIT1JFX05VTEw7IH0K
IHByaXZhdGU6CisgICAgdm9pZCBkZXN0cm95KCk7CiAgICAgTWFjaFNlbmRSaWdodCBtX3NlbmRS
aWdodDsKICAgICBzZW1hcGhvcmVfdCBtX3NlbWFwaG9yZSB7IFNFTUFQSE9SRV9OVUxMIH07CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IDkwMDU2Njk0YTUzMDBkYzNhOGJmZGQxZWUzMGVjMTZiZDhlYmRl
YTguLjMzNjc0OThlYjBjZjM2NWE4ODI5M2EyNDZhYWM3MzNkMDg5MzZiODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKQEAgLTI5NCw3ICsyOTQsNyBAQCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6YXVkaW9TZXNzaW9uUHJveHkoKQogdm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShwYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFdyYXBwZXI+KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92
ZShwYXJhbWV0ZXJzKSkpOworICAgICAgICByZXR1cm4gU2NvcGVkRGlzY29ubmVjdCB7IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkgfTsK
ICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOwogfQpAQCAtMzA1LDIxICszMDUsMTEgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkKICAg
ICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlcihSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4mJiByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKQotICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKFdURk1vdmUocmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCkpCi17Ci19Ci0KLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIo
KQotewotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+ZGlzY29ubmVjdCgpOwotfQotCiAj
aWYgRU5BQkxFKFdFQkdMKQotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVH
cmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0
cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcikKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRl
cywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQogewogICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgICAgICByZXR1cm4gU2NvcGVkRGlzY29ubmVjdCB7IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoYXR0cmlidXRlcyksIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgV1RGTW92ZShzdHJlYW0pKSB9OwogICAgIH0pOwogICAgIEFTU0VS
VF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRl
eCA0NDE4Y2E2YWVhMmE0MDhlMzc3NTM4OTBlMWQzMGRkZWM3NmVjN2NhLi5lZDI4Mzc3MTcxNDMx
Yzg2ZDUyNjYyNTM1MDgwNWFmZDQ1NDViNTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEzMSw3ICsxMzEsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQg
cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAj
ZW5kaWYKIApAQCAtMTk0LDIwICsxOTQsMzggQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dz
RGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBjbGFzcyBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kV3JhcHBlciB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgY2xhc3MgU2NvcGVkRGlzY29ubmVjdCB7CiAg
ICAgcHVibGljOgotICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcihSZWY8UmVt
b3RlUmVuZGVyaW5nQmFja2VuZD4mJik7Ci0gICAgICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
V3JhcHBlcigpOworICAgICAgICBTY29wZWREaXNjb25uZWN0KCkgPSBkZWZhdWx0OworICAgICAg
ICBleHBsaWNpdCBTY29wZWREaXNjb25uZWN0KFJlZjxUPiYmIG9iamVjdCkKKyAgICAgICAgICAg
IDogbV9vYmplY3QoV1RGTW92ZShvYmplY3QpKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAg
ICAgU2NvcGVkRGlzY29ubmVjdChTY29wZWREaXNjb25uZWN0JiYgb3RoZXIpCisgICAgICAgICAg
ICA6IG1fb2JqZWN0KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIG51bGxwdHIpKQorICAg
ICAgICB7CisgICAgICAgIH0KKyAgICAgICAgU2NvcGVkRGlzY29ubmVjdCYgb3BlcmF0b3I9KFNj
b3BlZERpc2Nvbm5lY3QmJiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fb2Jq
ZWN0KQorICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5kaXNjb25uZWN0KCk7CisgICAgICAgICAg
ICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIG51bGxwdHIpOworICAg
ICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgICAgIH5TY29wZWREaXNjb25u
ZWN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fb2JqZWN0KQorICAgICAgICAgICAg
ICAgIG1fb2JqZWN0LT5kaXNjb25uZWN0KCk7CisgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ7CisgICAgICAgIFJlZlB0cjxUPiBtX29iamVjdDsKICAgICB9OwotCi0gICAgdXNpbmcgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcj4+OworICAg
IHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLCBTY29wZWREaXNjb25uZWN0PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsK
ICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1h
cDsKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgU2NvcGVkRGlz
Y29ubmVjdDxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+OwogICAgIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWFwIG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXA7CiAjZW5kaWYKICNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwY2Jj
NWQ4Nzk4M2U2NjZlNDhlODM5YTY0NjQ4OTg3OTUwYTM5MmJmLi4wZGRjYWFhM2FhMGEwNTk0ZWQ0
ZjU2ZDc2YWZjMDg1MzM0MjJlMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MjYsNyArMjYsNyBAQCBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRz
RGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoc3RydWN0
IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0
ZXJzKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUo
V0VCR0wpCi0gICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lk
IENyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIgc3RyZWFtKQogICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNl
bmRpZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmNwcAppbmRleCBkODA0ZDFmYTk5OTRkNWZmZjMxNDM2NGQ1OWJlZjk1ZWI0OWVhOTk5Li41ZTAy
ODc3MTA0OGRmYzNmYjEyNjlkNDdmNmZhZjhmYzhkMTAyOTcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHAKQEAgLTMxLDU1ICszMSw3MCBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiU3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+Ci0KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorLy8gQ3VycmVudGx5IHdlIGhhdmUgb25l
IGdsb2JhbCBXZWJHTCBwcm9jZXNzaW5nIGluc3RhbmNlLgorc3RhdGljIElQQzo6U3RyZWFtQ29u
bmVjdGlvblByb2Nlc3NvciYgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Qcm9jZXNzb3Io
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJUEM6OlN0cmVhbUNvbm5lY3Rpb25Qcm9j
ZXNzb3I+IGluc3RhbmNlKCJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0aHJlYWQiKTsKKyAgICBy
ZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKQorUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogI2VuZGlmCiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkK
LSAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQotICAgICwgbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYm
IHN0cmVhbSkKKyAgICA6IG1fc3RyZWFtQ29ubmVjdGlvbihJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+OjpjcmVhdGUoZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtKSwgcmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xTdHJlYW1Qcm9jZXNzb3IoKSkpCiAgICAgLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkp
Ci0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0
KCksICp0aGlzKTsKLSAgICBtX2NvbnRleHQtPmFkZENsaWVudCgqdGhpcyk7Ci0gICAgU3RyaW5n
IGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6RVhU
RU5TSU9OUyk7Ci0gICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+
Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRl
ZChleHRlbnNpb25zLCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICByZW1vdGVH
cmFwaGljc0NvbnRleHRHTFN0cmVhbVByb2Nlc3NvcigpLmRpc3BhdGNoKFthdHRyaWJ1dGVzID0g
V1RGTW92ZShhdHRyaWJ1dGVzKSwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11
dGFibGUgeworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmli
dXRlcykpOworICAgIH0pOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdN
ZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
IH0KIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgp
CiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKCFtX3N0cmVhbUNv
bm5lY3Rpb24pOworICAgIEFTU0VSVCghbV9jb250ZXh0KTsKIH0KIAotR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKSBjb25zdAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdCgp
CiB7Ci0gICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJl
Y2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVByb2Nlc3NvcigpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgeworICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kZWluaXRpYWxpemUoKTsKKyAgICB9KTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICBy
ZXR1cm4gJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAobV9jb250ZXh0KSB7CisgICAgICAgIG1fY29udGV4dC0+YWRk
Q2xpZW50KCp0aGlzKTsKKyAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdl
dFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6RVhURU5TSU9OUyk7CisgICAgICAgIFN0cmluZyBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6
OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKHJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMU3RyZWFtUHJvY2Vzc29yKCkud2FrZVVwSGFuZGxlKCksIGV4dGVuc2lvbnMsIHJlcXVl
c3RhYmxlRXh0ZW5zaW9ucykpOworICAgIH0gZWxzZQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNMb3N0KCkpOwogfQogCi11aW50NjRfdCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGVpbml0aWFsaXplKCkKIHsKLSAgICBy
ZXR1cm4gbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKTsKKyAgICBtX2Nv
bnRleHQgPSBudWxscHRyOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCkBAIC04OCw3ICsx
MDMsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaWRDb21wb3NpdGUoKQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KCkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNMb3N0KCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNMb3N0KCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCkBAIC05OCw3ICsxMTMsNyBAQCB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5n
ZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDdkYjBjZjUxOGFiZjliYjI1YWIzMzZk
ZGRlMDM5OTkyNWFhMDVmMzIuLmZjMGMwYmU0MzEyNzM0ZmYzNjM2MTNjN2MxNzFmZmVlNjExOWZk
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMCArMjgsOSBAQAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
LSNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCi0KKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgpAQCAtNDksMzEgKzQ4LDIwIEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwot
CiAvLyBHUFUgcHJvY2VzcyBzaWRlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcmVjZWl2ZXMgbWVz
c2FnZXMgYWJvdXQgR3JhcGhpY3NDb250ZXh0R0wgY2FsbHMKIC8vIGFuZCBpc3N1ZXMgcmVhbCBH
cmFwaGljc0NvbnRleHRHTCBjYWxscyBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZXMuCiAv
LyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29s
cy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wuCi1jbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTAotICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgotICAgICwgcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgotICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TDo6Q2xpZW50IHsKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiwgcHJpdmF0ZSBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxSZW1vdGVHcmFw
aGljc0NvbnRleHRHTD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKLSAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7
CisgICAgLy8gSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMPiB0ZW1wbGF0ZSBjb250cmFjdCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2b2lkIGRpZFJlY2Vp
dmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJUEM6OkRl
Y29kZXImKTsKIAogcHJvdGVjdGVkOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4pOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJy
aWRlcy4KLSAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QgZmluYWw7Ci0gICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dCBmaW5hbDsKLQotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KLSAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKIAogICAgIC8vIEdyYXBoaWNz
Q29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkQ29tcG9zaXRlKCkgZmlu
YWw7CkBAIC05Myw4ICs4MSwxMyBAQCBwcm90ZWN0ZWQ6CiAKICNpbmNsdWRlICJSZW1vdGVHcmFw
aGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKIAotICAgIFJlZjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwotICAgIFdlYWtQdHI8
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwor
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYmKTsKKyAgICB2b2lkIGRlaW5pdGlhbGl6ZSgpOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgYm9vbCBzZW5kKFQmJiBtZXNzYWdlKSBjb25zdCB7IHJldHVybiBtX3N0cmVh
bUNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsgfQorCisgICAgUmVmUHRyPElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+IG1fc3RyZWFtQ29ubmVjdGlvbjsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IG1fY29udGV4dDsK
ICAgICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KaW5k
ZXggMTkxNTFiZDBjYTEzOWI1Nzk4MGE2MzA2ZjNhNzRlNjE4M2QxMTk3YS4uZmQ1ZDY2ZGU0M2Yw
MzE2N2NkY2EzYjVmZjY1NWQzYmMxYTFhYWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogLy8gVGhpcyBmaWxlIGlzIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgTm90UmVmQ291bnRlZCB7CittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFy
ZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91
cwpAQCAtMjk2LDQgKzI5NiwzIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IE5vdFJlZkNvdW50ZWQgewogfQogCiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EuY3BwCmluZGV4IDhlMmQxZmM2NTE4NjI4Mzk1ZTk3NDFjNDRlN2FjODUxYjA4ZWY2Mjcu
LmMyNDM5NTFhY2QxZWU5OTVlOWI2ZWEwMzRiODM3YTU0ZmFmNjQxODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTEsMyArMSw0IEBACisKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTM5LDEw
ICs0MCwxMSBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLCBwcml2YXRlIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKIHB1YmxpYzoKLSAgICBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSgpIGZpbmFsID0gZGVm
YXVsdDsKIAogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KKyAgICB2
b2lkIGluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZp
bmFsOwogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
VEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYpIGZpbmFsOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVzLgpAQCAtNTYsMTQgKzU4LDIwIEBAIHByaXZh
dGU6CiAKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcikKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0p
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworfQorCitSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUoYXR0cmlidXRlcyksIGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgV1RGTW92ZShzdHJlYW0pKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+KG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hKGF0dHJpYnV0ZXMsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcikpOwogfQogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgOiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBjb25uZWN0aW9uLCBpZGVudGlmaWVy
LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhhdHRyaWJ1dGVz
LCB0aGlzKSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aW5pdGlhbGl6ZShX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogeworICAg
IG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KGF0dHJpYnV0ZXMsIHRoaXMpOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjppbml0aWFs
aXplKFdURk1vdmUoYXR0cmlidXRlcykpOwogfQogCiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbjo6QnVmZmVyIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVC
dWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAppbmRleCBiN2JjYTdjNDg2OTU4MDIyOTRiZjk0YWVmMDc0
MGNmNzBlM2Y2MmFmLi42MjNhNTJhNDVhNGZhODVkYzEyZDQ4YTk1ZTU2ZWM2Zjk2MmQ5ZTdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShMSUJXRUJSVEMpCiAK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIkxpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdvcmtS
VENNb25pdG9yLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IDMyMDc2YWZkMDJhODk4YTFlMzlkZTI4M2Ux
MDJiODU5NDdmOGVkYzcuLjUzMzUwZjlmN2M4YzEyYmU2Mjc1OTk5YzdlYmZjM2M3ZTA5MWJjYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCisj
aW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAog
bmFtZXNwYWNlIElQQyB7CkBAIC03NSw2ICs3Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lID0gdm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVy
PgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBUIHZhbHVlKQogICAg
IHsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKQEAgLTkx
LDYgKzkzLDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19lbnVtX3Y8VD4+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2YWx1ZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPFQ+KFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8VD4o
dmFsdWUpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5j
cHAKaW5kZXggYjBhNDNkZTlkN2ExMzcyMTZhMTliZjdkMGJkNWUxOTExM2I1ZGE2OC4uYmQ0ZWVk
YWIxMDM3YWQ5ZTM1ODdjN2I1NDdiZTQ0ZWE1Mzg3YjA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTExMSw3ICsxMTIs
NyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENvZGVyPENTdHJpbmc+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgQ1N0cmluZwogICAgIHJldHVybiB0cnVlOwogfQogCi0KK3Rl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIFNw
ZWNpYWwgY2FzZSB0aGUgbnVsbCBzdHJpbmcuCkBAIC0xMzAsNiArMTMxLDEwIEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiAgICAgZWxzZQogICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczE2KCkp
LCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBhbGlnbm9mKFVDaGFyKSk7CiB9Cit0ZW1wbGF0ZQor
dm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgY29u
c3QgU3RyaW5nJik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29k
ZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBjb25z
dCBTdHJpbmcmKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMg
aW5saW5lIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVy
LCB1aW50MzJfdCBsZW5ndGgpCkBAIC0xMzksMTIgKzE0NCwxMiBAQCBzdGF0aWMgaW5saW5lIE9w
dGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJf
dCBsZW5ndAogICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgfQotICAgIAorCiAgICAgQ2hhcmFjdGVyVHlwZSogYnVmZmVyOwog
ICAgIFN0cmluZyBzdHJpbmcgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBi
dWZmZXIpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyKSwgbGVuZ3RoICogc2l6ZW9mKENoYXJhY3RlclR5cGUp
LCBhbGlnbm9mKENoYXJhY3RlclR5cGUpKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LSAgICAKKwogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKQEAgLTE1MywxNiArMTU4LDE2IEBAIFdB
Uk5fVU5VU0VEX1JFVFVSTiBPcHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgdWludDMyX3QgbGVuZ3RoOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUobGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAK
KwogICAgIGlmIChsZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgp
KSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG51bGwgc3RyaW5nLgogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAgICAgfQotICAgIAorCiAgICAgYm9vbCBpczhCaXQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShpczhCaXQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIAor
CiAgICAgaWYgKGlzOEJpdCkKICAgICAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8TENoYXI+
KGRlY29kZXIsIGxlbmd0aCk7CiAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8VUNoYXI+KGRl
Y29kZXIsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaAppbmRleCAyMGViMTdhMGZkODI2MGQ0MGJlYzdmY2RhYWVhMjNiYzVlODY1ZTA5Li5mODU2
OTgwNzNkZDA0NWIyODE2ZTE2MTBjYTQ5OTZhNWQ0ZWU2YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTU1LDYgKzU1LDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50Q29kZXIgewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5j
ZTxULCBFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZl
cmVuY2U8VCwgRXh0ZW50PjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5
cGUmIGFycmF5UmVmZXJlbmNlKQogICAgIHsKICAgICAgICAgaWYgKCFFeHRlbnQpCkBAIC03NCw2
ICs3NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1
bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVuCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHlu
YW1pY0V4dGVudD4+IHsKICAgICB1c2luZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVy
ZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCiAgICAgewogICAgICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJlZmVyZW5jZS5zaXplKCkpOwpA
QCAtMjY2LDYgKzI2OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVj
dCBBcmd1bWVudENvZGVyPHN0ZDo6cGFpcjxULCBVPj4gewogCiB0ZW1wbGF0ZTxzaXplX3QgaW5k
ZXgsIHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1cGxlRW5jb2RlciB7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4mIHR1cGxlKQogICAgIHsKICAg
ICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxzaXplb2YuLi4oRWxlbWVudHMpIC0gaW5kZXg+KHR1
cGxlKTsKQEAgLTI3NSw2ICsyNzgsNyBAQCBzdHJ1Y3QgVHVwbGVFbmNvZGVyIHsKIAogdGVtcGxh
dGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+CiBzdHJ1Y3QgVHVwbGVFbmNvZGVyPDAsIEVsZW1lbnRz
Li4uPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JikKICAgICB7CiAg
ICAgfQpAQCAtMzM4LDYgKzM0Miw3IEBAIHN0cnVjdCBUdXBsZURlY29kZXI8MD4gewogfTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6
dHVwbGU8RWxlbWVudHMuLi4+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjp0dXBsZTxF
bGVtZW50cy4uLj4mIHR1cGxlKQogICAgIHsKICAgICAgICAgVHVwbGVFbmNvZGVyPHNpemVvZi4u
LihFbGVtZW50cyksIEVsZW1lbnRzLi4uPjo6ZW5jb2RlKGVuY29kZXIsIHR1cGxlKTsKQEAgLTM3
NCw2ICszNzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5
cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6S2V5VmFsdQogdGVtcGxhdGU8Ym9vbCBmaXhl
ZFNpemVFbGVtZW50cywgdHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4gc3RydWN0IFZlY3RvckFyZ3Vt
ZW50Q29kZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+IHN0cnVjdCBWZWN0
b3JBcmd1bWVudENvZGVyPGZhbHNlLCBULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVD
YXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mIHZlY3RvcikKICAgICB7CiAg
ICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZlY3Rvci5zaXplKCkpOwpA
QCAtNDExLDYgKzQxNyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluCiB9OwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2Rlcjx0cnVl
LCBULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4geworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eT4mIHZlY3RvcikKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHZlY3Rvci5zaXplKCkpOwpAQCAtNzUzLDYgKzc2MCw3IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Q1N0cmluZz4gewogfTsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTdHJpbmc+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7
CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU3Ry
aW5nJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlKERlY29kZXImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggY2RhZjEzYTVkNmIy
YWQwYTUxNzY3YmRjMDUxMTkwZDFlZmM0NmMyZS4uZTgxNzNkNjI5ZTdiOTFjMmZmNzBiNWJmOGFm
NmY1ZGVlNDVmMTk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5j
cHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRlc3Rp
bmF0aW9uTWVzc2FnZUZpbHRlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJN
ZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxtZW1vcnk+CkBAIC0zODEsNiArMzgzLDI4IEBAIHZv
aWQgQ29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCB1CiAgICAgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLnJlbW92
ZShrZXkpOwogfQogCit2b2lkIENvbm5lY3Rpb246OmFkZE1lc3NhZ2VGaWx0ZXIoTWVzc2FnZUZp
bHRlciYgbWVzc2FnZUZpbHRlciwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCkKK3sKKyAgICBhdXRvIG1lc3NhZ2VGaWx0ZXJMb2NrZXIgPSBob2xkTG9j
ayhtX21lc3NhZ2VGaWx0ZXJzTG9jayk7CisgICAgbV9tZXNzYWdlRmlsdGVycy5hZGRGaWx0ZXIo
bWVzc2FnZUZpbHRlciwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAgICBmb3IgKGF1dG8g
aXQgPSBtX2luY29taW5nTWVzc2FnZXMuYmVnaW4oKSwgZW5kID0gbV9pbmNvbWluZ01lc3NhZ2Vz
LmVuZCgpOyBpdCAhPSBlbmQ7KSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYg
bWVzc2FnZSA9ICppdDsKKyAgICAgICAgbWVzc2FnZUZpbHRlci5kaWRSZWNlaXZlTWVzc2FnZSgq
dGhpcywgbWVzc2FnZSk7CisgICAgICAgIGlmICghbWVzc2FnZSkgeworICAgICAgICAgICAgbV9p
bmNvbWluZ01lc3NhZ2VzLnJlbW92ZShpdCk7CisgICAgICAgICAgICBlbmQgPSBtX2luY29taW5n
TWVzc2FnZXMuZW5kKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgKytpdDsKKyAgICB9
Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlTWVzc2FnZUZpbHRlcihSZWNlaXZlck5hbWUg
cmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIGF1dG8gbWVzc2Fn
ZUZpbHRlckxvY2tlciA9IGhvbGRMb2NrKG1fbWVzc2FnZUZpbHRlcnNMb2NrKTsKKyAgICBtX21l
c3NhZ2VGaWx0ZXJzLnJlbW92ZUZpbHRlcihyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwor
fQorCiB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWVzc2Fn
ZShUaHJlYWRNZXNzYWdlUmVjZWl2ZXImIHRocmVhZE1lc3NhZ2VSZWNlaXZlciwgRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBpZiAoIWRlY29kZXIuaXNTeW5jTWVzc2FnZSgpKSB7CkBAIC00MDks
NyArNDMzLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpzZXREaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtR
dWV1ZUNhbGxiYWNrKERpZENsb3NlT25Db25uZWN0aW9uV28KIHsKICAgICBBU1NFUlQoIW1faXND
b25uZWN0ZWQpOwogCi0gICAgbV9kaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNr
ID0gY2FsbGJhY2s7ICAgIAorICAgIG1fZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxs
YmFjayA9IGNhbGxiYWNrOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmludmFsaWRhdGUoKQpAQCAt
NDIwLDcgKzQ0NCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6aW52YWxpZGF0ZSgpCiAgICAgICAgIC8v
IFNvbWVvbmUgYWxyZWFkeSBjYWxsZWQgaW52YWxpZGF0ZSgpLgogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiAKICAgICBtX2Nvbm5lY3Rpb25R
dWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxl
IHsKQEAgLTQ4OCw3ICs1MTIsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0ZDo6
dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8U2VuZE9wdAogICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0Z29pbmdNZXNzYWdlc011dGV4KTsKICAgICAgICAg
bV9vdXRnb2luZ01lc3NhZ2VzLmFwcGVuZChXVEZNb3ZlKGVuY29kZXIpKTsKICAgICB9Ci0gICAg
CisKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFkZCBhIGJvb2xlYW4gZmxhZyBzbyB3ZSBkb24n
dCBjYWxsIHRoaXMgd2hlbiB3b3JrIGhhcyBhbHJlYWR5IGJlZW4gc2NoZWR1bGVkLgogICAgIG1f
Y29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zZW5kT3V0Z29pbmdNZXNzYWdl
cygpOwpAQCAtNjQzLDIxICs2NjcsMjEgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5l
Y3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgTWUKICAgICBN
b25vdG9uaWNUaW1lIGFic29sdXRlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGltZW91
dDsKIAogICAgIHdpbGxTZW5kU3luY01lc3NhZ2Uoc2VuZFN5bmNPcHRpb25zKTsKLSAgICAKKwog
ICAgIGJvb2wgdGltZWRPdXQgPSBmYWxzZTsKICAgICB3aGlsZSAoIXRpbWVkT3V0KSB7CiAgICAg
ICAgIC8vIEZpcnN0LCBjaGVjayBpZiB3ZSBoYXZlIGFueSBtZXNzYWdlcyB0aGF0IHdlIG5lZWQg
dG8gcHJvY2Vzcy4KICAgICAgICAgU3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkuZGlzcGF0
Y2hNZXNzYWdlcygpOwotICAgICAgICAKKwogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOwogCiAgICAgICAgICAgICAvLyBTZWNv
bmQsIGNoZWNrIGlmIHRoZXJlIGlzIGEgc3luYyByZXBseSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFj
ay4KICAgICAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nU3luY1JlcGxpZXMuaXNFbXB0eSgpKTsK
LSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBQZW5kaW5nU3luY1JlcGx5JiBwZW5kaW5nU3lu
Y1JlcGx5ID0gbV9wZW5kaW5nU3luY1JlcGxpZXMubGFzdCgpOwogICAgICAgICAgICAgQVNTRVJU
X1VOVVNFRChzeW5jUmVxdWVzdElELCBwZW5kaW5nU3luY1JlcGx5LnN5bmNSZXF1ZXN0SUQgPT0g
c3luY1JlcXVlc3RJRCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgLy8gV2UgZm91bmQg
dGhlIHN5bmMgcmVwbHksIG9yIHRoZSBjb25uZWN0aW9uIHdhcyBjbG9zZWQuCiAgICAgICAgICAg
ICBpZiAocGVuZGluZ1N5bmNSZXBseS5kaWRSZWNlaXZlUmVwbHkgfHwgIW1fc2hvdWxkV2FpdEZv
clN5bmNSZXBsaWVzKSB7CiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVN5bmNSZXBseShzZW5k
U3luY09wdGlvbnMpOwpAQCAtNzMyLDEwICs3NTYsOCBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nl
c3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAg
fQogCiAgICAgYXV0byB0aHJlYWRlZFJlY2VpdmVyS2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGlj
X2Nhc3Q8dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgbWVzc2FnZS0+
ZGVzdGluYXRpb25JRCgpKTsKLSAgICBpZiAoIVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcDo6
aXNWYWxpZEtleSh0aHJlYWRlZFJlY2VpdmVyS2V5KSB8fCAhVGhyZWFkTWVzc2FnZVJlY2VpdmVy
TWFwOjppc1ZhbGlkS2V5KHRocmVhZGVkUmVjZWl2ZXJLZXkpKSB7Ci0gICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdl
TmFtZSA9IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShtZXNzYWdlTmFt
ZSk7Ci0gICAgICAgIH0pOworICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwOjpp
c1ZhbGlkS2V5KHRocmVhZGVkUmVjZWl2ZXJLZXkpIHx8ICFUaHJlYWRNZXNzYWdlUmVjZWl2ZXJN
YXA6OmlzVmFsaWRLZXkodGhyZWFkZWRSZWNlaXZlcktleSkgfHwgIURlc3RpbmF0aW9uTWVzc2Fn
ZUZpbHRlcjo6aXNWYWxpZE1lc3NhZ2UoKm1lc3NhZ2UpKSB7CisgICAgICAgIGRpc3BhdGNoRGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC03NDUsNiArNzY3LDExIEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJv
Y2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVzc2FnZSkKICAg
ICBpZiAoZGlzcGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcihtZXNzYWdlKSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgLy8gTm90ZTogTWVzc2FnZSBmaWx0ZXIgbG9jayBpcyBoZWxkIGR1cmlu
ZyBtZXNzYWdlIHJvdXRpbmcsIHNvIHRoYXQgYWRkaW5nIGFuZCByZW1vdmluZyBtZXNzYWdlIGZp
bHRlcnMKKyAgICAvLyBkb2VzIG5vdCBjYXVzZSBtZXNzYWdlIHJlb3JkZXJpbmcuCisgICAgYXV0
byBtZXNzYWdlRmlsdGVyTG9ja2VyID0gaG9sZExvY2sobV9tZXNzYWdlRmlsdGVyc0xvY2spOwor
ICAgIGlmIChkaXNwYXRjaE1lc3NhZ2VUb0ZpbHRlcihtZXNzYWdlKSkKKyAgICAgICAgcmV0dXJu
OwogICAgIGlmIChtZXNzYWdlLT5pc1N5bmNNZXNzYWdlKCkpIHsKICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja011dGV4KTsKIApAQCAt
ODE3LDcgKzg0NCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6aGFzSW5jb21pbmdTeW5jTWVzc2FnZSgp
CiAgICAgICAgIGlmIChtZXNzYWdlLT5pc1N5bmNNZXNzYWdlKCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTk1NCw3
ICs5ODEsMTMgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXIm
IGRlY29kZXIpCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBpZiAoIVJ1bkxvb3A6OmlzTWFpbigpKSB7CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdl
TmFtZV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+aXNWYWxp
ZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
Pm1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShwcm90ZWN0ZWRUaGlzLCBtZXNzYWdl
TmFtZSk7CisgICAgICAgIH0pOworICAgIH0KIAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC0xMDk5LDYgKzExMzIsMTIgQEAgYm9vbCBDb25uZWN0aW9uOjpkaXNwYXRj
aE1lc3NhZ2VUb1RocmVhZFJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYgbWVzc2EK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdl
VG9GaWx0ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNzYWdlKQoreworICAgIG1fbWVz
c2FnZUZpbHRlcnMuZGlkUmVjZWl2ZU1lc3NhZ2UoKnRoaXMsIG1lc3NhZ2UpOworICAgIHJldHVy
biAhbWVzc2FnZTsKK30KKwogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKQEAgLTExMTAsNiArMTE0OSw5IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNz
YWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlKQogICAgIC8vIFRoZSBtZXNzYWdl
IG1pZ2h0IGhhdmUgYWxyZWFkeSBiZWVuIGRpc3BhdGNoZWQgZnJvbSB0aGUgSVBDIFdvcmtRdWV1
ZSB0byB0aGUgbWFpbiB0aHJlYWQgYnkgdGhlIHRpbWUgdGhlCiAgICAgLy8gY2xpZW50IHJlZ2lz
dGVycyBpdHNlbGYgYXMgYSBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuIFRvIGFkZHJlc3MgdGhp
cywgd2UgY2hlY2sgYWdhaW4gZm9yIG1lc3NhZ2VzIHJlY2VpdmVycwogICAgIC8vIG9uY2UgdGhl
IG1lc3NhZ2UgYXJyaXZlcyBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgLy8gRklYTUU6IFRoaXMg
aGFzIGEgbWVzc2FnZSBvcmRlcmluZyBidWcgd2hlcmUgdGhlIGVhcmx5IG1lc3NhZ2VzIGRpc3Bh
dGNoZWQgaGVyZSB3b3VsZCBhcnJpdmUKKyAgICAvLyBsYXRlciB0aGFuIGxhdGVyIG1lc3NhZ2Vz
IHRoYXQgZ2V0IGRpc3BhdGNoZWQgYnkgdGhlIG1lc3NhZ2UgcHJvY2Vzc2luZyBxdWV1ZS4gVGhp
cyBzaG91bGQgYmUgZml4ZWQgYnkgbWFraW5nIFdvcmtRdWV1ZVJlY2VpdmVyCisgICAgLy8gYSBt
ZXNzYWdlIGZpbHRlci4KICAgICBpZiAoZGlzcGF0Y2hNZXNzYWdlVG9Xb3JrUXVldWVSZWNlaXZl
cihtZXNzYWdlKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTIyLDcgKzExNjQsNyBAQCB2b2lk
IENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVz
c2FnZSkKICAgICB9CiAKICAgICBtX2luRGlzcGF0Y2hNZXNzYWdlQ291bnQrKzsKLSAgICAKKwog
ICAgIGJvb2wgaXNEaXNwYXRjaGluZ01lc3NhZ2VXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkgPSAo
bWVzc2FnZS0+c2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoKSA9
PSBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5OjpZZXMpCiAgICAgICAgIHx8
IChtZXNzYWdlLT5zaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSgp
ID09IFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHk6Olllc0R1cmluZ1VuYm91
bmRlZElQQyAmJiBVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlOjpoYXNPbmdvaW5nVW5ib3Vu
ZGVkU3luY0lQQygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmlu
ZGV4IGMwNGFjZjg4MDQ1MTM2YTVkNDA5ZWIwMTc3MDgzZmI2NzZkNDE1NjAuLmRmMDgyNzVlYzAw
ODU1NDlmNGM1MDQ0NDVhMWRhNWM4NWNhZTI2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKQEAgLTI5LDEwICsyOSwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25NZXNzYWdlRmlsdGVyLmgiCiAj
aW5jbHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0yMDYsNyArMjA3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0T25seVNlbmRNZXNzYWdlc0FzRGlzcGF0Y2hXaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdlKGJvb2wpOwogICAgIHZv
aWQgc2V0U2hvdWxkRXhpdE9uU3luY01lc3NhZ2VTZW5kRmFpbHVyZShib29sKTsKIAotICAgIC8v
IFRoZSBzZXQgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgb24gdGhlIGNvbm5lY3Rpb24gd29yayBx
dWV1ZSB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCwgCisgICAgLy8gVGhlIHNldCBjYWxs
YmFjayB3aWxsIGJlIGNhbGxlZCBvbiB0aGUgY29ubmVjdGlvbiB3b3JrIHF1ZXVlIHdoZW4gdGhl
IGNvbm5lY3Rpb24gaXMgY2xvc2VkLAogICAgIC8vIGJlZm9yZSBkaWRDYWxsIGlzIGNhbGxlZCBv
biB0aGUgY2xpZW50IHRocmVhZC4gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9u
IGlzIG9wZW5lZC4KICAgICAvLyBJbiB0aGUgZnV0dXJlIHdlIG1pZ2h0IHdhbnQgYSBtb3JlIGdl
bmVyaWMgd2F5IHRvIGhhbmRsZSBzeW5jIG9yIGFzeW5jIG1lc3NhZ2VzIGRpcmVjdGx5CiAgICAg
Ly8gb24gdGhlIHdvcmsgcXVldWUsIGZvciBleGFtcGxlIGlmIHdlIHdhbnQgdG8gaGFuZGxlIHRo
ZW0gb24gc29tZSBvdGhlciB0aHJlYWQgd2UgY291bGQgYXZvaWQKQEAgLTIyMCw2ICsyMjEsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFt
ZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVyKiwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOwog
ICAgIHZvaWQgcmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCA9IDApOwogCisgICAgdm9pZCBhZGRNZXNzYWdlRmlsdGVyKE1lc3Nh
Z2VGaWx0ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKyAg
ICAvLyBUaGUgcmVtb3ZlZCBtZXNzYWdlIGZpbHRlciBpcyBndWFyYW50ZWVkIHRvIG5vdCByZWNl
aXZlIG1lc3NhZ2VzIGFmdGVyIHRoZSBjYWxsIHJldHVybnMuCisgICAgdm9pZCByZW1vdmVNZXNz
YWdlRmlsdGVyKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOworCiAg
ICAgYm9vbCBvcGVuKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdm9pZCBtYXJrQ3Vy
cmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKTsKQEAgLTIzMiwxNCArMjM3LDE0IEBA
IHB1YmxpYzoKICAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhU
JiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNl
bmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5
LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRp
YXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8
V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5
LgotICAgIAorCiAgICAgLy8gVGhyZWFkLXNhZmUuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgQywgdHlwZW5hbWUgVT4KICAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYg
bWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3Rp
bmF0aW9uSUQgPSB7IH0sIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkK
ICAgICB7CiAgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseTxULCBDPihXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBz
ZW5kT3B0aW9ucyk7CiAgICAgfQotICAgIAorCiAgICAgLy8gVGhyZWFkLXNhZmUuCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2Us
IE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+
IHNlbmRPcHRpb25zID0geyB9KQpAQCAtMjUzLDcgKzI1OCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBzZW5kU3luYzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5
KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwog
ICAgIH0KLSAgICAKKwogICAgIC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAgICBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5KE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBP
cHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pCkBAIC0yOTksMTkg
KzMwNCwyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rp
bmcoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZzsgfQog
I2VuZGlmCiAKKyAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KKyAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKIHByaXZhdGU6
CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2VydmVyLCBDbGllbnQmKTsKICAg
ICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyKTsKICAgICB2b2lkIHBsYXRmb3Jt
SW52YWxpZGF0ZSgpOwogCiAgICAgYm9vbCBpc0luY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyOyB9Ci0g
ICAgCisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0
PFdhaXRGb3JPcHRpb24+KTsKLSAgICAKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3
YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lLCBTZWNv
bmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4pOwogCiAgICAgYm9vbCBkaXNw
YXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYp
OwogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcihzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4mKTsKKyAgICBib29sIGRpc3BhdGNoTWVzc2FnZVRvRmlsdGVyKHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiYpOwogCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBjb25uZWN0aW9uIHdv
cmsgcXVldWUuCiAgICAgdm9pZCBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPik7CkBAIC0zMjUsMTQgKzMzMywxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Vu
ZE91dGdvaW5nTWVzc2FnZXMoKTsKICAgICBib29sIHNlbmRPdXRnb2luZ01lc3NhZ2Uoc3RkOjp1
bmlxdWVfcHRyPEVuY29kZXI+KTsKICAgICB2b2lkIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwotICAg
IAorCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBsaXN0ZW5lciB0aHJlYWQuCiAgICAgdm9pZCBkaXNw
YXRjaE9uZUluY29taW5nTWVzc2FnZSgpOwogICAgIHZvaWQgZGlzcGF0Y2hJbmNvbWluZ01lc3Nh
Z2VzKCk7CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShEZWNvZGVyJik7CiAgICAgdm9pZCBkaXNwYXRj
aFN5bmNNZXNzYWdlKERlY29kZXImKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKICAgICB2b2lkIGRpZEZhaWxUb1NlbmRTeW5jTWVzc2Fn
ZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkLgpAQCAtMzg4LDYgKzM5
NSw5IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwID0gSGFz
aE1hcDxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+LCBSZWZQdHI8VGhyZWFkTWVzc2FnZVJl
Y2VpdmVyPj47CiAgICAgVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwIG1fdGhyZWFkTWVzc2FnZVJl
Y2VpdmVyczsKIAorICAgIExvY2sgbV9tZXNzYWdlRmlsdGVyc0xvY2s7CisgICAgRGVzdGluYXRp
b25NZXNzYWdlRmlsdGVyIG1fbWVzc2FnZUZpbHRlcnM7CisKICAgICB1bnNpZ25lZCBtX2luU2Vu
ZFN5bmNDb3VudDsKICAgICB1bnNpZ25lZCBtX2luRGlzcGF0Y2hNZXNzYWdlQ291bnQ7CiAgICAg
dW5zaWduZWQgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZERpc3BhdGNoV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHlDb3VudDsKQEAgLTQwNCw3ICs0MTQsNyBAQCBwcml2YXRlOgogICAgIC8vIE91dGdv
aW5nIG1lc3NhZ2VzLgogICAgIExvY2sgbV9vdXRnb2luZ01lc3NhZ2VzTXV0ZXg7CiAgICAgRGVx
dWU8c3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+PiBtX291dGdvaW5nTWVzc2FnZXM7Ci0gICAgCisK
ICAgICBDb25kaXRpb24gbV93YWl0Rm9yTWVzc2FnZUNvbmRpdGlvbjsKICAgICBMb2NrIG1fd2Fp
dEZvck1lc3NhZ2VNdXRleDsKIApAQCAtNTA2LDcgKzUxNiw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6
c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRP
cHRpb24+CiAKICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6Om5hbWUo
KSwgZGVzdGluYXRpb25JRCk7CiAgICAgKmVuY29kZXIgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsK
LSAgICAKKwogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0
aW9ucyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggODBh
MGY3NWM3MDU3MmJmNGMyNDg1MjZmZWQyZmVmYjA5N2NkYzhmOS4uNGRlMDUwOThjNDYzMmFkNDVm
NGU4NTNmNjdlOWVlM2U3NzEzNmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5jcHAKQEAgLTkwLDYgKzkwLDE3IEBAIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgQ29uc3RydWN0V2l0aG91dEhlYWRlCiAgICAgICAg
IG1hcmtJbnZhbGlkKCk7CiB9CiAKK0RlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogc3Ry
ZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICA6IG1f
YnVmZmVyIHsgc3RyZWFtIH0KKyAgICAsIG1fYnVmZmVyUG9zIHsgbV9idWZmZXIgfQorICAgICwg
bV9idWZmZXJFbmQgeyBtX2J1ZmZlciArIHN0cmVhbVNpemUgfQorICAgICwgbV9idWZmZXJEZWFs
bG9jYXRvcihbXSAoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9KQorICAgICwgbV9kZXN0aW5h
dGlvbklEKGRlc3RpbmF0aW9uSUQpCit7CisgICAgaWYgKCFkZWNvZGUobV9tZXNzYWdlTmFtZSkp
CisgICAgICAgIHJldHVybjsKK30KKwogRGVjb2Rlcjo6fkRlY29kZXIoKQogewogICAgIEFTU0VS
VChtX2J1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggNjY5ODVi
YzM4N2Q3NDM5MTM3MDFiMTE3YjkxODAwYjlhMjc3MWFiOC4uYjNjNmFjOGEyZDVhY2JhMmMyMTUy
OGRmZWIxOGM2NDE1Y2VkZDIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApA
QCAtNTEsNiArNTEsNyBAQCBjbGFzcyBEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVf
dCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJik7CiAgICAgZXhwbGljaXQgRGVjb2Rlcihjb25z
dCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxv
Y2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJik7Cisg
ICAgRGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1TaXplLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEKTsKICAgICB+RGVjb2RlcigpOwogCiAgICAgRGVjb2Rlcihjb25z
dCBEZWNvZGVyJikgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKaW5kZXggNDEyOWQ0ZTJiNDlkNWM4ZmM0MWEyZDY1NGFkY2Q4OWU4NmM2MzdmNi4u
NTlkODM5NmU1ZDg4ZGU4ZmVhMGRiMTc1YTI2YTAxNDQ3NGI0ZDQzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTY0LDYgKzE2
NSwyOCBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbihDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZQogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihj
b25uZWN0aW9uLCBXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEMsIHR5cGVuYW1lIE1GPgordm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVj
dCwgTUYgZnVuY3Rpb24pCit7CisgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzeW5jUmVxdWVzdElEKSB8fCAhc3luY1JlcXVlc3RJRCkgewor
ICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46
OlR5cGU+IGFyZ3VtZW50czsKKyAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKKyAgICBpZiAoIWFy
Z3VtZW50cykgeworICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRs
ZXIgPSBbc3luY1JlcXVlc3RJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChh
dXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRTeW5jUmVw
bHkoc3luY1JlcXVlc3RJRCwgYXJncy4uLik7CisgICAgfTsKKyAgICBjYWxsTWVtYmVyRnVuY3Rp
b24oV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVj
dCwgZnVuY3Rpb24pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBl
bmFtZSBNRj4KIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmlsdGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RlOTYzNTY4MDQz
MTRlNTA1ZDliOTJhNWM2ZThkZDJjNDUxYjcyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VGaWx0ZXIuaApAQCAtMCwwICsxLDQ1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBDb25u
ZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKKworY2xhc3MgTWVzc2FnZUZpbHRlciB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+TWVzc2FnZUZpbHRlcigpID0gZGVmYXVsdDsKKyAgICAvLyBGaWx0ZXIg
Y29uc3VtZXMgdGhlIG1lc3NhZ2UgaWYgaXQgYWRvcHRzIHRoZSBkZWNvZGVyLgorICAgIC8vIENh
bGxlZCB3aXRoIENvbm5lY3Rpb24gbWVzc2FnZSBmaWx0ZXIgbG9jayBoZWxkLgorICAgIC8vIE1h
eSBiZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgorICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JikgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TZW1hcGhvcmVIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NlbWFwaG9yZUhhbmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmNTlhNzQ0YWI5N2JlZTNkNDRhODk0YmIw
NDE0MTJhMjQ2M2E1MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TZW1hcGhvcmVIYW5kbGUuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRS
aWdodC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBJUEMgeworCisjaWYgUExBVEZPUk0oQ09DT0Ep
Cit1c2luZyBTZW1hcGhvcmVIYW5kbGUgPSBNYWNoU2VuZFJpZ2h0OworI2Vsc2UKKy8vIFVuaW1w
bGVtZW50ZWQuCit1c2luZyBTZW1hcGhvcmVIYW5kbGUgPSBpbnQ7CisjZW5kaWYKKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9u
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMDBmMmE2MTFhN2U2YWQ3Y2VlNzQ0MTY4ZDBmN2E5ZmU4Njk4MzYx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgiCisKK25hbWVz
cGFjZSBJUEMgeworCitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0
aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBzaXplKQorICAgIDogbV9jb25uZWN0
aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2J1ZmZlcihzaXplKQoreworICAgIC8vIFJlYWQgc3Rh
cnRzIGZyb20gMCB3aXRoIGxpbWl0IG9mIDAgYW5kIHJlYWRlciBzbGVlcGluZy4KKyAgICBzaGFy
ZWRTZW5kZXJPZmZzZXQoKS5zdG9yZShTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZz
ZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICAg
IC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAgd2l0aCBhIGxpbWl0IG9mIHRoZSB3aG9sZSBidWZmZXIu
CisgICAgc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9y
ZWxheGVkKTsKK30KKwordm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZXRXYWtlVXBIYW5k
bGUoSVBDOjpTZW1hcGhvcmVIYW5kbGUmJiBoYW5kbGUpCit7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgbV93YWtlVXBTZW1hcGhvcmUgPSBNYWNoU2VtYXBob3JlKFdURk1vdmUoaGFuZGxlKSk7
CisjZW5kaWYKKyAgICB3YWtlVXBSZWNlaXZlcigpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENv
bm5lY3Rpb246Ondha2VVcFJlY2VpdmVyKCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBp
ZiAobV93YWtlVXBTZW1hcGhvcmUpCisgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLT5zaWduYWwo
KTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1DbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJhYTNjMmM5NWU3NjFjOWU5MzY0
YTQ1NTAwZTUzYzI4OTRhZTI2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDI0MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlNlbWFwaG9yZUhhbmRsZS5oIgorI2luY2x1ZGUgIlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ci5oIgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworLy8gQSBtZXNzYWdlIHN0cmVhbSBpcyBhIGhh
bGYtZHVwbGV4IHR3by13YXkgc3RyZWFtIG9mIG1lc3NhZ2VzIHRvIGEgYmV0d2VlbiBhIHNlbmRl
ciBhbmQgdGhlCisvLyBkZXN0aW5hdGlvbiByZWNlaXZlci4KKy8vCisvLyBTdHJlYW1DbGllbnRD
b25uZWN0aW9uIGNhbiBzZW5kIG1lc3NhZ2VzIGFuZCByZWNlaXZlIHN5bmNocm9ub3VzIHJlcGxp
ZXMKKy8vIHRocm91Z2ggdGhpcyBtZXNzYWdlIHN0cmVhbSBvciB0aHJvdWdoIElQQzo6Q29ubmVj
dGlvbi4KKy8vCisvLyBUaGUgZGVzdGluYXRpb24gcmVjZWl2ZXIgd2lsbCByZWNlaXZlIG1lc3Nh
Z2VzIGluIG9yZGVyIF9mb3IgdGhlIGRlc3RpbmF0aW9uIG1lc3NhZ2VzXy4KKy8vIFRoZSB3aG9s
ZSBJUEM6OkNvbm5lY3Rpb24gbWVzc2FnZSBvcmRlciBpcyBub3QgcHJlc2VydmVkLgorCitjbGFz
cyBTdHJlYW1DbGllbnRDb25uZWN0aW9uIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTdHJlYW1DbGllbnRDb25uZWN0aW9uKTsKK3B1YmxpYzoKKyAgICBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uKENvbm5lY3Rpb24mLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisKKyAgICBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyJiBzdHJlYW1CdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIHZv
aWQgc2V0V2FrZVVwSGFuZGxlKElQQzo6U2VtYXBob3JlSGFuZGxlJiYpOworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJ
ZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKKyAgICB1c2lu
ZyBTZW5kU3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMo
VCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgdHlwZW5hbWUg
VDo6UmVwbHkmJiwgU2Vjb25kcyB0aW1lb3V0KTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgU3Bh
biB7CisgICAgICAgIHVpbnQ4X3QqIGRhdGE7CisgICAgICAgIHNpemVfdCBzaXplOworICAgIH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VTaXplID0gU3RyZWFt
Q29ubmVjdGlvbkVuY29kZXI6Om1pbmltdW1NZXNzYWdlU2l6ZTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50ID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1l
c3NhZ2VBbGlnbm1lbnQ7CisgICAgYm9vbCB0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1vbm90b25pY1RpbWUgdGltZW91dCk7CisgICAgdm9pZCBz
ZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShTcGFuJiYpOworCisgICAgT3B0aW9uYWw8U3Bh
bj4gdHJ5QWNxdWlyZShNb25vdG9uaWNUaW1lIHRpbWVvdXQpOworICAgIGVudW0gY2xhc3MgV2Fr
ZVVwUmVjZWl2ZXIgOiBib29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcworICAgIH07Cisg
ICAgV2FrZVVwUmVjZWl2ZXIgcmVsZWFzZShzaXplX3Qgd3JpdGVTaXplKTsKKyAgICB2b2lkIHdh
a2VVcFJlY2VpdmVyKCk7CisKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsaW1pdCk7CisgICAgc2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0
KTsKKyAgICBzaXplX3QgY2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7
CisKKyAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci53cmFwT2Zmc2V0KG9mZnNldCk7IH0KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6
ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFs
aWdubWVudD4ob2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9CisgICAgQXRvbWljPHNpemVf
dD4mIHNoYXJlZFNlbmRlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9mZnNldCgp
OyB9CisgICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4g
bV9idWZmZXIucmVjZWl2ZXJPZmZzZXQoKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CisKKyAgICBDb25uZWN0aW9uJiBtX2Nvbm5l
Y3Rpb247CisgICAgdWludDY0X3QgbV9jdXJyZW50RGVzdGluYXRpb25JRCB7IDAgfTsKKworICAg
IHNpemVfdCBtX3NlbmRlck9mZnNldCB7IDAgfTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
IG1fYnVmZmVyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9wdGlvbmFsPE1hY2hTZW1hcGhv
cmU+IG1fd2FrZVVwU2VtYXBob3JlOworI2VuZGlmCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPgorYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNz
YWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCkK
K3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFUOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7Cisg
ICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSAr
IHRpbWVvdXQ7CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKGRlc3RpbmF0
aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAo
IXNwYW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB7CisgICAgICAgIFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyIG1lc3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBzcGFuLT5kYXRhLCBzcGFu
LT5zaXplIH07CisgICAgICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50
cygpKSB7CisgICAgICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2UobWVzc2FnZUVu
Y29kZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAgICAgICAgICAgICB3YWtl
VXBSZWNlaXZlcigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9
CisgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOworICAg
IGlmICghbV9jb25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5j
UmVzdWx0IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCBPYmpl
Y3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHks
IFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KFQ6OmlzU3luYywgIk1lc3Nh
Z2UgaXMgbm90IHN5bmMhIik7CisgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBN
b25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRp
b25JRElmTmVlZGVkKGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKGFic29sdXRl
VGltZW91dCk7CisgICAgaWYgKCFzcGFuKQorICAgICAgICByZXR1cm4geyB9OworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgc2VuZCB0aHJvdWdoIHN0cmVhbS4KKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHJlY2VpdmUgdGhyb3VnaCBzdHJlYW0uCisgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1l
c3NhZ2UoV1RGTW92ZSgqc3BhbikpOworICAgIGF1dG8gcmVzdWx0ID0gbV9jb25uZWN0aW9uLnNl
bmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELCB0
aW1lb3V0KTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworfQorCitpbmxpbmUgYm9vbCBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0KQoreworICAg
IGlmIChkZXN0aW5hdGlvbklEID09IG1fY3VycmVudERlc3RpbmF0aW9uSUQpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsK
KyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJlYW1Db25uZWN0
aW9uRW5jb2RlciBlbmNvZGVyIHsgTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQs
IHNwYW4tPmRhdGEsIHNwYW4tPnNpemUgfTsKKyAgICBpZiAoIShlbmNvZGVyIDw8IGRlc3RpbmF0
aW9uSUQpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBTaXplIG9mIHRoZSBt
aW5pbXVtIGFsbG9jYXRpb24gaXMgaW5jb3JyZWN0LiBMaWtlbHkgYW4gYWxpZ25tZW50IGlzc3Vl
LgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0g
cmVsZWFzZShlbmNvZGVyLnNpemUoKSk7CisgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjpXYWtlVXBSZWNlaXZlcjo6WWVzKQorICAgICAgICB3YWtlVXBSZWNl
aXZlcigpOworICAgIG1fY3VycmVudERlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAg
IHJldHVybiB0cnVlOworfQorCitpbmxpbmUgdm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpz
ZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShTcGFuJiYgc3BhbikKK3sKKyAgICBTdHJlYW1D
b25uZWN0aW9uRW5jb2RlciBlbmNvZGVyIHsgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVh
bU1lc3NhZ2UsIHNwYW4uZGF0YSwgc3Bhbi5zaXplIH07CisgICAgLy8gTm90IG5vdGlmeWluZyBv
biB3YWtlIHVwIHNpbmNlIHRoZSBvdXQtb2Ytc3RyZWFtIG1lc3NhZ2Ugd2lsbCBkbyB0aGF0Lgor
ICAgICh2b2lkKSByZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKK30KK2lubGluZSBPcHRpb25hbDxT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlB
Y3F1aXJlKE1vbm90b25pY1RpbWUgdGltZW91dCkKK3sKKyAgICBmb3IgKDs7KSB7CisgICAgICAg
IHNpemVfdCBzZW5kZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChzaGFyZWRSZWNlaXZlck9mZnNldCgp
LmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9
IGFsaWduZWRTcGFuKG1fc2VuZGVyT2Zmc2V0LCBzZW5kZXJMaW1pdCk7CisgICAgICAgIGlmIChy
ZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkgeworICAgICAgICAgICAgYXV0byBub3cg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICAgICAgICAgIGlmIChub3cgPj0gdGltZW91dCkK
KyAgICAgICAgICAgICAgICBicmVhazsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAg
IHNpemVfdCBvbGRTZW5kZXJMaW1pdCA9IHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuY29tcGFyZUV4
Y2hhbmdlU3Ryb25nKHNlbmRlckxpbWl0LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpyZWNlaXZl
ck9mZnNldFNlbmRlcklzV2FpdGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3Rk
OjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgICAgICAgICBpZiAoc2VuZGVyTGltaXQgPT0g
b2xkU2VuZGVyTGltaXQpCisgICAgICAgICAgICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFw
aG9yZSgpLndhaXRGb3IodGltZW91dCAtIG5vdyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBzZW5kZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChvbGRTZW5kZXJMaW1pdCk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRl
ckxpbWl0KTsKKyAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICBUaHJlYWQ6OnlpZWxk
KCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11
bU1lc3NhZ2VTaXplKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldh
a2VVcFJlY2VpdmVyIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnJlbGVhc2Uoc2l6ZV90IHNpemUp
Cit7CisgICAgc2l6ZSA9IHN0ZDo6bWF4KHNpemUsIG1pbmltdW1NZXNzYWdlU2l6ZSk7CisgICAg
c2l6ZV90IGV4cGVjdGVkUmVjZWl2ZXJMaW1pdCA9IG1fc2VuZGVyT2Zmc2V0OworICAgIG1fc2Vu
ZGVyT2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9mZnNldChtX3NlbmRlck9mZnNldCkgKyBzaXpl
KTsKKyAgICBBU1NFUlQobV9zZW5kZXJPZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICAvLyBJZiB0
aGUgcmVjZWl2ZXIgd3JvdGUgb3ZlciB0aGUgc2VuZGVyT2Zmc2V0IHdpdGggc2VuZGVyT2Zmc2V0
UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgorICAgIHNpemVf
dCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkuZXhjaGFuZ2UobV9zZW5kZXJP
ZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgIGlmIChyZWNlaXZlckxpbWl0
ICE9IGV4cGVjdGVkUmVjZWl2ZXJMaW1pdCkKKyAgICAgICAgcmV0dXJuIFdha2VVcFJlY2VpdmVy
OjpZZXM7CisgICAgcmV0dXJuIFdha2VVcFJlY2VpdmVyOjpObzsKK30KKworaW5saW5lIFN0cmVh
bUNsaWVudENvbm5lY3Rpb246OlNwYW4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6YWxpZ25lZFNw
YW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQoreworICAgIEFTU0VSVChvZmZzZXQgPCBk
YXRhU2l6ZSgpKTsKKyAgICBBU1NFUlQobGltaXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBzaXplX3Qg
YWxpZ25lZCA9IGFsaWduT2Zmc2V0KG9mZnNldCk7CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSAw
OworICAgIGlmIChvZmZzZXQgPCBsaW1pdCkgeworICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZz
ZXQgJiYgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxp
Z25lZCwgbGltaXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNl
dCB8fCBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGln
bmVkLCBsaW1pdCk7CisgICAgfQorICAgIHJldHVybiB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3Vs
dFNpemUgfTsKK30KKworaW5saW5lIHNpemVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzaXpl
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAgICBpZiAoIWxpbWl0KQorICAgICAg
ICByZXR1cm4gZGF0YVNpemUoKSAtIDEgLSBvZmZzZXQ7CisgICAgaWYgKGxpbWl0IDw9IG9mZnNl
dCkKKyAgICAgICAgcmV0dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7CisgICAgcmV0dXJuIGxpbWl0
IC0gb2Zmc2V0IC0gMTsKK30KKworaW5saW5lIHNpemVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdAoreworICAgIEFTU0VS
VCh1bnRydXN0ZWRMaW1pdCA8IChkYXRhU2l6ZSgpIC0gMSkpOworICAgIHJldHVybiBzdGQ6Om1p
bih1bnRydXN0ZWRMaW1pdCwgZGF0YVNpemUoKSAtIDEpOworfQorCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBlMDJkOGI4ZjMwZGJlY2MzYmMwYjljOGQzZTI1NTFmZWFlZjc2YjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBGZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorCisjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitzdGF0aWMgUmVmPFdl
YktpdDo6U2hhcmVkTWVtb3J5PiBjcmVhdGVNZW1vcnkoc2l6ZV90IHNpemUpCit7CisgICAgYXV0
byBtZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZSk7CisgICAgaWYg
KCFtZW1vcnkpCisgICAgICAgIENSQVNIKCk7CisgICAgcmV0dXJuIG1lbW9yeS5yZWxlYXNlTm9u
TnVsbCgpOworfQorCitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyKHNpemVfdCBtZW1vcnlTaXplKQorICAgIDogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihjcmVh
dGVNZW1vcnkobWVtb3J5U2l6ZSksIG1lbW9yeVNpemUpCit7Cit9CisKKyNpZiBQTEFURk9STShD
T0NPQSkKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVm
PFdlYktpdDo6U2hhcmVkTWVtb3J5PiYmIG1lbW9yeSwgc2l6ZV90IG1lbW9yeVNpemUsIE1hY2hT
ZW1hcGhvcmUmJiBzZW5kZXJXYWl0U2VtYXBob3JlKQorICAgIDogbV9kYXRhU2l6ZShtZW1vcnlT
aXplIC0gaGVhZGVyU2l6ZSgpKQorICAgICwgbV9zaGFyZWRNZW1vcnkoV1RGTW92ZShtZW1vcnkp
KQorICAgICwgbV9zZW5kZXJXYWl0U2VtYXBob3JlKFdURk1vdmUoc2VuZGVyV2FpdFNlbWFwaG9y
ZSkpCit7Cit9CisjZW5kaWYKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYgbWVtb3J5LCBzaXplX3QgbWVt
b3J5U2l6ZSkKKyAgICA6IG1fZGF0YVNpemUobWVtb3J5U2l6ZSAtIGhlYWRlclNpemUoKSkKKyAg
ICAsIG1fc2hhcmVkTWVtb3J5KFdURk1vdmUobWVtb3J5KSkKK3sKK30KKworU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVy
JiYgb3RoZXIpID0gZGVmYXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6flN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIoKSA9IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXImIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYg
b3RoZXIpCit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgIG1fZGF0YVNpemUg
PSBvdGhlci5tX2RhdGFTaXplOworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9IFdURk1vdmUob3Ro
ZXIubV9zaGFyZWRNZW1vcnkpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBtX3NlbmRl
cldhaXRTZW1hcGhvcmUgPSBXVEZNb3ZlKG90aGVyLm1fc2VuZGVyV2FpdFNlbWFwaG9yZSk7Cisj
ZW5kaWYKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIFdlYktpdDo6
U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIGlmICghbV9zaGFyZWRNZW1vcnktPmNy
ZWF0ZUhhbmRsZShoYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
V3JpdGUpKQorICAgICAgICBDUkFTSCgpOworICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENI
YW5kbGUgaXBjSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBtX3NoYXJlZE1lbW9yeS0+c2l6ZSgp
IH07CisgICAgZW5jb2RlciA8PCBpcGNIYW5kbGU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
ZW5jb2RlciA8PCBtX3NlbmRlcldhaXRTZW1hcGhvcmUuY3JlYXRlU2VuZFJpZ2h0KCk7CisjZW5k
aWYKK30KKworT3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8V2ViS2l0
OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gaXBjSGFuZGxlOworICAgIGRlY29kZXIgPj4gaXBj
SGFuZGxlOworICAgIGlmICghaXBjSGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbWFw
aG9yZVNlbmRSaWdodDsKKyAgICBkZWNvZGVyID4+IHNlbWFwaG9yZVNlbmRSaWdodDsKKyAgICBp
ZiAoIXNlbWFwaG9yZVNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNl
bmRpZgorICAgIGlmIChpcGNIYW5kbGUtPmRhdGFTaXplIDwgaGVhZGVyU2l6ZSgpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpT
aGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUtPmhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CisgICAgaWYgKHNoYXJlZE1lbW9yeS0+c2l6ZSgpIDwg
aXBjSGFuZGxlLT5kYXRhU2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICByZXR1cm4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7IHNoYXJl
ZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpLCBpcGNIYW5kbGUtPmRhdGFTaXplLCBNYWNoU2VtYXBo
b3JlIHsgV1RGTW92ZSgqc2VtYXBob3JlU2VuZFJpZ2h0KSB9IH07CisjZWxzZQorICAgIHJldHVy
biBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHsgc2hhcmVkTWVtb3J5LT5yZWxlYXNlTm9uTnVsbCgp
LCBpcGNIYW5kbGUtPmRhdGFTaXplIH07CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI1OGQ1ZDBlOWJkZTYyMDFmOWY3OTYwYjE3MDk2ZDUwMGRkNGI3NjAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgK
QEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkRlY29kZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRv
bWljcy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisjaW5jbHVkZSA8d3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaD4KKyNlbmRpZgorCituYW1lc3Bh
Y2UgSVBDIHsKKworLy8gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBpcyBhIHNoYXJlZCAiYmktcGFy
dGl0ZSIgY2lyY3VsYXIgYnVmZmVyIHN1cHBvcnRpbmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNz
YWdlcywgc3BlY2lmaWMgZGF0YSBhbGlnbm1lbnQgd2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUu
CisvLyBTdHJlYW1DbGllbnRDb25uZWN0aW9uIGFuZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHVz
ZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHRvIGNvbW11bmljYXRlLgorLy8KKy8vIFRoZSAiYmkt
cGFydGl0ZSIgaXMgaGVyZSB0byBtZWFuIHRoYXQgd3JpdGVzIGFuZCByZWFkcyB0byB0aGUgYnVm
ZmVyIG11c3QgYmUKKy8vIGNvbnRpbnVvdXMuCisvLworLy8gVGhlIGNsaWVudCAoc2VuZGVyIG9y
IHJlY2VpdmVyKSAiYWNxdWlyZXMiIHNvbWUgYW1vdW50IG9mIGJ1ZmZlciBkYXRhLiBJZiBidWZm
ZXIgaGFzIG5vCisvLyBjYXBhY2l0eSwgYWNxdWlyZSByZXR1cm5zIHdpdGggemVybyBjYXBhY2l0
eS4gSWYgYnVmZmVyIGhhcyBhdCBsZWFzdCBhY3F1aXJlZAorLy8gY2FwYWNpdHksIGFsbCB0aGUg
YXZhaWxhYmxlIGNhcGFjaXR5IGlzIHJldHVybmVkLgorLy8KKy8vIFRoZSBjbGllbnQgInJlbGVh
c2VzIiB0aGUgc29tZSBhbW91bnQgb2YgZGF0YSwgYXQgbGVhc3QgdGhlIGFtb3VudCBhY3F1aXJl
ZCBidXQgcG90ZW50aWFsbHkKKy8vIG1vcmUuCisvLworLy8gQm90aCBzZW5kZXIgYW5kIHJlY2Vp
dmVyIG11c3QgYWNxdWlyZSBzYW1lIGFtb3VudCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2Yg
dGhlIGFjcXVpcmUgc2VxdWVuY2UuCisvLyBJZiBzZW5kZXIgYWNxdWlyZXMgWCBhbmQgdGhlbiBZ
IGFtb3VudCwgcmVjZWl2ZXIgbXVzdCBkbyB0aGUgc2FtZS4KKy8vCisvLyBUaGUgY2lyY3VsYXIg
YnVmZmVyIGhhcyBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRo
ZSBkYXRhIGJldHdlZW4gW3NlbmRlck9mZnNldCwgcmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRl
ck9mZnNldCA9PQorLy8gcmVjZWl2ZXJPZmZzZXQsIHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4K
Ky8vICogUmVjZWl2ZXIgb3ducyB0aGUgZGF0YSBiZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2Vu
ZGVyT2Zmc2V0Wy4KKy8vICogVGhlIGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAx
IHZhbHVlcy4gVGhlIGxhc3QgdmFsdWUgaXMgcmVzZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRo
YXQgdGhlIGJ1ZmZlciBpcyBmdWxsLiBGSVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBs
ZW1lbnRhdGlvbiBpZgorLy8gaXQgd291bGQgdXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9m
IHRoZSBob2xlIGFzIHRoZSBpbmRpY2F0b3IuIFRoaXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWdu
ZWRTcGFuIGltcGxlbWVudGF0aW9uIHRvIHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgorLy8g
KiBBbGwgYXRvbWljIHZhcmlhYmxlIGxvYWRzIGFyZSB1bnRydXN0ZWQsIHNvIHRoZXkncmUgY2xh
bXBlZC4gVmlvbGF0aW9ucyBhcmUgbm90IHJlcG9ydGVkLAorLy8gdGhvdWdoLgorLy8gU2VlIFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlLgorY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5
U2l6ZSk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVy
JiYpOworICAgIH5TdHJlYW1Db25uZWN0aW9uQnVmZmVyKCk7CisgICAgU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciYgb3BlcmF0b3I9KFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisKKyAgICBzaXpl
X3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG9mZnNldCA8PSBkYXRhU2l6ZSgpKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBkYXRhU2l6ZSgp
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQor
CisgICAgdGVtcGxhdGU8c2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQ+CisgICAgc2l6ZV90IGFsaWdu
T2Zmc2V0KHNpemVfdCBvZmZzZXQsIHNpemVfdCBhY3F1aXJlU2l6ZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIG9mZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2Y8bWVzc2FnZUFsaWdubWVudD4ob2Zm
c2V0KTsKKyAgICAgICAgaWYgKG9mZnNldCArIGFjcXVpcmVTaXplID49IGRhdGFTaXplKCkpCisg
ICAgICAgICAgICBvZmZzZXQgPSAwOworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKwor
ICAgIEF0b21pYzxzaXplX3Q+JiBzZW5kZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZW5k
ZXJPZmZzZXQ7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgcmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVy
biBoZWFkZXIoKS5yZWNlaXZlck9mZnNldDsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBo
ZWFkZXJTaXplKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGFTaXplOyB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV1RGOjpNYWNoU2VtYXBob3JlJiBz
ZW5kZXJXYWl0U2VtYXBob3JlKCkgeyByZXR1cm4gbV9zZW5kZXJXYWl0U2VtYXBob3JlOyB9Cisj
ZW5kaWYKKworICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpzZW5kZXJPZmZzZXQg
d2hlbiByZWNlaXZlciBpcyBzbGVlcGluZywgZS5nLiBub3QgcnVubmluZy4KKyAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcgPSAxIDw8
IDMxOworICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpyZWNlaXZlck9mZnNldCB3
aGVuIHNlbmRlciBpcyB3YWl0aW5nLCBlLmcuIHdhaXRpbmcgb24KKyAgICAvLyBhIHNlbWFwaG9y
ZS4KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCByZWNlaXZlck9mZnNldFNlbmRlcklzV2Fp
dGluZ1RhZyA9IDEgPDwgMzE7CisKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgc3RhdGljIE9wdGlvbmFsPFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI+IGRlY29kZShEZWNvZGVy
Jik7CisKK3ByaXZhdGU6CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYsIHNpemVfdCBtZW1vcnlTaXplLCBN
YWNoU2VtYXBob3JlJiYgc2VuZGVyV2FpdFNlbWFwaG9yZSk7CisjZW5kaWYKKyAgICBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiwgc2l6ZV90IG1lbW9y
eVNpemUpOworCisgICAgc3RydWN0IEhlYWRlciB7CisgICAgICAgIEF0b21pYzxzaXplX3Q+IHJl
Y2VpdmVyT2Zmc2V0OworICAgICAgICAvLyBQYWRkaW5nIHNvIHRoYXQgdGhlIHZhcmlhYmxlcyBt
b3N0bHkgYWNjZXNzZWQgYnkgZGlmZmVyZW50IHByb2Nlc3NlcyBkbyBub3Qgc2hhcmUgYSBjYWNo
ZSBsaW5lLgorICAgICAgICAvLyBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gYXZvaWQgY2FjaGUtbGlu
ZSBpbmR1Y2VkIHJlZHVjdGlvbiBvZiBwYXJhbGxlbCBhY2Nlc3MuCisgICAgICAgIHVpbnQ2NF90
IGNhY2hlTGluZVBhZGRpbmdbMl07CisgICAgICAgIEF0b21pYzxzaXplX3Q+IHNlbmRlck9mZnNl
dDsKKyAgICB9OworICAgIEhlYWRlciYgaGVhZGVyKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJw
cmV0X2Nhc3Q8SGVhZGVyKj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSk7IH0KKyAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBoZWFkZXJTaXplKCkgeyByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVP
ZjxzaXplb2Yoc3RkOjptYXhfYWxpZ25fdCk+KHNpemVvZihIZWFkZXIpKTsgfQorCisgICAgc2l6
ZV90IG1fZGF0YVNpemUgeyAwIH07CisgICAgUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBtX3No
YXJlZE1lbW9yeTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXVEY6Ok1hY2hTZW1hcGhvcmUg
bV9zZW5kZXJXYWl0U2VtYXBob3JlOworI2VuZGlmCit9OworCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iOTIzMmRlY2Y2Yzc5M2E0NTc3MTY4ZTk3ZWZiNTFhYWZiMzJmZGVlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIu
aApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSVBDIHsKKwordGVtcGxhdGU8
dHlwZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjsKKworLy8gSVBDIGVuY29k
ZXIgd2hpY2g6CisvLyAgLSBFbmNvZGVzIHRvIGEgY2FsbGVyIGJ1ZmZlciB3aXRoIGZpeGVkIHNp
emUsIGRvZXMgbm90IHJlc2l6ZSwgc3RvcHMgd2hlbiBzaXplIHJ1bnMgb3V0CisvLyAgLSBEb2Vz
IG5vdCBpbml0aWFsaXplIGFsaWdubWVudCBnYXBzCisvLworY2xhc3MgU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIgZmluYWwgeworcHVibGljOgorICAgIC8vIFN0cmVhbSBtZXNzYWdlIG5lZWRzIHRv
IGJlIGF0IGxlYXN0IHNpemUgb2YgU3RyZWFtU2V0RGVzdGluYXRpb25JRCBtZXNzYWdlLgorICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IHNpemVvZihNZXNz
YWdlTmFtZSkgKyBzaXplb2YodWludDY0X3QpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IG1lc3NhZ2VBbGlnbm1lbnQgPSBhbGlnbm9mKE1lc3NhZ2VOYW1lKTsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0gdHJ1ZTsKKworICAgIFN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBz
dHJlYW1DYXBhY2l0eSkKKyAgICAgICAgOiBtX2J1ZmZlcihzdHJlYW0pCisgICAgICAgICwgbV9i
dWZmZXJDYXBhY2l0eShzdHJlYW1DYXBhY2l0eSkKKyAgICB7CisgICAgICAgICp0aGlzIDw8IG1l
c3NhZ2VOYW1lOworICAgIH0KKworICAgIH5TdHJlYW1Db25uZWN0aW9uRW5jb2RlcigpID0gZGVm
YXVsdDsKKworICAgIGJvb2wgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQorICAgIHsKKyAgICAgICAgc2l6ZV90
IGJ1ZmZlclBvaW50ZXIgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KG1fYnVmZmVyICsgbV9lbmNvZGVkU2l6ZSkpOworICAgICAgICBzaXplX3QgbmV3QnVm
ZmVyUG9pbnRlciA9IHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25tZW50LCBidWZmZXJQb2ludGVy
KTsKKyAgICAgICAgaWYgKG5ld0J1ZmZlclBvaW50ZXIgPCBidWZmZXJQb2ludGVyKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpbnRwdHJfdCBhbGlnbmVkU2l6ZSA9IG1fZW5j
b2RlZFNpemUgKyAobmV3QnVmZmVyUG9pbnRlciAtIGJ1ZmZlclBvaW50ZXIpOworICAgICAgICBp
ZiAoIXJlc2VydmUoYWxpZ25lZFNpemUsIHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB1aW50OF90KiBidWZmZXIgPSBtX2J1ZmZlciArIGFsaWduZWRTaXplOworICAg
ICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKKyAgICAgICAgbV9lbmNvZGVkU2l6ZSA9
IGFsaWduZWRTaXplICsgc2l6ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYgb3BlcmF0
b3I8PChUJiYgdCkKKyAgICB7CisgICAgICAgIEFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29u
c3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4sIHZvaWQ+OjplbmNvZGUoKnRoaXMsIHN0
ZDo6Zm9yd2FyZDxUPih0KSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgQVNTRVJUKGlzVmFsaWQoKSk7IHJldHVybiBtX2VuY29kZWRT
aXplOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJDYXBhY2l0
eTsgfQorICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1ZhbGlkKCk7IH0KK3By
aXZhdGU6CisgICAgYm9vbCByZXNlcnZlKHNpemVfdCBhbGlnbmVkU2l6ZSwgc2l6ZV90IGFkZGl0
aW9uYWxTaXplKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBhbGlnbmVkU2l6ZSArIGFk
ZGl0aW9uYWxTaXplOworICAgICAgICBpZiAoc2l6ZSA8IGFsaWduZWRTaXplIHx8IHNpemUgPiBt
X2J1ZmZlckNhcGFjaXR5KSB7CisgICAgICAgICAgICBtX2J1ZmZlckNhcGFjaXR5ID0gMDsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgdWludDhfdCogbV9idWZmZXI7CisgICAgc2l6ZV90IG1fYnVmZmVyQ2FwYWNp
dHk7CisgICAgc2l6ZV90IG1fZW5jb2RlZFNpemUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5l
Y3Rpb25Qcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29u
bmVjdGlvblByb2Nlc3Nvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTA2ZTEzOTVhMjU5NGJiY2UwYTFiM2Uz
ZWZhNWJmYmIwMjZiMGQ3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3IuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rp
b25Qcm9jZXNzb3IuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbUNvbm5lY3Rpb25Qcm9j
ZXNzb3I6OlN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3IoY29uc3QgY2hhciogbmFtZSkKKyAgICA6
IG1fbmFtZShuYW1lKQoreworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3I6OmRp
c3BhdGNoKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIHsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX2Z1bmN0aW9ucy5hcHBlbmQoV1RG
TW92ZShmdW5jdGlvbikpOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkUXVpdCk7IC8vIFJlLWVu
dGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVkLgorICAgIH0KKyAgICB3YWtlVXBQ
cm9jZXNzaW5nVGhyZWFkKCk7CisKK30KK3ZvaWQgU3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvcjo6
YWRkU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlv
bikKK3sKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9j
b25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbik7CisgICAgICAgIEFTU0VSVCghbV9zaG91bGRRdWl0
KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5vdCBzdXBwb3J0ZWQuCisgICAgfQor
ICAgIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQoKTsKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9u
UHJvY2Vzc29yOjpyZW1vdmVTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChtX3Byb2Nlc3NpbmdUaHJlYWQpOworICAg
IHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX2Nvbm5lY3Rpb25z
LnJlbW92ZShjb25uZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFtX3Nob3VsZFF1aXQpOyAvLyBS
ZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBvcnRlZC4KKyAgICB9CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisjZW5kaWYKK30K
Kwordm9pZCBTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yOjpzdG9wKCkKK3sKKyAgICBtX3Nob3Vs
ZFF1aXQgPSB0cnVlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmICghbV9wcm9jZXNzaW5n
VGhyZWFkKQorICAgICAgICByZXR1cm47CisgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7
CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOworICAgIG1fcHJv
Y2Vzc2luZ1RocmVhZCA9IG51bGxwdHI7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0
aW9uUHJvY2Vzc29yOjp3YWtlVXAoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1fd2Fr
ZVVwU2VtYXBob3JlLnNpZ25hbCgpOworI2VuZGlmCit9CisKK0lQQzo6U2VtYXBob3JlSGFuZGxl
IFN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3I6Ondha2VVcEhhbmRsZSgpCit7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgcmV0dXJuIG1fd2FrZVVwU2VtYXBob3JlLmNyZWF0ZVNlbmRSaWdodCgp
OworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCit9CisKK3ZvaWQgU3RyZWFtQ29ubmVj
dGlvblByb2Nlc3Nvcjo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpCit7CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgaWYgKG1fcHJvY2Vzc2luZ1RocmVhZCkgeworICAgICAgICBtX3dha2VVcFNl
bWFwaG9yZS5zaWduYWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gdGFz
ayA9IFt0aGlzXSgpIG11dGFibGUgeworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICBw
cm9jZXNzU3RyZWFtcygpOworICAgICAgICAgICAgaWYgKG1fc2hvdWxkUXVpdCkgeworICAgICAg
ICAgICAgICAgIHByb2Nlc3NTdHJlYW1zKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUud2FpdCgpOworICAgICAg
ICB9CisgICAgfTsKKyAgICBtX3Byb2Nlc3NpbmdUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShtX25h
bWUsIFdURk1vdmUodGFzayksIFRocmVhZFR5cGU6OkdyYXBoaWNzLCBUaHJlYWQ6OlFPUzo6VXNl
ckludGVyYWN0aXZlKTsKKyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNz
b3I6OnByb2Nlc3NTdHJlYW1zKCkKK3sKKyAgICBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRNZXNz
YWdlTGltaXQgPSAxMDAwOworICAgIGJvb2wgaGFzTW9yZVRvUHJvY2VzcyA9IGZhbHNlOworICAg
IGRvIHsKKyAgICAgICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBmdW5jdGlvbnM7Cisg
ICAgICAgIEhhc2hTZXQ8UmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPj4gY29ubmVjdGlv
bnM7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2Nr
KTsKKyAgICAgICAgICAgIGZ1bmN0aW9ucy5zd2FwKG1fZnVuY3Rpb25zKTsKKyAgICAgICAgICAg
IGNvbm5lY3Rpb25zID0gbV9jb25uZWN0aW9uczsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGF1
dG8mIGZ1bmN0aW9uIDogZnVuY3Rpb25zKQorICAgICAgICAgICAgV1RGTW92ZShmdW5jdGlvbiko
KTsKKworICAgICAgICBoYXNNb3JlVG9Qcm9jZXNzID0gZmFsc2U7CisgICAgICAgIGZvciAoYXV0
byYgY29ubmVjdGlvbiA6IGNvbm5lY3Rpb25zKQorICAgICAgICAgICAgaGFzTW9yZVRvUHJvY2Vz
cyB8PSBjb25uZWN0aW9uLT5kaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKGRlZmF1bHRNZXNzYWdlTGlt
aXQpID09IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpIYXNNb3JlTWVzc2FnZXM7CisgICAg
fSB3aGlsZSAoaGFzTW9yZVRvUHJvY2Vzcyk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3IuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYTNmNGVlYzVjNDEzNzYzNTE5ZmM3OWE3YzdjNDBhNGIzZWY2MzU4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nv
ci5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIlNlbWFwaG9yZUhhbmRsZS5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFj
ZSBJUEMgeworCitjbGFzcyBTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yIGZpbmFsIDogcHVibGlj
IEZ1bmN0aW9uRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgU3RyZWFtQ29ubmVjdGlvblByb2Nl
c3Nvcihjb25zdCBjaGFyKik7CisgICAgflN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3IoKSA9IGRl
ZmF1bHQ7CisgICAgdm9pZCBhZGRTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlJik7CisgICAgdm9pZCByZW1vdmVTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlJik7CisKKyAgICB2b2lkIGRpc3BhdGNoKFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKTsKKworICAgIHZvaWQgd2FrZVVwKCk7CisKKyAg
ICBTZW1hcGhvcmVIYW5kbGUgd2FrZVVwSGFuZGxlKCk7Citwcml2YXRlOgorICAgIHZvaWQgd2Fr
ZVVwUHJvY2Vzc2luZ1RocmVhZCgpOworICAgIHZvaWQgcHJvY2Vzc1N0cmVhbXMoKTsKKworICAg
IGNvbnN0IGNoYXIqIGNvbnN0IG1fbmFtZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBNYWNo
U2VtYXBob3JlIG1fd2FrZVVwU2VtYXBob3JlOworI2VuZGlmCisgICAgUmVmUHRyPFRocmVhZD4g
bV9wcm9jZXNzaW5nVGhyZWFkOworCisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9zaG91bGRRdWl0
IHsgZmFsc2UgfTsKKworICAgIExvY2sgbV9sb2NrOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+IG1fZnVuY3Rpb25zOworICAgIEhhc2hTZXQ8UmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlPj4gbV9jb25uZWN0aW9uczsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5Yjhh
ZTdhY2ZjODAwYzYwOWM3MmQ1NjI1ZjQ5MDVmMWM1NGI5MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0w
LDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yLmgiCisKK25hbWVzcGFjZSBJUEMgewor
CitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2Uo
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSwg
U3RyZWFtQ29ubmVjdGlvblByb2Nlc3NvciYgcHJvY2Vzc29yKQorICAgIDogbV9jb25uZWN0aW9u
KGNvbm5lY3Rpb24pCisgICAgLCBtX3Byb2Nlc3Nvcihwcm9jZXNzb3IpCisgICAgLCBtX2J1ZmZl
cihXVEZNb3ZlKHN0cmVhbSkpCit7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U6OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdl
RmlsdGVyKCp0aGlzLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIG1fcHJvY2Vz
c29yLmFkZFN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOworfQorCit2b2lkIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgbV9jb25uZWN0aW9uLT5y
ZW1vdmVNZXNzYWdlRmlsdGVyKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgbV9w
cm9jZXNzb3IucmVtb3ZlU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2U6OmRpZFJlY2VpdmVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mIG1lc3NhZ2UpCit7CisgICAgeworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOworICAgICAgICBtX291
dE9mU3RyZWFtTWVzc2FnZXMuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAgIH0KKyAgICBt
X3Byb2Nlc3Nvci53YWtlVXAoKTsKK30KKworT3B0aW9uYWw8U3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OlNwYW4+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUoKQorewor
ICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkubG9hZChzdGQ6
Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICBpZiAocmVjZWl2ZXJMaW1pdCA9PSBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3Bhbiht
X3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0KTsKKyAgICBpZiAocmVzdWx0LnNpemUgPCBt
aW5pbXVtTWVzc2FnZVNpemUpIHsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNlbmRl
ck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhyZWNlaXZlckxpbWl0LCBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVt
b3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICBB
U1NFUlQoIShyZWNlaXZlckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zm
c2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKSk7CisgICAgICAgIHJlY2VpdmVyTGltaXQgPSBjbGFt
cGVkTGltaXQocmVjZWl2ZXJMaW1pdCk7CisgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1f
cmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworICAgIH0KKworICAgIGlmIChyZXN1bHQu
c2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6cmVsZWFzZShzaXplX3QgcmVhZFNpemUpCit7CisgICAgQVNTRVJUKHJlYWRTaXplKTsKKyAg
ICByZWFkU2l6ZSA9IHN0ZDo6bWF4KHJlYWRTaXplLCBtaW5pbXVtTWVzc2FnZVNpemUpOworICAg
IHNpemVfdCByZWNlaXZlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9yZWNlaXZl
ck9mZnNldCkgKyByZWFkU2l6ZSk7CisgICAgc2l6ZV90IG9sZFJlY2VpdmVyT2Zmc2V0ID0gc2hh
cmVkUmVjZWl2ZXJPZmZzZXQoKS5leGNoYW5nZShyZWNlaXZlck9mZnNldCwgc3RkOjptZW1vcnlf
b3JkZXJfYWNxX3JlbCk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAvLyBJZiB0aGUgc2Vu
ZGVyIHdyb3RlIG92ZXIgcmVjZWl2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBzZW5kZXIgaXMgd2Fp
dGluZy4KKyAgICBpZiAob2xkUmVjZWl2ZXJPZmZzZXQgIT0gbV9yZWNlaXZlck9mZnNldCkKKyAg
ICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLnNpZ25hbCgpOworI2VuZGlmCisK
KyAgICBtX3JlY2VpdmVyT2Zmc2V0ID0gcmVjZWl2ZXJPZmZzZXQ7Cit9CisKK1N0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpTcGFuIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjphbGlnbmVk
U3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgQVNTRVJUKG9mZnNldCA8
IGRhdGFTaXplKCkpOworICAgIEFTU0VSVChsaW1pdCA8IGRhdGFTaXplKCkpOworICAgIHNpemVf
dCBhbGlnbmVkID0gYWxpZ25PZmZzZXQob2Zmc2V0KTsKKyAgICBzaXplX3QgcmVzdWx0U2l6ZSA9
IDA7CisgICAgaWYgKG9mZnNldCA8IGxpbWl0KSB7CisgICAgICAgIGlmIChvZmZzZXQgPD0gYWxp
Z25lZCAmJiBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShh
bGlnbmVkLCBsaW1pdCk7CisgICAgfSBlbHNlIGlmIChvZmZzZXQgPiBsaW1pdCkgeworICAgICAg
ICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgfHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAg
cmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0KKyAgICByZXR1cm4geyBk
YXRhKCkgKyBhbGlnbmVkLCByZXN1bHRTaXplIH07Cit9CisKK3NpemVfdCBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZTo6c2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAg
aWYgKG9mZnNldCA8PSBsaW1pdCkKKyAgICAgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0OworICAg
IHJldHVybiBkYXRhU2l6ZSgpIC0gb2Zmc2V0OworfQorCitzaXplX3QgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0Cit7
CisgICAgQVNTRVJUKHVudHJ1c3RlZExpbWl0IDwgKGRhdGFTaXplKCkgLSAxKSk7CisgICAgcmV0
dXJuIHN0ZDo6bWluKHVudHJ1c3RlZExpbWl0LCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hOWM5ZTljNDQ2OWYxMjc4MmI2ODA3OTNhY2YwMzllNzBmYjdiZmRlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMjgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1
ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAiTWVz
c2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1
ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworY2xhc3MgU3Ry
ZWFtQ29ubmVjdGlvblByb2Nlc3NvcjsKKworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U+LCBwcm90ZWN0ZWQgTWVzc2FnZUZpbHRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UpOworcHVibGljOgorICAgIH5TdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZSgpIG92ZXJyaWRlID0gZGVmYXVsdDsKKworICAgIENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24oKSB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKworICAgIGVudW0gRGlzcGF0Y2hS
ZXN1bHQgOiBib29sIHsKKyAgICAgICAgSGFzTm9NZXNzYWdlcywKKyAgICAgICAgSGFzTW9yZU1l
c3NhZ2VzCisgICAgfTsKKyAgICB2aXJ0dWFsIERpc3BhdGNoUmVzdWx0IGRpc3BhdGNoU3RyZWFt
TWVzc2FnZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkgPSAwOworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJndW1lbnRzPgorICAgIHZvaWQgc2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVx
dWVzdElELCBBcmd1bWVudHMmJi4uLik7CisKK3Byb3RlY3RlZDoKKyAgICBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZShJUEM6OkNvbm5lY3Rpb24mLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYs
IFN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3ImKTsKKworICAgIHZvaWQgc3RhcnRSZWNlaXZpbmdN
ZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2
b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklEKTsKKworICAgIC8vIE1lc3NhZ2VGaWx0ZXIgb3ZlcnJpZGVzLgorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYg
bWVzc2FnZSkgZmluYWw7CisKKyAgICBzdHJ1Y3QgU3BhbiB7CisgICAgICAgIHVpbnQ4X3QqIGRh
dGE7CisgICAgICAgIHNpemVfdCBzaXplOworICAgIH07CisgICAgT3B0aW9uYWw8U3Bhbj4gdHJ5
QXF1aXJlKCk7CisKKyAgICB2b2lkIHJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKTsKKyAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBtaW5pbXVtTWVzc2FnZVNpemUgPSBTdHJlYW1Db25uZWN0aW9u
RW5jb2Rlcjo6bWluaW11bU1lc3NhZ2VTaXplOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IG1lc3NhZ2VBbGlnbm1lbnQgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWVzc2FnZUFsaWdu
bWVudDsKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7
CisgICAgc2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAgICBzaXpl
X3QgY2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7CisgICAgc2l6ZV90
IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9m
ZnNldChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNl
dCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRTZW5k
ZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQorICAgIEF0b21p
YzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnJlY2Vp
dmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuZGF0YVNpemUoKTsgfQorCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OworICAgIFN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3ImIG1fcHJvY2Vzc29yOworCisgICAgc2l6
ZV90IG1fcmVjZWl2ZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBt
X2J1ZmZlcjsKKworICAgIExvY2sgbV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jazsKKyAgICBEZXF1
ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IG1fb3V0T2ZTdHJlYW1NZXNzYWdlczsKKworICAg
IGZyaWVuZCBjbGFzcyBTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yOworfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6
c2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLiBhcmd1
bWVudHMpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kaW5nIHRvIGJ1ZmZlci4KKyAg
ICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oSVBDOjpNZXNzYWdlTmFt
ZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CisgICAgKCplbmNvZGVyIDw8IC4u
LiA8PCBhcmd1bWVudHMpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShXVEZNb3Zl
KGVuY29kZXIpKTsKK30KKworLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbiByZXByZXNlbnRzIHRo
ZSBjb25uZWN0aW9uIGJldHdlZW4gc3RyZWFtIHNlbmRlciBhbmQgcmVjZWl2ZXIsIGFzIHVzZWQg
YnkgdGhlIHJlY2VpdmVyLgorLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbjoKKy8vICAqIEhvbGRz
IHRoZSBtZXNzYWdlcyB0b3dhcmRzIHRoZSByZWNlaXZlci4KKy8vICAqIFNlbmRzIHRoZSByZXBs
aWVzIGJhY2sgdG8gdGhlIHNlbmRlciB2aWEgdGhlIHN0cmVhbSBvciBub3JtYWwgQ29ubmVjdGlv
biBmYWxsYmFjay4KKy8vCisvLyBSZWNlaXZlciB0ZW1wbGF0ZSBjb250cmFjdDoKKy8vICAgdm9p
ZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIERl
Y29kZXImKTsKKy8vCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK2NsYXNzIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2Ug
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gY3JlYXRl
KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1C
dWZmZXIsIFN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3ImIHByb2Nlc3NvcikKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlv
biwgV1RGTW92ZShzdHJlYW1CdWZmZXIpLCBwcm9jZXNzb3IpKTsKKyAgICB9CisgICAgflN0cmVh
bVNlcnZlckNvbm5lY3Rpb24oKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHN0YXJ0UmVj
ZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQpOworICAgIC8vIFN0b3BzIHRoZSBtZXNzYWdlIHJlY2VpcHQuIE5vdGU6IGFscmVhZHkg
cmVjZWl2ZWQgbWVzc2FnZXMgbWlnaHQgc3RpbGwgYmUgZGVsaXZlcmVkLgorICAgIHZvaWQgc3Rv
cFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7
CisKKyAgICAvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSBvdmVycmlkZXMuCisgICAgRGlz
cGF0Y2hSZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KSBm
aW5hbDsKKworcHJpdmF0ZToKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVh
bUNvbm5lY3Rpb25Qcm9jZXNzb3ImIHByb2Nlc3NvcikKKyAgICAgICAgOiBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZShjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHByb2Nlc3Nv
cikKKyAgICB7CisgICAgfQorICAgIGJvb2wgcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQo
RGVjb2RlciYmLCBSZWZQdHI8UmVjZWl2ZXI+JiBjdXJyZW50UmVjZWl2ZXIpOworICAgIGJvb2wg
ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiwgUmVjZWl2ZXImKTsKKyAgICBib29sIGRp
c3BhdGNoT3V0T2ZTdHJlYW1NZXNzYWdlKERlY29kZXImJik7CisgICAgTG9jayBtX3JlY2VpdmVy
c0xvY2s7CisgICAgdXNpbmcgUmVjZWl2ZXJzTWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8dWludDhf
dCwgdWludDY0X3Q+LCBSZWY8UmVjZWl2ZXI+PjsKKyAgICBSZWNlaXZlcnNNYXAgbV9yZWNlaXZl
cnM7CisKKyAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEID0gMDsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJl
Y2VpdmVyPjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYgcmVjZWl2ZXIsIFJlY2Vp
dmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgewor
ICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJl
Y2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9yZWNlaXZlcnMuY29udGFp
bnMoa2V5KSk7CisgICAgICAgIG1fcmVjZWl2ZXJzLmFkZChrZXksIG1ha2VSZWYocmVjZWl2ZXIp
KTsKKyAgICB9CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5n
TWVzc2FnZXNJbXBsKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAg
ICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVy
TmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNl
aXZlcnNMb2NrKTsKKyAgICBBU1NFUlQobV9yZWNlaXZlcnMuY29udGFpbnMoa2V5KSk7CisgICAg
bV9yZWNlaXZlcnMucmVtb3ZlKGtleSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVy
PgorU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OkRpc3BhdGNoUmVzdWx0IFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNz
YWdlTGltaXQpCit7CisgICAgUmVmUHRyPFJlY2VpdmVyPiBjdXJyZW50UmVjZWl2ZXI7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBXVEY6OmlzVmFsaWQoUmVjZWl2ZXJOYW1lKS4KKyAgICB1aW50
OF90IGN1cnJlbnRSZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihSZWNlaXZlck5h
bWU6OkludmFsaWQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlTGltaXQ7
ICsraSkgeworICAgICAgICBhdXRvIHNwYW4gPSB0cnlBcXVpcmUoKTsKKyAgICAgICAgaWYgKCFz
cGFuKQorICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOwor
ICAgICAgICBJUEM6OkRlY29kZXIgZGVjb2RlciB7IHNwYW4tPmRhdGEsIHNwYW4tPnNpemUsIG1f
Y3VycmVudERlc3RpbmF0aW9uSUQgfTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkg
eworICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNo
UmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICB9CisgICAgICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQpIHsKKyAg
ICAgICAgICAgIGlmICghcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoV1RGTW92ZShkZWNv
ZGVyKSwgY3VycmVudFJlY2VpdmVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hS
ZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpQcm9jZXNz
T3V0T2ZTdHJlYW1NZXNzYWdlKSB7CisgICAgICAgICAgICBpZiAoIWRpc3BhdGNoT3V0T2ZTdHJl
YW1NZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpKQorICAgICAgICAgICAgICAgIHJldHVybiBEaXNw
YXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIGlmIChjdXJyZW50UmVjZWl2ZXJOYW1lICE9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkgeworICAgICAgICAgICAgY3VycmVu
dFJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKTsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFjdXJyZW50UmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIGF1dG8g
a2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4oY3VycmVudFJlY2VpdmVy
TmFtZSksIG1fY3VycmVudERlc3RpbmF0aW9uSUQpOworICAgICAgICAgICAgaWYgKCFSZWNlaXZl
cnNNYXA6OmlzVmFsaWRLZXkoa2V5KSkgeworICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+
ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2
ZXJzTG9jayk7CisgICAgICAgICAgICBjdXJyZW50UmVjZWl2ZXIgPSBtX3JlY2VpdmVycy5nZXQo
a2V5KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNlaXZlcikgeworICAgICAg
ICAgICAgLy8gVmFsaWQgc2NlbmFyaW8gaXMgd2hlbiByZWNlaXZlciBoYXMgYmVlbiByZW1vdmVk
LCBidXQgbWVzc2FnZXMKKyAgICAgICAgICAgIC8vIGZvciBpdCBleGlzdCBpbiB0aGUgYnVmZmVy
LgorICAgICAgICAgICAgLy8gRklYTUU6IFNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgcmVjZWl2ZXIs
IHdlIGRvbid0IGtub3cgaG93IHRvIGRlY29kZSB0aGUgbWVzc2FnZS4KKyAgICAgICAgICAgIC8v
IFRoaXMgbWVhbnMgd2UgbXVzdCB0aW1lb3V0IGV2ZXJ5IHJlY2VpdmVyIGluIHRoZSBzdHJlYW0g
Y29ubmVjdGlvbi4KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICB9CisgICAg
ICAgIGlmICghZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKFdURk1vdmUoZGVjb2RlciksICpjdXJyZW50
UmVjZWl2ZXIpKQorICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3Nh
Z2VzOworICAgIH0KKyAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc01vcmVNZXNzYWdlczsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29sIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVjZWl2ZXI+Ojpwcm9jZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRChEZWNvZGVyJiYg
ZGVjb2RlciwgUmVmUHRyPFJlY2VpdmVyPiYgY3VycmVudFJlY2VpdmVyKQoreworICAgIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQgPSAwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVzdGluYXRp
b25JRCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIGlmIChtX2N1cnJlbnREZXN0aW5hdGlvbklEICE9IGRlc3RpbmF0aW9uSUQpIHsK
KyAgICAgICAgbV9jdXJyZW50RGVzdGluYXRpb25JRCA9IGRlc3RpbmF0aW9uSUQ7CisgICAgICAg
IGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7CisgICAgfQorICAgIHJlbGVhc2UoZGVjb2Rlci5j
dXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiBkZWNvZGVyLCBSZWNlaXZlciYgcmVj
ZWl2ZXIpCit7CisgICAgcmVjZWl2ZXIuZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKnRoaXMsIGRl
Y29kZXIpOworICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgbV9jb25uZWN0
aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJlbGVhc2UoZGVjb2Rlci5j
dXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmIGRlY29kZXIpCit7CisgICAg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2U7CisgICAgeworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOworICAgICAgICBpZiAo
bV9vdXRPZlN0cmVhbU1lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgbWVzc2FnZSA9IG1fb3V0T2ZTdHJlYW1NZXNzYWdlcy50YWtlRmlyc3QoKTsK
KyAgICB9CisgICAgaWYgKCFtZXNzYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBS
ZWZQdHI8UmVjZWl2ZXI+IHJlY2VpdmVyOworICAgIHsKKyAgICAgICAgYXV0byBrZXkgPSBzdGQ6
Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpLCBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpOworICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgIHJlY2VpdmVyID0gbV9yZWNlaXZl
cnMuZ2V0KGtleSk7CisgICAgfQorICAgIGlmIChyZWNlaXZlcikgeworICAgICAgICByZWNlaXZl
ci0+ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKnRoaXMsICptZXNzYWdlKTsKKyAgICAgICAgaWYg
KCFtZXNzYWdlLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0
Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gSWYgcmVjZWl2
ZXIgZG9lcyBub3QgZXhpc3QgaWYgaXQgaGFzIGJlZW4gcmVtb3ZlZCBidXQgbWVzc2FnZXMgYXJl
IHN0aWxsIHBlbmRpbmcgdG8gYmUKKyAgICAvLyBwcm9jZXNzZWQuIEl0J3Mgb2sgdG8gc2tpcCBz
dWNoIG1lc3NhZ2VzLgorICAgIC8vIEZJWE1FOiBOb3RlLCBjb3JyZXNwb25kaW5nIHNraXAgaXMg
bm90IHBvc3NpYmxlIGF0IHRoZSBtb21lbnQgZm9yIHN0cmVhbSBtZXNzYWdlcy4KKyAgICByZWxl
YXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBvc2l0aW9uKCkpOworICAgIHJldHVybiB0cnVlOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNo
UG9ydC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaAppbmRl
eCA3ODU0ZmE4ZjE4NjhmYjhlNDU2MjI4OWZkZGY2ZjI3OTVhZjJkOTBkLi44M2Q5OWYwY2JjOGZl
MDQ4MjBiNDc4M2M5YzA3NmFiNTdhM2VhYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL2NvY29hL01hY2hQb3J0LmgKQEAgLTI1LDkgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgotI2lu
Y2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBlYzhiY2Yw
ODdkZjE2ZGY2MGRiZTAwODBlNGNlYjA2MWQxNzY4ZmY3Li5hNjVkMzQ3MDA5MWYyNTYwOWZhZDBi
ZTdiY2IzY2Y4NGU5MTczNTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKQEAgLTI0LDggKzI0LDkgQEAgaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgcmUKIGlt
cG9ydCBzeXMKIAorZnJvbSBtb2RlbCBpbXBvcnQgTWVzc2FnZVJlY2VpdmVyLCBNZXNzYWdlCiBm
cm9tIHdlYmtpdCBpbXBvcnQgcGFyc2VyCi1mcm9tIHdlYmtpdC5tb2RlbCBpbXBvcnQgQlVJTFRJ
Tl9BVFRSSUJVVEUsIEFTWU5DX0FUVFJJQlVURSwgU1lOQ0hST05PVVNfQVRUUklCVVRFCitmcm9t
IHdlYmtpdC5tb2RlbCBpbXBvcnQgQlVJTFRJTl9BVFRSSUJVVEUsIEFTWU5DX0FUVFJJQlVURSwg
U1lOQ0hST05PVVNfQVRUUklCVVRFLCBTVFJFQU1fQVRUUklCVVRFLCBXQU5UU19DT05ORUNUSU9O
X0FUVFJJQlVURQogCiBfbGljZW5zZV9oZWFkZXIgPSAiIiIvKgogICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTMsMTMgKzU0LDEx
IEBAIF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCiAKICIiIgogCi1XQU5UU19DT05ORUNUSU9OX0FU
VFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24nCiBXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJ
QlVURSA9ICdXYW50c0Rpc3BhdGNoTWVzc2FnZScKIFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NB
R0VfQVRUUklCVVRFID0gJ1dhbnRzQXN5bmNEaXNwYXRjaE1lc3NhZ2UnCiBMRUdBQ1lfUkVDRUlW
RVJfQVRUUklCVVRFID0gJ0xlZ2FjeVJlY2VpdmVyJwogTk9UX1JFRkNPVU5URURfUkVDRUlWRVJf
QVRUUklCVVRFID0gJ05vdFJlZkNvdW50ZWQnCiAKLQogZGVmIHJlY2VpdmVyX2VudW1lcmF0b3Jf
b3JkZXJfa2V5KHJlY2VpdmVyX25hbWUpOgogICAgIGlmIHJlY2VpdmVyX25hbWUgPT0gJ0lQQyc6
CiAgICAgICAgIHJldHVybiAxCkBAIC0yMDYsNyArMjA1LDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3Ry
dWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICB1c2luZyBBc3luY1JlcGx5ID0gJXNBc3luY1JlcGx5O1xuJyAlIG1lc3NhZ2Uu
bmFtZSkKICAgICAgICAgZWxpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRU
UklCVVRFKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBEZWxheWVkUmVw
bHkgPSAlc0RlbGF5ZWRSZXBseTtcbicgJSBtZXNzYWdlLm5hbWUpCi0gICAgICAgIGlmIG1lc3Nh
Z2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0
dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICBpZiAobWVzc2FnZS5oYXNfYXR0cmli
dXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5D
X0FUVFJJQlVURSkpIGFuZCBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklC
VVRFKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYnKQogICAgICAg
ICAgICAgaWYgbGVuKHNlbmRfcGFyYW1ldGVycyk6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnLCAlcycgJSBjb21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycykKQEAgLTI1NCw2ICsy
NTMsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAg
IHJldHVybiBmcm96ZW5zZXQoWwogICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNlJywKICAgICAg
ICAgJ0lQQzo6Rm9udFJlZmVyZW5jZScsCisgICAgICAgICdJUEM6OlNlbWFwaG9yZUhhbmRsZScs
CiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAg
ICdTdHJpbmcnLApAQCAtNTYzLDEwICs1NjMsMTUgQEAgZGVmIHN5bmNfbWVzc2FnZV9zdGF0ZW1l
bnQocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgICAgICBkaXNwYXRjaF9mdW5jdGlvbiArPSAnQXN5
bmMnCiAKICAgICB3YW50c19jb25uZWN0aW9uID0gbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNI
Uk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFdBTlRTX0NPTk5FQ1RJ
T05fQVRUUklCVVRFKQorICAgIG1heWJlX3JlcGx5X2VuY29kZXIgPSAiLCAqcmVwbHlFbmNvZGVy
IgorICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CisgICAg
ICAgIG1heWJlX3JlcGx5X2VuY29kZXIgPSAnJworICAgIGVsaWYgbWVzc2FnZS5oYXNfYXR0cmli
dXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5D
X0FUVFJJQlVURSk6CisgICAgICAgIG1heWJlX3JlcGx5X2VuY29kZXIgPSAnLCByZXBseUVuY29k
ZXInCiAKICAgICByZXN1bHQgPSBbXQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUoKSkge1xuJyAlIChyZWNl
aXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgSVBD
OjolczxNZXNzYWdlczo6JXM6OiVzPiglc2RlY29kZXIsICVzcmVwbHlFbmNvZGVyLCB0aGlzLCAm
JXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1l
LCAnY29ubmVjdGlvbiwgJyBpZiB3YW50c19jb25uZWN0aW9uIGVsc2UgJycsICcnIGlmIG1lc3Nh
Z2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0
dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpIGVsc2UgJyonLCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2Vp
dmVyLCBtZXNzYWdlKSkpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBJUEM6OiVzPE1lc3Nh
Z2VzOjolczo6JXM+KCVzZGVjb2RlciVzLCB0aGlzLCAmJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5j
dGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnY29ubmVjdGlvbiwgJyBpZiB3YW50
c19jb25uZWN0aW9uIGVsc2UgJycsIG1heWJlX3JlcGx5X2VuY29kZXIsIGhhbmRsZXJfZnVuY3Rp
b24ocmVjZWl2ZXIsIG1lc3NhZ2UpKSkKICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVy
bjtcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCiAgICAgcmV0dXJuIHN1cnJvdW5k
X2luX2NvbmRpdGlvbignJy5qb2luKHJlc3VsdCksIG1lc3NhZ2UuY29uZGl0aW9uKQpAQCAtODYx
LDcgKzg2Niw3IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAg
ICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZSBhbmQgKG1lc3NhZ2UuaGFz
X2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0
ZShBU1lOQ19BVFRSSUJVVEUpKToKICAgICAgICAgICAgIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2Fn
ZXMuYXBwZW5kKG1lc3NhZ2UpCiAKLSAgICBpZiBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzOgor
ICAgIGlmIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXMgYW5kIG5vdCByZWNlaXZlci5oYXNfYXR0
cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCduYW1lc3Bh
Y2UgTWVzc2FnZXMge1xuXG5uYW1lc3BhY2UgJXMge1xuXG4nICUgcmVjZWl2ZXIubmFtZSkKIAog
ICAgICAgICBmb3IgbWVzc2FnZSBpbiBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzOgpAQCAtOTA5
LDI1ICs5MTQsNDQgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkK
IAotICAgIGlmIGFzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNf
RElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FO
VFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgotICAgICAgICByZXN1bHQuYXBw
ZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZl
ci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVU
RSkgZWxzZSAnJykpCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklC
VVRFKToKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN0cmVhbU1l
c3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgne1xuJykKLSAgICAgICAgaWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JF
RkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKToKKyAgICAgICAgYXNzZXJ0KHJlY2VpdmVyLmhh
c19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKSkKKyAgICAgICAg
YXNzZXJ0KG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0Vf
QVRUUklCVVRFKSkKKyAgICAgICAgYXNzZXJ0KG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdB
TlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSkKKworICAgICAgICByZXN1bHQg
Kz0gW2FzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3IgbWVzc2Fn
ZSBpbiBhc3luY19tZXNzYWdlc10KKyAgICAgICAgcmVzdWx0ICs9IFtzeW5jX21lc3NhZ2Vfc3Rh
dGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3IgbWVzc2FnZSBpbiBzeW5jX21lc3NhZ2VzXQor
CisgICAgICAgIGlmIChyZWNlaXZlci5zdXBlcmNsYXNzKToKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xhc3MpKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTtcbicpCisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pO1xuJykKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCisgICAgZWxpZiBhc3luY19tZXNzYWdlcyBvciBy
ZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSBv
ciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRU
UklCVVRFKToKKyAgICAgICAgcmVjZWl2ZV92YXJpYW50ID0gcmVjZWl2ZXIubmFtZSBpZiByZWNl
aXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2
ZXIubmFtZSwgcmVjZWl2ZV92YXJpYW50KSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykK
KyAgICAgICAgaWYgbm90IChyZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JF
Q0VJVkVSX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklC
VVRFKSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgYXV0byBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyk7XG4nKQogCiAgICAgICAgIHJlc3VsdCArPSBbYXN5bmNfbWVzc2Fn
ZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIGFzeW5jX21lc3Nh
Z2VzXQorCiAgICAgICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hf
TUVTU0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNf
RElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIGlmIChkaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlcikpXG4nKQogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQogICAgICAgICBpZiAocmVj
ZWl2ZXIuc3VwZXJjbGFzcyk6Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJXM6OmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBl
cmNsYXNzKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZSVz
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcywg
cmVjZWl2ZV92YXJpYW50KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7XG4nKQogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTtcbicpCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCd9XG4nKQogCi0gICAgaWYgc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0
cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKKyAgICBpZiBub3QgcmVj
ZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKSBhbmQgKHN5bmNfbWVzc2FnZXMg
b3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVU
RSkpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
J3ZvaWQgJXM6OmRpZFJlY2VpdmVTeW5jJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYgcmVwbHlFbmNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykp
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQppbmRleCA2ZWM2ZWI0ZGE1NTc3M2ZjZWQ2
M2QzODIyMzNjMzI1ODE5YTlhM2MzLi45NTVkYjJmNjhiYjY5YWNiMTgzZTkzYTRkYzAyZjk0NmY0
M2EzZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
X3VuaXR0ZXN0LnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNf
dW5pdHRlc3QucHkKQEAgLTM5LDcgKzM5LDcgQEAgdGVzdHNfZGlyZWN0b3J5ID0gb3MucGF0aC5q
b2luKG1vZHVsZV9kaXJlY3RvcnksICd0ZXN0cycpCiAKIHJlc2V0X3Jlc3VsdHMgPSBGYWxzZQog
Ci1fdGVzdF9yZWNlaXZlcl9uYW1lcyA9IFsnVGVzdFdpdGhTdXBlcmNsYXNzJywgJ1Rlc3RXaXRo
TGVnYWN5UmVjZWl2ZXInLCAnVGVzdFdpdGhvdXRBdHRyaWJ1dGVzJywgJ1Rlc3RXaXRoSWZNZXNz
YWdlJ10KK190ZXN0X3JlY2VpdmVyX25hbWVzID0gWydUZXN0V2l0aFN1cGVyY2xhc3MnLCAnVGVz
dFdpdGhMZWdhY3lSZWNlaXZlcicsICdUZXN0V2l0aG91dEF0dHJpYnV0ZXMnLCAnVGVzdFdpdGhJ
Zk1lc3NhZ2UnLCAnVGVzdFdpdGhTdHJlYW0nLCAnVGVzdFdpdGhTdHJlYW1CdWZmZXInXQogCiAK
IGRlZiByZWNlaXZlcl9oZWFkZXJfZmlsZV9uYW1lKHJlY2VpdmVyX25hbWUpOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbW9kZWwucHkKaW5kZXggYWMzODY4OTA1Y2ZjZDMwYThjNjM2ZjNmZTA0
N2E3NGE0YTMxNGE4My4uZmY1MzEyZTk3YWMwMTAwY2ZhOGJjOTY0ODFlN2ZhNTMyYTJjZmMyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5CkBAIC0yNyw2ICsyNyw4IEBAIGZy
b20gY29sbGVjdGlvbnMgaW1wb3J0IENvdW50ZXIsIGRlZmF1bHRkaWN0CiBCVUlMVElOX0FUVFJJ
QlVURSA9ICJCdWlsdGluIgogQVNZTkNfQVRUUklCVVRFID0gIkFzeW5jIgogU1lOQ0hST05PVVNf
QVRUUklCVVRFID0gJ1N5bmNocm9ub3VzJworU1RSRUFNX0FUVFJJQlVURSA9ICJTdHJlYW0iCitX
QU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24nCiAKIGNsYXNzIE1l
c3NhZ2VSZWNlaXZlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdXBl
cmNsYXNzLCBhdHRyaWJ1dGVzLCBtZXNzYWdlcywgY29uZGl0aW9uKToKQEAgLTcyLDcgKzc0LDkg
QEAgaXBjX3JlY2VpdmVyID0gTWVzc2FnZVJlY2VpdmVyKG5hbWU9IklQQyIsIHN1cGVyY2xhc3M9
Tm9uZSwgYXR0cmlidXRlcz1bQlVJTFRJTl8KICAgICBNZXNzYWdlKCdXcmFwcGVkQXN5bmNNZXNz
YWdlRm9yVGVzdGluZycsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEUsIFNZ
TkNIUk9OT1VTX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdTeW5j
TWVzc2FnZVJlcGx5JywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNv
bmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdJbml0aWFsaXplQ29ubmVjdGlvbicsIFtdLCBb
XSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249IlBMQVRGT1JNKENP
Q09BKSIpLAotICAgIE1lc3NhZ2UoJ0xlZ2FjeVNlc3Npb25TdGF0ZScsIFtdLCBbXSwgYXR0cmli
dXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSkKKyAgICBNZXNzYWdlKCdM
ZWdhY3lTZXNzaW9uU3RhdGUnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRF
XSwgY29uZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2UoJ1NldFN0cmVhbURlc3RpbmF0aW9uSUQn
LCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUp
LAorICAgIE1lc3NhZ2UoJ1Byb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UnLCBbXSwgW10sIGF0dHJp
YnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpCiBdLCBjb25kaXRpb249
Tm9uZSkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L01ha2VmaWxlIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQpp
bmRleCA4Nzk2ZmZiYzVhM2Y4N2I5MjNlZDZjOTgwMjM5MWE4NzZiYWMzODJlLi5iZGU5OGRiMmZl
MDMyMDdkNmViZjA3ZWJiYTc5YTUwYzhiOGI1MTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKQEAgLTEsMiArMSwyIEBACiBhbGw6Ci0JcHl0aG9uIC4u
Ly4uL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgLiBUZXN0V2l0aFN1cGVyY2xhc3MgVGVz
dFdpdGhMZWdhY3lSZWNlaXZlciBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgVGVzdFdpdGhJZk1lc3Nh
Z2UKKwlweXRob24gLi4vLi4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSAuIFRlc3RXaXRo
U3VwZXJjbGFzcyBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyIFRlc3RXaXRob3V0QXR0cmlidXRlcyBU
ZXN0V2l0aElmTWVzc2FnZSBUZXN0V2l0aFN0cmVhbSBUZXN0V2l0aFN0cmVhbUJ1ZmZlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1l
bnREZXNjcmlwdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9N
ZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCmluZGV4IDU5NDA0NDM5MGNhZGFjMmZmMGNk
ZmFhOWUzMDUwNDQyNzc4MzgwZmUuLjIxZjBlYmNmZjBkNWYxMmIzNDQ4ZTZhZDg5MWU3OWE3MjU5
MTIwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVz
c2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKQEAgLTQwLDEyICs0
MCwxNSBAQAogI2luY2x1ZGUgIk1hY2hQb3J0LmgiCiAjZW5kaWYKICNpbmNsdWRlICJQbHVnaW4u
aCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGVzdENs
YXNzTmFtZS5oIgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAjaW5jbHVkZSAiVGVzdFR3b1N0
YXRlRW51bS5oIgogI2VuZGlmCiAjaW5jbHVkZSAiVGVzdFdpdGhJZk1lc3NhZ2VNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IlRlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVh
bU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJUZXN0V2l0aG91dEF0dHJpYnV0ZXNNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgpAQCAtMjE2LDYgKzIxOSwxMiBAQCBPcHRpb25hbDxKU0M6OkpT
VmFsdWU+IGpzVmFsdWVGb3JBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBNZQogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoSWZNZXNzYWdlX0xvYWRVUkw6
CiAgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVz
dFdpdGhJZk1lc3NhZ2U6OkxvYWRVUkw6OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVy
KTsKICNlbmRpZgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJp
bmc6CisgICAgICAgIHJldHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6
VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNv
ZGVyKTsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3lu
Y2hyb25pemVkOgorICAgICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVz
c2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpBcmd1bWVudHM+
KGdsb2JhbE9iamVjdCwgZGVjb2Rlcik7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhT
dHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIGpzVmFsdWVGb3JE
ZWNvZGVkQXJndW1lbnRzPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVh
bUJ1ZmZlcjo6QXJndW1lbnRzPihnbG9iYWxPYmplY3QsIGRlY29kZXIpOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTUxNyw2ICs1MjYsMTggQEAgT3B0aW9uYWw8VmVj
dG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMoTWVz
c2FnZU5hbWUgbmEKICAgICAgICAgICAgIHsidmFsdWUiLCAiaW50NjRfdCIsIG51bGxwdHIsIGZh
bHNlfSwKICAgICAgICAgfTsKICNlbmRpZgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRo
U3RyZWFtX1NlbmRTdHJpbmc6CisgICAgICAgIHJldHVybiBWZWN0b3I8QXJndW1lbnREZXNjcmlw
dGlvbj4geworICAgICAgICAgICAgeyJ1cmwiLCAiU3RyaW5nIiwgbnVsbHB0ciwgZmFsc2V9LAor
ICAgICAgICB9OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJp
bmdTeW5jaHJvbml6ZWQ6CisgICAgICAgIHJldHVybiBWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlv
bj4geworICAgICAgICAgICAgeyJ1cmwiLCAiU3RyaW5nIiwgbnVsbHB0ciwgZmFsc2V9LAorICAg
ICAgICB9OworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRT
dHJlYW1CdWZmZXI6CisgICAgICAgIHJldHVybiBWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4g
eworICAgICAgICAgICAgeyJzdHJlYW0iLCAiSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIiwg
bnVsbHB0ciwgZmFsc2V9LAorICAgICAgICB9OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWVzc2FnZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVz
c2FnZU5hbWVzLmNwcAppbmRleCA3NmZhZDM3YzU0NjBhZGJjZmVhMzcyZDE4NjY1NTBmYTdjOGE4
NTEzLi40N2IzMGRkMzkwY2IwYWMzNTk3MTIyY2Q5Nzc0Y2Q5MmQ2NTVmMGQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCkBA
IC03Miw2ICs3MiwxMiBAQCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBuYW1l
KQogICAgICAgICByZXR1cm4gIlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVzdFBhcmFtZXRlckF0
dHJpYnV0ZXMiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJf
VG91Y2hFdmVudDoKICAgICAgICAgcmV0dXJuICJUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNo
RXZlbnQiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRT
dHJlYW1CdWZmZXI6CisgICAgICAgIHJldHVybiAiVGVzdFdpdGhTdHJlYW1CdWZmZXJfU2VuZFN0
cmVhbUJ1ZmZlciI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0
cmluZzoKKyAgICAgICAgcmV0dXJuICJUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nIjsKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkOgor
ICAgICAgICByZXR1cm4gIlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmdTeW5jaHJvbml6ZWQiOwog
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMOgogICAgICAg
ICByZXR1cm4gIlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMIjsKICAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZToKQEAgLTEyNiw2ICsxMzIs
OCBAQCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBuYW1lKQogICAgICAgICBy
ZXR1cm4gIkluaXRpYWxpemVDb25uZWN0aW9uIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpMZWdh
Y3lTZXNzaW9uU3RhdGU6CiAgICAgICAgIHJldHVybiAiTGVnYWN5U2Vzc2lvblN0YXRlIjsKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlOgorICAgICAgICBy
ZXR1cm4gIlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlN5bmNNZXNzYWdlUmVwbHk6CiAgICAgICAgIHJldHVybiAiU3luY01lc3NhZ2VSZXBseSI7CiAg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VS
ZXBseToKQEAgLTE4MSw2ICsxODksMTEgQEAgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNz
YWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVudDoKICAgICAgICAgcmV0dXJuIFJlY2Vp
dmVyTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aFN0cmVhbUJ1ZmZlcl9TZW5kU3RyZWFtQnVmZmVyOgorICAgICAgICByZXR1cm4gUmVj
ZWl2ZXJOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRo
U3RyZWFtX1NlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6CisgICAgICAgIHJldHVybiBSZWNlaXZlck5h
bWU6OlRlc3RXaXRoU3RyZWFtOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJj
bGFzc19Mb2FkVVJMOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19U
ZXN0QXN5bmNNZXNzYWdlOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFz
c19UZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb246CkBAIC0yMTAsNiArMjIzLDcgQEAgUmVj
ZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICAgICAg
cmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOwogICAgIGNhc2UgTWVz
c2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6Okxl
Z2FjeVNlc3Npb25TdGF0ZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJl
YW1NZXNzYWdlOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHk6CiAgICAg
ICAgIHJldHVybiBSZWNlaXZlck5hbWU6OklQQzsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0
V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVJlcGx5OgpAQCAtMjk5LDYgKzMxMywxMiBA
QCBib29sIGlzVmFsaWRNZXNzYWdlTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICBp
ZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZl
cl9Ub3VjaEV2ZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgorICAgIGlmIChtZXNz
YWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcl9TZW5kU3Ry
ZWFtQnVmZmVyKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZykKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RX
aXRoU3RyZWFtX1NlbmRTdHJpbmdTeW5jaHJvbml6ZWQpCisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xh
c3NfTG9hZFVSTCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKQEAgLTM3OSw2ICszOTksOCBAQCBib29sIGlzVmFsaWRNZXNzYWdlTmFtZShNZXNzYWdlTmFt
ZSBtZXNzYWdlTmFtZSkKICNlbmRpZgogICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGUpCiAgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNz
YWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpN
ZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmluZGV4IDIzZjc1NjA4N2Q2ODNhZDIyYjA2OGUyYTcxZmQ5
NWEwZjNjZTU1NWUuLjU0NmY3NWM3ODc1YzA1ZDhkYzcwOTQ4ODQ0MGUyZDk0OTUwNzNlN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMu
aApAQCAtMzEsMTEgKzMxLDEzIEBAIG5hbWVzcGFjZSBJUEMgewogZW51bSBjbGFzcyBSZWNlaXZl
ck5hbWUgOiB1aW50OF90IHsKICAgICBUZXN0V2l0aElmTWVzc2FnZSA9IDEKICAgICAsIFRlc3RX
aXRoTGVnYWN5UmVjZWl2ZXIgPSAyCi0gICAgLCBUZXN0V2l0aFN1cGVyY2xhc3MgPSAzCi0gICAg
LCBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgPSA0Ci0gICAgLCBJUEMgPSA1Ci0gICAgLCBBc3luY1Jl
cGx5ID0gNgotICAgICwgSW52YWxpZCA9IDcKKyAgICAsIFRlc3RXaXRoU3RyZWFtID0gMworICAg
ICwgVGVzdFdpdGhTdHJlYW1CdWZmZXIgPSA0CisgICAgLCBUZXN0V2l0aFN1cGVyY2xhc3MgPSA1
CisgICAgLCBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgPSA2CisgICAgLCBJUEMgPSA3CisgICAgLCBB
c3luY1JlcGx5ID0gOAorICAgICwgSW52YWxpZCA9IDkKIH07CiAKIGVudW0gY2xhc3MgTWVzc2Fn
ZU5hbWUgOiB1aW50MTZfdCB7CkBAIC02MCw2ICs2Miw5IEBAIGVudW0gY2xhc3MgTWVzc2FnZU5h
bWUgOiB1aW50MTZfdCB7CiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RlbXBsYXRlVGVz
dAogICAgICwgVGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9UZXN0UGFyYW1ldGVyQXR0cmlidXRlcwog
ICAgICwgVGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9Ub3VjaEV2ZW50CisgICAgLCBUZXN0V2l0aFN0
cmVhbUJ1ZmZlcl9TZW5kU3RyZWFtQnVmZmVyCisgICAgLCBUZXN0V2l0aFN0cmVhbV9TZW5kU3Ry
aW5nCisgICAgLCBUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkCiAgICAgLCBU
ZXN0V2l0aFN1cGVyY2xhc3NfTG9hZFVSTAogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RB
c3luY01lc3NhZ2UKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0
aENvbm5lY3Rpb24KQEAgLTg3LDYgKzkyLDcgQEAgZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVp
bnQxNl90IHsKICAgICAsIFRlc3RXaXRob3V0QXR0cmlidXRlc19Ub3VjaEV2ZW50CiAgICAgLCBJ
bml0aWFsaXplQ29ubmVjdGlvbgogICAgICwgTGVnYWN5U2Vzc2lvblN0YXRlCisgICAgLCBQcm9j
ZXNzT3V0T2ZTdHJlYW1NZXNzYWdlCiAgICAgLCBTeW5jTWVzc2FnZVJlcGx5CiAgICAgLCBUZXN0
V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVJlcGx5CiAgICAgLCBUZXN0V2l0aFN1cGVy
Y2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uUmVwbHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtLm1l
c3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkMGY1MjhjNjljZGVmZGRhOWM0ODY3OTEzOGM2MzhiOGFj
MGNiMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjcgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUZXN0cyBTdHJlYW0gcmVjZWl2ZXIg
YXR0cmlidXRlLgorbWVzc2FnZXMgLT4gVGVzdFdpdGhTdHJlYW0gTm90UmVmQ291bnRlZCBTdHJl
YW0geworICAgIHZvaWQgU2VuZFN0cmluZyhTdHJpbmcgdXJsKQorICAgIHZvaWQgU2VuZFN0cmlu
Z1N5bmNocm9uaXplZChTdHJpbmcgdXJsKSAtPiAoaW50NjRfdCByZXR1cm4pCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVm
ZmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN0cmVhbUJ1ZmZlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTcwYWM4OWEyNWYwMzky
MTlmZTQxODEwNWIyYzFkMDRhZTBjN2U4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlci5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyMgVGVzdHMgU3RyZWFtIHJlY2VpdmVyIGF0dHJpYnV0ZS4KK21lc3NhZ2VzIC0+IFRlc3RXaXRo
U3RyZWFtQnVmZmVyICB7CisgICAgdm9pZCBTZW5kU3RyZWFtQnVmZmVyKElQQzo6U3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciBzdHJlYW0pCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5YzkyNDBhNGViMWFiNTU3NDA5NjAyMjkx
ZGMxMjczMTk4N2YwNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAt
MCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVmZmVyLmgiCisKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisj
aW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit2b2lkIFRlc3RXaXRoU3RyZWFtQnVmZmVyOjpkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2Vu
ZFN0cmVhbUJ1ZmZlcjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI+KGRlY29kZXIsIHRo
aXMsICZUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6c2VuZFN0cmVhbUJ1ZmZlcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVOVVNFRF9Q
QVJBTShkZWNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZhMjRlYmRkMjAwZjMzOTA0NzdkZmFmN2NkODU3MTkxYmQ1M2IyODcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVm
ZmVyTWVzc2FnZXMuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVh
bUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xh
c3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25h
bWVzcGFjZSBUZXN0V2l0aFN0cmVhbUJ1ZmZlciB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpSZWNl
aXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVjZWl2
ZXJOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjsKK30KKworY2xhc3MgU2VuZFN0cmVhbUJ1ZmZl
ciB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImPjsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcl9T
ZW5kU3RyZWFtQnVmZmVyOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7
CisKKyAgICBleHBsaWNpdCBTZW5kU3RyZWFtQnVmZmVyKGNvbnN0IElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYgc3RyZWFtKQorICAgICAgICA6IG1fYXJndW1lbnRzKHN0cmVhbSkKKyAgICB7
CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1
bWVudHMgbV9hcmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbUJ1
ZmZlcgorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMu
aCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZm
ZXJNZXNzYWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2ZhMmFkN2Q1MDYzMDBmM2NjYjM5MGYx
OTcyNTlkOTBlNjkzZjMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oCkBAIC0w
LDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNl
IE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbUJ1ZmZlciB7CisKKworfSAvLyBu
YW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2Y2Y1ZDky
NDRhZWUyMGJhZjhkNjM3NzI2NWVhNDkzMTFjYjk4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2Vp
dmVyLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtLmgiCisKKyNpbmNsdWRlICJBcmd1bWVu
dENvZGVycy5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdl
LmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBUZXN0V2l0aFN0
cmVhbTo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5h
bWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3Ry
ZWFtOjpTZW5kU3RyaW5nPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJp
bmcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpu
YW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0
cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9uaXplZD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3Ry
ZWFtOjpzZW5kU3RyaW5nU3luY2hyb25pemVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJl
YW1NZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbU1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBiZmViYWIyMzcyYzFmNjYwNWM1NTg5NDU5
MzhiZjFlNGU3YWFmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oCkBAIC0wLDAgKzEsODkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgor
I2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFt
ZXNwYWNlIFRlc3RXaXRoU3RyZWFtIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFt
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6
OlRlc3RXaXRoU3RyZWFtOworfQorCitjbGFzcyBTZW5kU3RyaW5nIHsKK3B1YmxpYzoKKyAgICB1
c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OworCisgICAgc3RhdGlj
IElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RX
aXRoU3RyZWFtX1NlbmRTdHJpbmc7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmwpCisgICAg
ICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2Ns
YXNzIFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2Vu
ZFN0cmluZ1N5bmNocm9uaXplZDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRy
dWU7CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8aW50NjRfdCY+OworICAgIHVzaW5n
IFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxpbnQ2NF90PjsKKyAgICBleHBsaWNpdCBTZW5k
U3RyaW5nU3luY2hyb25pemVkKGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1l
bnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2l0aFN0cmVhbQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxp
ZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1N
ZXNzYWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmM1YTA3OGRlMDFlYzE0MzBmODk0ZjIwY2I5
YzJmOTE1NWU3Y2FiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VO
YW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2Vz
IHsKK25hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbSB7CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdp
dGhTdHJlYW0KK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA3ZjQwOGJj
NDYxMGMxMDU0OTFkNWIwNjQxZjhiNzBmM2FmOTFiMDQzLi5iYjFlMjBkNzUzZGU1MjE3YmIwMjc1
NThkZDFhZDk4MzdkNzk3ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE0NCw4ICsxNDQsMTMgQEAgUGxh
dGZvcm0vSVBDL0VuY29kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL0pTSVBDQmluZGlu
Zy5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBAbm8t
dW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3Jt
L0lQQy9EZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuY3BwIEBuby11bmlmeQorUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENv
bm5lY3Rpb24uY3BwIEBuby11bmlmeQorUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIuY3BwIEBuby11bmlmeQorUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3Iu
Y3BwIEBuby11bmlmeQorUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIEBu
by11bmlmeQogUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CiAKIFBs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCmluZGV4IGMz
MzA3ODI1YjIwMDg2ZGVkNGM4NmM2NDg4Y2U1ZGQ1N2VjMGMzNTguLjg5NTIwOGMzYmMyMjZkNmZi
MTI4NjFkYTQzN2NkYTM4MWY0OGQ2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4
dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggMzAx
ZDBlZDgzMGRiZWQ5MDhjYmIyNzg4NmYwNGE4ZmVlYTlmZDg5ZS4uMjNhYjEwZDYzYTRmNGEzZmQy
MGNlZDRkNzMwMTczZjQ3NWRjN2Y1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQ
SVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNs
dWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIlVS
TFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1YWJhOTZmMzY1NzZkMjhhOTIzMzEyMjJkY2E2NzUy
Y2VkYzkyNDM2Li4zMmQzZTNjOWViMzllMDYzM2M1ODJlOGU5NTJiZDJhNTFjN2NmZTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEz
MjcsNiArMTMyNywxOSBAQAogCQk3QUZCRDM2NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmggKi87IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFD
QiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGls
cy5oICovOyB9OwogCQk3QjFEQjI2NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURCMjY1
MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovOyB9OworCQk3QjRDOTk0QTI1
OEI5RUE2MDAyNUE2RjQgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNEM5OTQ5MjU4QjlFQTYwMDI1QTZG
NCAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oICovOyB9OworCQk3QjczMTFFNTI1QUYxMjM1
MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzExRTQyNUFGMTIzNTAwM0IyNzk2IC8qIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLzsgfTsKKwkJN0I3MzExRTcyNUFGMTM5RTAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzExRTYyNUFGMTM5RDAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuY3BwICovOyB9OworCQk3QjczMTIwRTI1QzFGNTYzMDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMEMyNUMxRjU2MzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5l
Y3Rpb25Qcm9jZXNzb3IuaCAqLzsgfTsKKwkJN0I3MzEyMEYyNUMxRjU2MzAwM0IyNzk2IC8qIFN0
cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMEQyNUMxRjU2MzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5l
Y3Rpb25Qcm9jZXNzb3IuY3BwICovOyB9OworCQk3QjczMTIxMTI1QzMwM0FFMDAzQjI3OTYgLyog
TWVzc2FnZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I3MzEyMTAyNUMzMDNBRTAwM0IyNzk2IC8qIE1lc3NhZ2VGaWx0ZXIuaCAqLzsgfTsK
KwkJN0I3MzEyMTQyNUMzMDNDRTAwM0IyNzk2IC8qIERlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIx
MjI1QzMwM0NEMDAzQjI3OTYgLyogRGVzdGluYXRpb25NZXNzYWdlRmlsdGVyLmNwcCAqLzsgfTsK
KwkJN0I3MzEyMTUyNUMzMDNDRTAwM0IyNzk2IC8qIERlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMTMy
NUMzMDNDRDAwM0IyNzk2IC8qIERlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5oICovOyB9OworCQk3
QjczMTIxNzI1QzMwQThFMDAzQjI3OTYgLyogU2VtYXBob3JlSGFuZGxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIxNjI1QzMwQThEMDAzQjI3
OTYgLyogU2VtYXBob3JlSGFuZGxlLmggKi87IH07CisJCTdCNzMxMjFDMjVDNDE5MkMwMDNCMjc5
NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIxODI1QzQxOTJDMDAzQjI3OTYgLyogU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbi5oICovOyB9OworCQk3QjczMTIxRDI1QzQxOTJDMDAzQjI3OTYgLyogU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I3MzEyMTkyNUM0MTkyQzAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaCAqLzsgfTsKKwkJN0I3MzEyMjAyNUM0MTk0MDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I3MzEyMUIyNUM0MTkyQzAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24u
Y3BwICovOyB9OworCQk3QjczMTIyMTI1QzQxOTQwMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjczMTIxQTI1QzQxOTJDMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAg
Ki87IH07CiAJCTdDMDY1RjJDMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJEYXRhVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJEYXRhVHlwZXMuaCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1
Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEz
M0UxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBB
UElEaWN0aW9uYXJ5LmggKi87IH07CkBAIC00NTE2LDcgKzQ1MjksMjAgQEAKIAkJN0FGQkQzNkQy
MUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVy
c2lzdGVuY3lVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZCRDM2RTIx
RTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQZXJzaXN0ZW5jeVV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Ix
REIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFycmF5UmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCNEM5OTQ5MjU4QjlFQTYwMDI1QTZGNCAvKiBTdHJlYW1Db25uZWN0aW9uRW5j
b2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9u
RW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1
MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjczMTFFNDI1QUYxMjM1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMUU2MjVBRjEzOUQwMDNCMjc5
NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QjczMTIwQzI1QzFGNTYzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
blByb2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25u
ZWN0aW9uUHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjBE
MjVDMUY1NjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIxMDI1QzMwM0FFMDAzQjI3
OTYgLyogTWVzc2FnZUZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZXNzYWdlRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjEyMjVD
MzAzQ0QwMDNCMjc5NiAvKiBEZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVzdGluYXRpb25NZXNzYWdlRmlsdGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMTMyNUMzMDNDRDAwM0IyNzk2IC8q
IERlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0I3MzEyMTYyNUMzMEE4RDAwM0IyNzk2IC8qIFNlbWFwaG9yZUhhbmRsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZW1hcGhvcmVIYW5kbGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMTgyNUM0MTkyQzAwM0IyNzk2IC8qIFN0cmVhbUNs
aWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIx
OTI1QzQxOTJDMDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjFBMjVDNDE5MkMwMDNCMjc5NiAvKiBTdHJlYW1D
bGllbnRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjczMTIxQjI1QzQxOTJDMDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjUyNTRBRkRFQTAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjcyNTRBRkUxNzAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTY4OTEsNiArNjkxNyw3IEBACiAJCQkJQkMwMzJEQTIxMEY0MzdEMTAwNThD
MTVBIC8qIENvbm5lY3Rpb24uY3BwICovLAogCQkJCUJDMDMyREEzMTBGNDM3RDEwMDU4QzE1QSAv
KiBDb25uZWN0aW9uLmggKi8sCiAJCQkJMUFDNzUzN0UxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFS
ZWZlcmVuY2UuaCAqLywKKwkJCQk3QjczMTIxMDI1QzMwM0FFMDAzQjI3OTYgLyogTWVzc2FnZUZp
bHRlci5oICovLAogCQkJCUJDMDMyRDlEMTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAq
LywKIAkJCQlCQzAzMkQ5RTEwRjQzN0QxMDA1OEMxNUEgLyogRGVjb2Rlci5oICovLAogCQkJCUJD
MDMyRDlGMTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmNwcCAqLywKQEAgLTY5MDUsMTMgKzY5
MzIsMjUgQEAKIAkJCQkxQUM0QzgyODE2Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZsYWdzLmgg
Ki8sCiAJCQkJMUEzRUVEMTExNjFBNTNENjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlci5oICov
LAogCQkJCTFBM0VFRDBDMTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3Bw
ICovLAorCQkJCTdCNzMxMjE2MjVDMzBBOEQwMDNCMjc5NiAvKiBTZW1hcGhvcmVIYW5kbGUuaCAq
LywKIAkJCQkxQTNFRUQwRDE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmgg
Ki8sCiAJCQkJMUFBQjAzNzcxODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuY3BwICov
LAogCQkJCTFBQUIwMzc4MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmggKi8sCisJ
CQkJN0I3MzEyMTIyNUMzMDNDRDAwM0IyNzk2IC8qIERlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5j
cHAgKi8sCisJCQkJN0I3MzEyMTMyNUMzMDNDRDAwM0IyNzk2IC8qIERlc3RpbmF0aW9uTWVzc2Fn
ZUZpbHRlci5oICovLAorCQkJCTdCNzMxMjBEMjVDMUY1NjMwMDNCMjc5NiAvKiBTdHJlYW1Db25u
ZWN0aW9uUHJvY2Vzc29yLmNwcCAqLywKKwkJCQk3QjczMTIwQzI1QzFGNTYzMDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvci5oICovLAogCQkJCTJEQzE4MDAxRDkwREREMTVGQzY5
OTFBOSAvKiBTaGFyZWRCdWZmZXJDb3B5LmNwcCAqLywKIAkJCQk1Q0M1REI5MTIxNDg4RTE2MDA2
Q0I4QTggLyogU2hhcmVkQnVmZmVyQ29weS5oICovLAorCQkJCTdCNzMxMjFBMjVDNDE5MkMwMDNC
Mjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk3QjczMTIxODI1QzQx
OTJDMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oICovLAorCQkJCTdCNzMxMjFC
MjVDNDE5MkMwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk3
QjczMTIxOTI1QzQxOTJDMDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oICovLAog
CQkJCTJEQzE4NTVFREJGQjg1MEJBMEI2RDA2RCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
LmNwcCAqLywKIAkJCQkyREMxODgxQUNCQ0FCNUQ1N0M1QzZFRjAgLyogU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5oICovLAorCQkJCTdCNzMxMUU2MjVBRjEzOUQwMDNCMjc5NiAvKiBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmNwcCAqLywKKwkJCQk3QjczMTFFNDI1QUYxMjM1MDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovLAorCQkJCTdCNEM5OTQ5MjU4QjlFQTYwMDI1QTZG
NCAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oICovLAogCQkJCTFBRTAwRDY5MTgzMjdDMTIw
MDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwICovLAogCQkJCTFBRTAwRDZBMTgzMjdDMTIw
MDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuaCAqLywKIAkJCSk7CkBAIC0xMTMzMSw2ICsxMTM3
MCw3IEBACiAJCQkJNjNDMzJDMjYxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9z
aXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTYzQzMyQzI4MUU5ODExOTAwMDY5OUJEMCAvKiBf
V0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRTZB
NEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk3QjczMTIxRDI1QzQxOTJDMDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNBODhCM0IxQkM3MTBEOTAwQUJBNUMyIC8qIF9XS0hpdFRl
c3RSZXN1bHRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwRjU5MTAxRERFMjk2OTAw
NDEyRkY1IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
QTY0RTU1MThGMzhFM0MwMEVCMzBGMSAvKiBfV0tJbnB1dERlbGVnYXRlLmggaW4gSGVhZGVycyAq
LywKQEAgLTExNDgxLDYgKzExNTIxLDcgQEAKIAkJCQk0OUJDQTE5MjIzQTE3NzY2MDAyOEE4MzYg
LyogQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ5QkNBMTk3MjNBMTkzMEQwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYzNDQ0NTYxMkE4ODVDODAwMDYxMkQ4
IC8qIEFQSVNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIxQzI1QzQx
OTJDMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFGREU2NjIxOTU0RTlCMTAwQzQ4RkZBIC8qIEFQSVNlc3Npb25TdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE0RDY2NDgxOEEyRDkxQTAwRDgyRTIxIC8qIEFQSVVJQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQ0RCODZDMTEyMDBGQjk3MDA3MjU0QkUgLyogQVBJVVJMLmggaW4g
SGVhZGVycyAqLywKQEAgLTExNjkxLDYgKzExNzMyLDcgQEAKIAkJCQlBMTU3OTlCRDI1ODQ0MzMy
MDA1MjgyMzYgLyogTWVkaWFTYW1wbGVDdXJzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNTc5
OUI3MjU4NDQzMzIwMDUyODIzNiAvKiBNZWRpYVRyYWNrUmVhZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJN0I3MzEyMTcyNUMzMEE4RTAwM0IyNzk2IC8qIFNlbWFwaG9yZUhhbmRsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOUI0NzkwOEQyNTMxNEQ4MzAwRUMxMUFCIC8qIE1lc3NhZ2VB
cmd1bWVudERlc2NyaXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNEM4MjkxNkI4NzZB
OTAwNjlEQ0NEIC8qIE1lc3NhZ2VGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRUVEMTIx
NjFBNTNENjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTcxMyw2ICsxMTc1NSw3IEBACiAJCQkJMUE2RkJBMkExMUU2ODYyNzAwREIxMzcxIC8qIE5ldHNj
YXBlQnJvd3NlckZ1bmNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTZGQkQyODExRTY5QkMyMDBE
QjEzNzEgLyogTmV0c2NhcGVQbHVnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNEE5QzU2MTJC
ODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJN0I3MzEyMEUyNUMxRjU2MzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTU4ODkyMTFFRTcwNDAwMDYxQjg4MiAvKiBOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM1QkNCOTIyMDY5QzQ5QzAwQ0ND
RTAyIC8qIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDM2
RUNDMUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAt
MTE5NTAsNiArMTE5OTMsOCBAQAogCQkJCTkzNkIwNTk4MjMwMzkwOTcwMDJGQzA2QiAvKiBTdG9y
YWdlTWFuYWdlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM2OEVFREYyMzAzQTlFRDAwQkRC
MTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2
NUY0RTA2MjMwQjJFOTUwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0I3MzExRTUyNUFGMTIzNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNEM5OTRBMjU4QjlFQTYwMDI1QTZG
NCAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBE
NkMxODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMjk2QkQ4NUQxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTdGRDMxODYyMkIzNTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjE2Niw2ICsxMjIxMSw3IEBACiAJ
CQkJMEY4NTBGRTcxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRTczNjExMUNDMjY1OTAwN0JENTM5IC8qIFdlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1NzQ0RjAxMjYzOEZCMzAw
NkYwRjEyIC8qIFdlYlBvcHVwSXRlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyMTUyNUMz
MDNDRTAwM0IyNzk2IC8qIERlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM1NzRFNjMxMjY3RDA4MDAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzU3NTA5NzEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9w
dXBNZW51UHJveHlNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMTI0MTYsNiArMTI0NjIsNyBAQAog
CQkJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjZBNEI1MjMyMDk2MjQwMEVBNEQ0NCAvKiBXS0hUVFBD
b29raWVTdG9yZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMEFFMEQxMzNDMTZDQjAwNzI3
MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIxMTI1QzMw
M0FFMDAzQjI3OTYgLyogTWVzc2FnZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyM0NG
MUMxMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQ0Y2QUMzMTJDOTFGMzQwMDhGOUMzNSAvKiBXS0ltYWdlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0NGNkFDQTEyQzkxRjU5MDA4RjlDMzUgLyogV0tJbWFnZUNHLmggaW4gSGVhZGVycyAq
LywKQEAgLTEzNjIwLDYgKzEzNjY3LDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCTU3OTBBNjcxMjU2
NzlGMUEwMDc3QzVBNyAvKiBfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzkwQTY3RDI1NjdBMTNFMDA3N0M1QTcgLyogX1dLQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTdCNzMxMjIwMjVDNDE5NDAwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTU3OTBBNjg5MjU2N0EyOEEwMDc3QzVBNyAvKiBfV0tBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzkwQTY4NTI1
NjdBMjFFMDA3N0M1QTcgLyogX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0g
aW4gU291cmNlcyAqLywKIAkJCQk1NzkwQTY4MTI1NjdBMUFDMDA3N0M1QTcgLyogX1dLQXV0aGVu
dGljYXRvclJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xMzc3Niw2ICsxMzgyNCw3IEBA
CiAJCQkJOTNENkI3ODIyNTRDQ0NGNDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzM0REVEMTZERThGODgw
MDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5MzY4RUVERTIzMDNBOTAyMDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I3MzExRTcyNUFGMTM5RTAwM0Iy
Nzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5
MkE3ODMyMTJCNkE3MTAwRjQ5M0ZEIC8qIFN0cmluZ1JlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDExQjc1MTIxMjZBMjgyMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTEtbW0ubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc1MjIxMjZBMjgyMDA2Rjg4NzggLyogVW5pZmllZFNv
dXJjZTEuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMzk2Myw2ICsxNDAxMiw3IEBACiAJCQkJM0Y0
MThFRjkxODg3QkQ5NzAwMjc5NUZEIC8qIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0Y0MThFRkIxODg3QkQ5NzAwMjc5NUZEIC8q
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRDFCNUQ1RDE4NTg2OUM4MDA2QzY1OTYgLyogVmlld0dlc3R1cmVDb250cm9s
bGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjBGMjVDMUY1
NjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEODE5QkExMTg2MjgwMEUwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2ODQwNTUyMThC
ODZFRDYwMDIyQzM4QiAvKiBWaWV3VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTYwMjI0QzE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRlZExp
bmtTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE0MDM4LDkgKzE0
MDg4LDExIEBACiAJCQkJOTM1NkYyRTAyMTUyQjc1MjAwRTZENURGIC8qIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTUyNjJCRDFGQjk1MTYx
MDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzhFMjEyQjZBQjEwMEY0OTNGRCAvKiBXZWJU
b3VjaEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjE0MjVDMzAzQ0UwMDNCMjc5
NiAvKiBEZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFB
RjA4QjcxOTI2OUU2RDAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzM2MUQ3ODE5MjgwM0JEMDAzNkE1OUQg
LyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ5MkE3OEYyMTJCNkFCMTAwRjQ5M0ZEIC8qIFdlYldoZWVsRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I3MzEyMjEyNUM0MTk0MDAwM0IyNzk2IC8qIFN0cmVh
bUNsaWVudENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzZBNENBMEMyMjUyODk5
ODAwMTY5Mjg5IC8qIFdLQnVuZGxlUGFnZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEOTMx
MTY5MjEyRjYxQjIwMDA0NEJGRSAvKiBXS0NvbnRlbnRWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQ5MzExNkEyMTJGNjFCNTAwMDQ0QkZFIC8qIFdLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHAKaW5kZXggMTdkZjJkYmQ2ZjE3YTNlNmY2MjM5NjFhZWUyMzJhY2ZlYjEyMTVhMy4uN2FmODRk
NTMzYzkxM2YyZmNhOTY3MjczNGVkYzJlMDViOTA0YmI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC00OCw0NiArNDgsNTEgQEAgUmVmUHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZShjb25zdAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eShhdHRyaWJ1dGVzKSk7CiB9CiAKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1
bHRTdHJlYW1TaXplID0gMSA8PCAxNDsKKwogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmIGF0dHJzKQogICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0
cnMpCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCksIGRlZmF1bHRTdHJlYW1TaXpl
KQogewotICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3Nh
Z2VSZWNlaXZlck1hcCgpOworICAgIGF1dG8mIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKworICAgIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBncHVQcm9jZXNzQ29u
bmVjdGlvbi5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKICAgICBtZXNzYWdlUmVjZWl2ZXJNYXAuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUlu
dDY0KCksICp0aGlzKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpLCAwKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250
ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBtX3N0cmVhbUNvbm5l
Y3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAwKTsKIH0KIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKQogewotICAgIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLm1lc3NhZ2VSZWNlaXZlck1hcCgpOworICAg
IGF1dG8mIGdwdVByb2Nlc3NDb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBJUEM6Ok1lc3NhZ2VSZWNlaXZlck1hcCYg
bWVzc2FnZVJlY2VpdmVyTWFwID0gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZVJlY2VpdmVy
TWFwKCk7CiAgICAgbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhp
cyk7Ci0gICAgc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFz
ZUdyYXBoaWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7Cisg
ICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciksIDApOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHBsYXRm
b3JtU3dhcENoYWluKCkucmVjeWNsZUJ1ZmZlcigpOwogI2VuZGlmCiB9CiAKLUlQQzo6Q29ubmVj
dGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdAotewotICAgIHJldHVybiAmV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Ci19Ci0KLXVpbnQ2NF90IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQo
KTsKLX0KLQogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCkKIHsKKyAgICBpZiAobV9kaWRMb3NlQ29udGV4dCkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmICghc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlJlc2hhcGUod2lkdGgsIGhlaWdodCkpKQorICAgICAgICB3YXNMb3N0KCk7CiAgICAgbV9jdXJy
ZW50V2lkdGggPSB3aWR0aDsKICAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc2hhcGUod2lkdGgsIGhlaWdo
dCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSgpCiB7CisgICAgaWYgKG1fZGlk
TG9zZUNvbnRleHQpCisgICAgICAgIHJldHVybjsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBN
YWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQ7Ci0gICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBseShkaXNw
bGF5QnVmZmVyU2VuZFJpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoZGlzcGxheUJ1ZmZlclNlbmRSaWdo
dCkpOworICAgIGlmICghc2VuZFJlc3VsdCkgeworICAgICAgICB3YXNMb3N0KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIHNSR0JDb2xv
clNwYWNlUmVmKCkpOwogICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIC8vIENsYWlt
IGluIHRoZSBXZWJQcm9jZXNzIG93bmVyc2hpcCBvZiB0aGUgSU9TdXJmYWNlIGNvbnN0cnVjdGVk
IGJ5IHRoZSBHUFVQcm9jZXNzIHNvIHRoYXQgSmV0c2FtIGtub3dzIHdoaWNoIHByb2Nlc3NlcyB0
byBraWxsLgpAQCAtOTgsMTkgKzEwMywzMSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KCkKICAgICAgICAgc2MucHJlc2VudCh7IFdURk1vdmUo
ZGlzcGxheUJ1ZmZlciksIG51bGxwdHIgfSk7CiAgICAgfQogI2Vsc2UKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5KCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXk6OlJlcGx5
KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBh
cmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFy
ZUZvckRpc3BsYXk6OlJlcGx5KCkpOworICAgIGlmICghc2VuZFJlc3VsdCkgeworICAgICAgICB3
YXNMb3N0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYKICAgICBtYXJrTGF5ZXJD
b21wb3NpdGVkKCk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChleHRlbnNpb24pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKG1f
ZGlkTG9zZUNvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5zdXJlRXh0ZW5zaW9uRW5h
YmxlZChleHRlbnNpb24pKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgIHdhc0xvc3Qo
KTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29u
dGV4dENoYW5nZWQoKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpOb3RpZnlNYXJrQ29udGV4dENoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIGlmIChtX2RpZExvc2VDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
Ok5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgIHdhc0xvc3QoKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
aW11bGF0ZUNvbnRleHRDaGFuZ2VkKCkKQEAgLTEzNSwxOSArMTUyLDIxIEBAIFJlZlB0cjxJbWFn
ZURhdGE+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvSW1hZ2VEYXRhCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25z
LCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YXNDcmVhdGVkKElQQzo6U2VtYXBob3JlSGFuZGxlJiYgc2VtYXBob3JlSGFu
ZGxlLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRl
bnNpb25zKQogewogICAgIGlmIChtX2RpZEluaXRpYWxpemUpIHsKICAgICAgICAgLy8gSW5pdGlh
bGl6YXRpb24gdGltZWQgb3V0IGJlZm9yZSwgc28gbG9zZSB0aGUgY29udGV4dCBub3cuCiAgICAg
ICAgIHdhc0xvc3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpbml0aWFsaXplKGF2
YWlsYWJsZUV4dGVuc2lvbnMsIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIG1fc3RyZWFtQ29u
bmVjdGlvbi5zZXRXYWtlVXBIYW5kbGUoV1RGTW92ZShzZW1hcGhvcmVIYW5kbGUpKTsKKyAgICBp
bml0aWFsaXplKFdURk1vdmUoYXZhaWxhYmxlRXh0ZW5zaW9ucyksIFdURk1vdmUocmVxdWVzdGVk
RXh0ZW5zaW9ucykpOwogICAgIG1fZGlkSW5pdGlhbGl6ZSA9IHRydWU7CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzTG9zdCgpCiB7CisgICAgbV9kaWRMb3NlQ29u
dGV4dCA9IHRydWU7CiAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjb3B5VG9WZWN0b3IobV9jbGll
bnRzKSkKICAgICAgICAgY2xpZW50LT5mb3JjZUNvbnRleHRMb3N0KCk7CiB9CkBAIC0xNjYsNyAr
MTg1LDYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YWl0VW50aWxJbml0
aWFsaXplZCgpCiAgICAgaWYgKGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5PE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkPiht
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJ
bnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKQogICAgICAgICByZXR1cm47CiAg
ICAgLy8gVGltZWQgb3V0LCBzbyByZXBvcnQgaW5pdGlhbGl6ZWQgd2l0aCBkdW1teSBkYXRhLiBX
ZSBzaG91bGQgbG9zZSB0aGUgY29udGV4dC4KLSAgICB3YXNDcmVhdGVkKCIiLCAiIik7CiAgICAg
Ly8gRklYTUU6IE5lZWQgdG8gbWFyayB0aGUgY29udGV4dCBhcyBsb3N0LCBidXQgaXQncyBub3Qg
c2FmZSB0byBmb3JjZSBsb3N0IGluIHRoaXMgY2FsbCBzdGFjay4KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCBhNWE2ZjdmZWMyMDA1OWM3Mzg1NGMwNmFi
NTk1NGU4YmY1YTdjOThhLi40ZTM5MTg5NDkyMzBhZmZiMmZhYjNmY2M4MjYyM2Q4NWViZDBkYWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMjksMTEgKzI5
LDExIEBACiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5j
bHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorI2luY2x1ZGUgIlNlbWFwaG9yZUhhbmRsZS5oIgorI2lu
Y2x1ZGUgIlN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKLQogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTQ3LDE4ICs0NywxMyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIGluIEdQVSBwcm9jZXNzLgogLy8gVGhlIGltcGxl
bWVudGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgVG9vbHMvU2NyaXB0cy9n
ZW5lcmF0ZS1ncHVwLXdlYmdsLgogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBm
aW5hbAotICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgotICAgICwgcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgorICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAg
ICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+CiAg
ICAgLCBwdWJsaWMgV2ViQ29yZTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2Ugewog
cHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOwogICAg
IH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkgZmluYWw7CiAKLSAgICAvLyBJUEM6Ok1l
c3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwotCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
b3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CiAKQEAgLTczLDYgKzY4LDE4IEBAIHB1YmxpYzoKICAgICBS
ZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0
YSgpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNv
cmU6OkltYWdlQnVmZmVyKikgZmluYWw7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IGF1dG8gc2VuZChUJiYgbWVzc2FnZSwgU2Vjb25kcyB0aW1lb3V0ID0gMTBfcykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3N0cmVhbUNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgdGltZW91dCk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICBhdXRvIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFt
ZSBUOjpSZXBseSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQgPSAxMF9zKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV1RGTW92ZShyZXBseSksIHRpbWVvdXQpOwor
ICAgIH0KKwogICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9u
LiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KICAgICB2
b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKICAgICB2b2lkIHN5bnRoZXNp
emVHTEVycm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKQEAgLTM3NCwxNCArMzgxLDE4IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHdhaXRVbnRpbEluaXRpYWxpemVkKCkgZmluYWw7CiAKIHByaXZh
dGU6CisgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDEw
X3M7CisKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIHdhc0NyZWF0
ZWQoU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5z
aW9ucyk7CisgICAgdm9pZCB3YXNDcmVhdGVkKElQQzo6U2VtYXBob3JlSGFuZGxlJiYsIFN0cmlu
ZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOwog
ICAgIHZvaWQgd2FzTG9zdCgpOwogICAgIHZvaWQgd2FzQ2hhbmdlZCgpOwogCiAgICAgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmKTsKICAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2RpZExvc2VDb250ZXh0IHsgZmFsc2UgfTsKICAgICBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24g
bV9zdHJlYW1Db25uZWN0aW9uOwogfTsKIAogLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxv
d2luZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAt
d2ViZ2wgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDVmMmIzMmIyYmMxMDEwZWY4ZWNkMGFmNTc3N2FiZDRmYTA4
YTNjOTAuLjk2Y2EyMmNjZDUzOTMyN2YzZGQ3MmY3MjViYTY5MGVhMTk3YTkxMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KQEAg
LTIzLDcgKzIzLDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
IAogbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVk
IHsKLSAgICB2b2lkIFdhc0NyZWF0ZWQoU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmlu
ZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCisgICAgdm9pZCBXYXNDcmVhdGVkKElQQzo6U2VtYXBo
b3JlSGFuZGxlIHN0cmVhbVdha2VVcEhhbmRsZSwgU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMs
IFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCiAgICAgdm9pZCBXYXNMb3N0KCkKICAgICB2
b2lkIFdhc0NoYW5nZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVy
YXRlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCmluZGV4IDg3MTViNDQ3
NTQ0MzgxOGYyNmFmZTZmYmZiNTQ3NjgyZTk5NzkyYmMuLjVhMjM3ZTVkNDk0ZDc4ZDc0NDE2MDZh
NGVhYWU2NDkwZWVhNjk0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRl
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcApAQCAtMzIsNDA3ICsz
Miw2ODcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4
dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6U2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpLCBkZWZhdWx0U2VuZFRp
bWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7
CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNp
emVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpTeW50aGVzaXplR0xFcnJvcihlcnJvciksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlN5bnRoZXNpemVHTEVycm9yKGVycm9yKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogYm9v
bCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojptb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJv
ckxpc3QoKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJv
ckxpc3QoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNb3ZlRXJyb3JzVG9T
eW50aGV0aWNFcnJvckxpc3Q6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdDo6UmVwbHko
cmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1
bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphY3RpdmVUZXh0dXJl
KEdDR0xlbnVtIHRleHR1cmUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkFjdGl2ZVRleHR1cmUodGV4dHVyZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZVRl
eHR1cmUodGV4dHVyZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3Jh
bSwgUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7Cisg
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpBdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQXR0cmliTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMdWludCBpbmRleCwgY29uc3QgU3RyaW5n
JiBuYW1lKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
aW5kQXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5k
QXR0cmliTG9jYXRpb24oYXJnMCwgaW5kZXgsIG5hbWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIoR0NHTGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QmluZEJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRGcmFtZWJ1ZmZlcihH
Q0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEZyYW1lYnVmZmVyKHRhcmdldCwgYXJn
MSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJp
bmRSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRSZW5kZXJi
dWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFJlbmRlcmJ1ZmZlcih0YXJn
ZXQsIGFyZzEpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9i
amVjdCBhcmcxKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCaW5kVGV4dHVyZSh0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVGV4dHVyZSh0
YXJnZXQsIGFyZzEpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1
bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kQ29sb3IoR0NHTGNsYW1wZiByZWQsIEdDR0xjbGFtcGYg
Z3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1wZiBhbHBoYSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRDb2xvcihyZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1f
ZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwg
YWxwaGEpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb24oR0NHTGVudW0gbW9kZSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvbihtb2RlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEVxdWF0aW9uU2VwYXJh
dGUoR0NHTGVudW0gbW9kZVJHQiwgR0NHTGVudW0gbW9kZUFscGhhKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9k
ZVJHQiwgbW9kZUFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRFcXVhdGlvblNlcGFyYXRlKG1v
ZGVSR0IsIG1vZGVBbHBoYSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2Vu
ZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5jKEdDR0xlbnVtIHNmYWN0b3IsIEdDR0xl
bnVtIGRmYWN0b3IpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5j
KHNmYWN0b3IsIGRmYWN0b3IpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKEdDR0xlbnVtIHNyY1JH
QiwgR0NHTGVudW0gZHN0UkdCLCBHQ0dMZW51bSBzcmNBbHBoYSwgR0NHTGVudW0gZHN0QWxwaGEp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVu
Y1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAg
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhh
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQ0dMZW51bSB0YXJnZXQpCiB7CiAg
ICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1czo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyh0YXJnZXQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNo
ZWNrRnJhbWVidWZmZXJTdGF0dXM6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y2xlYXIoR0NHTGJpdGZpZWxkIG1hc2spCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyKG1hc2spLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDbGVhcihtYXNrKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVz
dWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpjbGVhckNvbG9yKEdDR0xjbGFtcGYgcmVkLCBHQ0dMY2xhbXBm
IGdyZWVuLCBHQ0dMY2xhbXBmIGJsdWUsIEdDR0xjbGFtcGYgYWxwaGEpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQ29sb3IocmVkLCBncmVlbiwg
Ymx1ZSwgYWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFt
X2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUs
IGFscGhhKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhckRlcHRoKEdDR0xjbGFtcGYgZGVwdGgpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyRGVwdGgoZGVwdGgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7
CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDbGVhckRlcHRoKGRlcHRoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhclN0ZW5jaWwoR0NHTGludCBz
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhclN0
ZW5jaWwocyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb2xvck1hc2so
R0NHTGJvb2xlYW4gcmVkLCBHQ0dMYm9vbGVhbiBncmVlbiwgR0NHTGJvb2xlYW4gYmx1ZSwgR0NH
TGJvb2xlYW4gYWxwaGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNvbG9yTWFzayhzdGF0aWNfY2FzdDxib29sPihyZWQpLCBzdGF0aWNfY2FzdDxib29s
PihncmVlbiksIHN0YXRpY19jYXN0PGJvb2w+KGJsdWUpLCBzdGF0aWNfY2FzdDxib29sPihhbHBo
YSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VD
b250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDb2xvck1hc2soc3RhdGljX2Nhc3Q8Ym9vbD4ocmVkKSwgc3Rh
dGljX2Nhc3Q8Ym9vbD4oZ3JlZW4pLCBzdGF0aWNfY2FzdDxib29sPihibHVlKSwgc3RhdGljX2Nh
c3Q8Ym9vbD4oYWxwaGEpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcGls
ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcGlsZVNoYWRlcihhcmcwKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2Fz
TG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b3B5VGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlciksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNv
cHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQg
eCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5
b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAog
UGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVCdWZm
ZXIoKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyKCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVCdWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRm
b3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlRnJhbWVidWZm
ZXIoKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXIoKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVGcmFtZWJ1ZmZlcjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlRnJhbWVidWZmZXIo
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVGcmFtZWJ1ZmZlcjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVQcm9ncmFtKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsK
LSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVBy
b2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9ncmFt
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVQcm9n
cmFtKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbTo6
UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGVSZW5kZXJidWZmZXIoKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlUmVuZGVyYnVmZmVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVSZW5kZXJidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVSZW5kZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3Qg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlU2hhZGVyKEdDR0xlbnVtIGFyZzAp
CiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXIoYXJnMCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTaGFkZXIoYXJnMCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1
ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAg
ICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQ
bGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1
cmUoKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVGV4dHVyZSgpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmU6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9k
aWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRleHR1cmUoKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1
ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAg
ICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmN1bGxGYWNlKEdDR0xlbnVtIG1vZGUp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkN1bGxGYWNl
KG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExv
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDdWxsRmFjZShtb2RlKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVCdWZmZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZWxldGVCdWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1
ZmZlcihhcmcwKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUZy
YW1lYnVmZmVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVGcmFtZWJ1ZmZlcihhcmcwKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUHJvZ3JhbShhcmcwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVsZXRlUHJvZ3JhbShhcmcwKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVSZW5kZXJidWZmZXIo
UGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEZWxldGVSZW5kZXJidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRl
bGV0ZVJlbmRlcmJ1ZmZlcihhcmcwKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZWxldGVTaGFkZXIoUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
ZWxldGVTaGFkZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBp
ZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgZGVm
YXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAg
d2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpkZWxldGVUZXh0dXJlKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVGV4dHVyZShhcmcwKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RGVsZXRlVGV4dHVyZShhcmcwKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMoR0NHTGVudW0gZnVu
YykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhG
dW5jKGZ1bmMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1bmMoZnVuYyksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhNYXNr
KEdDR0xib29sZWFuIGZsYWcpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlcHRoTWFzayhzdGF0aWNfY2FzdDxib29sPihmbGFnKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlcHRoTWFzayhzdGF0aWNfY2FzdDxib29sPihmbGFnKSksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVwdGhSYW5nZShH
Q0dMY2xhbXBmIHpOZWFyLCBHQ0dMY2xhbXBmIHpGYXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7Cisg
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpEZXB0aFJhbmdlKHpOZWFyLCB6RmFyKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXRhY2hTaGFkZXIoUGxhdGZv
cm1HTE9iamVjdCBhcmcwLCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRldGFjaFNoYWRlcihhcmcwLCBhcmcxKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4
dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGV0YWNoU2hhZGVyKGFyZzAsIGFyZzEpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2FibGUoR0NH
TGVudW0gY2FwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEaXNhYmxlKGNhcCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAo
IW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUoY2FwKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkoR0NHTHVpbnQgaW5kZXgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRl
eHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJh
d0FycmF5cyhHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXMo
bW9kZSwgZmlyc3QsIGNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5cyhtb2RlLCBmaXJz
dCwgY291bnQpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291
bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5
cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0Vs
ZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6ZW5hYmxlKEdDR0xlbnVtIGNhcCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RW5hYmxlKGNhcCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZShjYXAp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDR0x1aW50IGluZGV4KQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShpbmRleCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1f
ZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpmaW5pc2goKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpGaW5pc2goKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RmluaXNoKCksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Zmx1c2goKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGbHVzaCgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpGbHVzaCgpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAo
IXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcmVuZGVyYnVmZmVydGFy
Z2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNo
bWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBhcmczKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFy
ZzMpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
YXR0YWNobWVudCwgR0NHTGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzMsIEdD
R0xpbnQgbGV2ZWwpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCBh
cmczLCBsZXZlbCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1f
ZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwg
YXR0YWNobWVudCwgdGV4dGFyZ2V0LCBhcmczLCBsZXZlbCksIGRlZmF1bHRTZW5kVGltZW91dCk7
CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJvbnRGYWNlKEdDR0xl
bnVtIG1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkZyb250RmFjZShtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJvbnRGYWNlKG1vZGUpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
bmVyYXRlTWlwbWFwKEdDR0xlbnVtIHRhcmdldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2VuZXJhdGVNaXBtYXAodGFyZ2V0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2VuZXJhdGVNaXBtYXAodGFyZ2V0KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogYm9v
bCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKIHsKICAg
ICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVy
blZhbHVlLCBhcmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZUF0dHJpYihw
cm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0
aXZlQXR0cmliOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIGRlZmF1bHRTZW5kVGltZW91dCk7
CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9
CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dM
dWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJnMikKIHsKICAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybTo6UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250
ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybTo6UmVwbHko
cmV0dXJuVmFsdWUsIGFyZzIpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRB
dHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb246OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEF0dHJpYkxvY2F0
aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEF0
dHJpYkxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEJ1ZmZlclBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBw
bmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJn
ZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJQ
YXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVm
YXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAg
d2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFN0cmluZyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTdHJpbmcoR0NHTGVudW0gbmFtZSkKIHsK
ICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmcobmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0U3RyaW5nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmcobmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0U3RyaW5nOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEZsb2F0dihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGZs
b2F0PiB2YWx1ZSkKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5
OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Ci0gICAgaWYgKHNlbmRSZXN1bHQpCi0g
ICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6
ZSAqIHNpemVvZihmbG9hdCkpOwotICAgIAorICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEZsb2F0dihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2OjpSZXBseSh2YWx1ZVJlcGx5KSwgZGVm
YXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAg
d2FzTG9zdCgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRh
LCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAg
ICAgICB9CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEludGVnZXJ2KEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiB2YWx1ZSkKIHsKICAg
ICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHZhbHVlUmVwbHk7Ci0gICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJ
bnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7Ci0gICAgaWYgKHNlbmRSZXN1bHQpCi0gICAgICAgIG1lbWNw
eSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihp
bnQzMl90KSk7Ci0gICAgCisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEludGVnZXJ2OjpSZXBseSh2YWx1ZVJlcGx5KSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9z
dCgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1
ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgICAg
IH0KKyAgICB9CiB9CiAKIEdDR0xpbnQ2NCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRJbnRlZ2VyNjQoR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50NjRfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRJbnRlZ2VyNjQocG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEludGVnZXI2NDo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAg
ICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMaW50NjQ+KHJldHVyblZhbHVlKTsKIH0KIAogR0NHTGlu
dDY0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NGkoR0NHTGVudW0g
cG5hbWUsIEdDR0x1aW50IGluZGV4KQogewogICAgIGludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07
Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRl
Z2VyNjRpKHBuYW1lLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0SW50ZWdlcjY0aTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0SW50ZWdlcjY0aShwbmFtZSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEludGVnZXI2NGk6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGludDY0PihyZXR1cm5WYWx1ZSk7
CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbWko
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0UHJvZ3JhbWkocHJvZ3JhbSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1pOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRl
eHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWk6OlJlcGx5KHJldHVyblZhbHVl
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYoR0NHTGVudW0gcG5h
bWUsIEdDR0xTcGFuPEdDR0xib29sZWFuPiB2YWx1ZSkKIHsKICAgICBJUEM6OkFycmF5UmVmZXJl
bmNlPGJvb2w+IHZhbHVlUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCb29sZWFudihwbmFtZSwgdmFsdWUu
YnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnY6
OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
Ci0gICAgaWYgKHNlbmRSZXN1bHQpCi0gICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJl
cGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihib29sKSk7Ci0gICAgCisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnYocG5hbWUsIHZh
bHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJvb2xl
YW52OjpSZXBseSh2YWx1ZVJlcGx5KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVm
U2l6ZSAqIHNpemVvZihib29sKSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIEdDR0xlbnVtIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKCkKIHsKICAgICB1aW50MzJfdCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEVycm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0RXJyb3I6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEVycm9yKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3I6OlJl
cGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJu
VmFsdWU7CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIGF0
dGFjaG1lbnQsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7
IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50
LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRp
bWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7
CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogU3RyaW5nIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKIHsKICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZyhhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZzo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9Mb2co
YXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbUluZm9M
b2c6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1l
KQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRh
cmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFk
ZXJpKFBsYXRmb3JtR0xPYmplY3QgYXJnMCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJf
dCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFNoYWRlcmkoYXJnMCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmkoYXJnMCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2Fz
TG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFN0cmluZyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtR0xPYmpl
Y3QgYXJnMCkKIHsKICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nKGFyZzAp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9Mb2c6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlckluZm9M
b2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVySW5m
b0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KIApAQCAtNDQwLDEwNDkgKzcyMCwxODAxIEBAIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdDR0xlbnVt
IHNoYWRlclR5cGUsCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCAyPiByYW5n
ZVJlcGx5OwogICAgIGludDMyX3QgcHJlY2lzaW9uUmVwbHkgPSB7IH07Ci0gICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRT
aGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJlY2lzaW9uVHlwZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0OjpSZXBs
eShyYW5nZVJlcGx5LCBwcmVjaXNpb25SZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCAxMF9zKTsKLSAgICBpZiAoc2VuZFJlc3VsdCkgewotICAgICAgICBtZW1jcHkocmFuZ2Uu
ZGF0YSwgcmFuZ2VSZXBseS5kYXRhKCksIHJhbmdlLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkp
OwotICAgICAgICBpZiAocHJlY2lzaW9uKQotICAgICAgICAgICAgKnByZWNpc2lvbiA9IHByZWNp
c2lvblJlcGx5OworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ6OlJl
cGx5KHJhbmdlUmVwbHksIHByZWNpc2lvblJlcGx5KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIG1lbWNweShyYW5nZS5kYXRhLCByYW5nZVJlcGx5LmRhdGEoKSwg
cmFuZ2UuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgICAgICAgICBpZiAocHJlY2lz
aW9uKQorICAgICAgICAgICAgICAgICpwcmVjaXNpb24gPSBwcmVjaXNpb25SZXBseTsKKyAgICAg
ICAgfQogICAgIH0KIH0KIAogU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dFNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgU3RyaW5nIHJldHVy
blZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7Cisg
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFNoYWRlclNvdXJjZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGZsb2F0IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBmbG9hdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFt
ZXRlcmYodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0VGV4UGFyYW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmkoR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4
UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRUZXhQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVl
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NHTGZsb2F0PiB2YWx1
ZSkKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PiB2YWx1ZVJlcGx5OwotICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnY6OlJlcGx5KHZhbHVlUmVw
bHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Ci0gICAgaWYgKHNlbmRS
ZXN1bHQpCi0gICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFs
dWUuYnVmU2l6ZSAqIHNpemVvZihmbG9hdCkpOwotICAgIAorICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFs
dWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9y
bWZ2OjpSZXBseSh2YWx1ZVJlcGx5KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVm
U2l6ZSAqIHNpemVvZihmbG9hdCkpOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVuaWZvcm1pdihQbGF0Zm9ybUdMT2JqZWN0IHBy
b2dyYW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0xpbnQ+IHZhbHVlKQogewogICAg
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFsdWVSZXBseTsKLSAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVu
aWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwotICAgIGlmIChzZW5kUmVzdWx0KQot
ICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNp
emUgKiBzaXplb2YoaW50MzJfdCkpOwotICAgIAorICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVm
U2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2OjpS
ZXBseSh2YWx1ZVJlcGx5KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJlcGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAq
IHNpemVvZihpbnQzMl90KSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybXVpdihQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPEdDR0x1aW50PiB2YWx1ZSkKIHsKICAgICBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PiB2YWx1ZVJlcGx5OwotICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5p
Zm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdjo6UmVwbHkodmFsdWVSZXBseSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKLSAgICBpZiAoc2VuZFJlc3VsdCkK
LSAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZT
aXplICogc2l6ZW9mKHVpbnQzMl90KSk7Ci0gICAgCisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUu
YnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybXVp
djo6UmVwbHkodmFsdWVSZXBseSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICgh
c2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVSZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNp
emUgKiBzaXplb2YodWludDMyX3QpKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogR0NHTGludCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm1H
TE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtTG9jYXRpb246OlJlcGx5
KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVz
dWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFs
dWU7CiB9CiAKIEdDR0xzaXplaXB0ciBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRW
ZXJ0ZXhBdHRyaWJPZmZzZXQoR0NHTHVpbnQgaW5kZXgsIEdDR0xlbnVtIHBuYW1lKQogewogICAg
IHVpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0KGluZGV4LCBwbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VmVydGV4QXR0cmliT2Zmc2V0
OjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRWZXJ0ZXhB
dHRyaWJPZmZzZXQoaW5kZXgsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQ6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9z
dCgpOworICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTHNpemVpcHRyPihyZXR1cm5W
YWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aGludChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIG1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkhpbnQodGFyZ2V0LCBtb2RlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SGlu
dCh0YXJnZXQsIG1vZGUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiBHQ0dMYm9vbGVhbiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRl
eHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0J1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc0J1ZmZlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRp
bWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7
CisgICAgfQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUp
OwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0VuYWJs
ZWQoR0NHTGVudW0gY2FwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0VuYWJsZWQoY2FwKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0VuYWJsZWQ6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRW5hYmxlZChjYXApLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRW5hYmxlZDo6UmVwbHkocmV0dXJuVmFsdWUp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVh
bj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29s
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9z
dCgpOworICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZh
bHVlKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNQ
cm9ncmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0g
eyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNQ
cm9ncmFtKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3Jh
bTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBf
cyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNQcm9ncmFt
KGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUHJvZ3JhbTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFy
ZzApCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzUmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1f
ZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcihhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1JlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0
dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
Q0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojppc1NoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OklzU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpJc1NoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpJc1NoYWRlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAg
ICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dM
Ym9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1RleHR1cmUoUGxhdGZvcm1H
TE9iamVjdCBhcmcwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmUoYXJnMCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJlOjpSZXBseShyZXR1cm5W
YWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1f
ZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1cmUoYXJnMCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUZXh0dXJlOjpSZXBseShyZXR1cm5WYWx1ZSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
bGluZVdpZHRoKEdDR0xmbG9hdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpMaW5lV2lkdGgoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmVXaWR0
aChhcmcwKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpsaW5rUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmtQcm9ncmFtKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250
ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpMaW5rUHJvZ3JhbShhcmcwKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0K
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaShHQ0dM
ZW51bSBwbmFtZSwgR0NHTGludCBwYXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UGl4ZWxTdG9yZWkocG5hbWUsIHBhcmFtKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpwb2x5Z29uT2Zmc2V0KEdDR0xmbG9h
dCBmYWN0b3IsIEdDR0xmbG9hdCB1bml0cykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAg
ICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UG9seWdvbk9mZnNldChmYWN0b3IsIHVuaXRzKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0K
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9y
YWdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3
aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJn
ZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0K
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVDb3ZlcmFnZShH
Q0dMY2xhbXBmIHZhbHVlLCBHQ0dMYm9vbGVhbiBpbnZlcnQpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNhbXBsZUNvdmVyYWdlKHZhbHVlLCBzdGF0aWNf
Y2FzdDxib29sPihpbnZlcnQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlQ292ZXJhZ2UodmFsdWUs
IHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAg
ICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNjaXNzb3IoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVp
Z2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3Nl
Q29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6U2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2Fz
TG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
aGFkZXJTb3VyY2UoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBjb25zdCBTdHJpbmcmIGFyZzEpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlNoYWRlclNvdXJj
ZShhcmcwLCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2hhZGVyU291cmNlKGFyZzAsIGFyZzEpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAg
ICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnN0ZW5jaWxGdW5jKEdDR0xlbnVtIGZ1bmMsIEdDR0xpbnQgcmVmLCBHQ0dMdWludCBtYXNr
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2ls
RnVuYyhmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsRnVuYyhmdW5jLCBy
ZWYsIG1hc2spLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTGVu
dW0gZnVuYywgR0NHTGludCByZWYsIEdDR0x1aW50IG1hc2spCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVu
YywgcmVmLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBm
dW5jLCByZWYsIG1hc2spLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnN0ZW5jaWxNYXNrKEdDR0x1aW50IG1hc2spCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2sp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250
ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpTdGVuY2lsTWFzayhtYXNrKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0K
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFza1NlcGFy
YXRlKEdDR0xlbnVtIGZhY2UsIEdDR0x1aW50IG1hc2spCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRl
eHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3Rl
bmNpbE9wKEdDR0xlbnVtIGZhaWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wKGZh
aWwsIHpmYWlsLCB6cGFzcyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBp
ZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwg
enBhc3MpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDR0xlbnVtIGZhY2UsIEdDR0xlbnVtIGZh
aWwsIEdDR0xlbnVtIHpmYWlsLCBHQ0dMZW51bSB6cGFzcykKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwg
emZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFp
bCwgemZhaWwsIHpwYXNzKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJhbWV0ZXJmKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRl
eHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnRleFBhcmFtZXRlcmkoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGludCBw
YXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFBhcmFt
ZXRlcmkodGFyZ2V0LCBwbmFtZSwgcGFyYW0pLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAg
ICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xZihHQ0dMaW50IGxvY2F0
aW9uLCBHQ0dMZmxvYXQgeCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybTFmKGxvY2F0aW9uLCB4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFm
KGxvY2F0aW9uLCB4KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVz
dWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTFmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybTFpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTFpKGxvY2F0aW9uLCB4KSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQz
Ml90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xaXYobG9j
YXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmKEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmKGxvY2F0aW9uLCB4LCB5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTJmKGxvY2F0aW9uLCB4LCB5KSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMmZ2KEdD
R0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJmdihsb2NhdGlvbiwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmZ2KGxvY2F0aW9u
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0
Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJpKEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xpbnQgeCwgR0NHTGludCB5KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMmkobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtMmkobG9jYXRpb24sIHgsIHkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9k
aWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTJpdihsb2NhdGlvbiwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRh
dGEpLCB2LmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZs
b2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2
KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNmdihsb2NhdGlv
biwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2Z2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAg
IGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKEdDR0xpbnQgbG9jYXRp
b24sIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMaW50IHopCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zaShsb2NhdGlvbiwgeCwgeSwgeiks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRl
eHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zaShsb2NhdGlvbiwgeCwgeSwgeiksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bTNpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2l2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
aW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2l2
KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAg
fQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00ZihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6LCBHQ0dM
ZmxvYXQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
VW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRm
KGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGZ2KEdDR0xpbnQgbG9jYXRpb24s
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRmdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHYuZGF0YSksIHYuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExv
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5i
dWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkK
KyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTRpKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMaW50IHosIEdDR0xpbnQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
NGl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHYpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aXYobG9jYXRp
b24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBp
bnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00aXYo
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7
CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gdmFsdWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRy
YW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
dmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M2Z2KEdDR0xp
bnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZs
b2F0PiB2YWx1ZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3Nl
KSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9h
dCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1N
YXRyaXgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5k
YXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAo
IXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0ZnYoR0NHTGludCBsb2Nh
dGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3NlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZh
bHVlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFs
dWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2
YWx1ZS5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVzZVByb2dyYW0o
YXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVzZVByb2dyYW0oYXJnMCksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmFsaWRhdGVQcm9n
cmFtKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6VmFsaWRhdGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
YWxpZGF0ZVByb2dyYW0oYXJnMCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICgh
c2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliMWYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xmbG9hdCB4KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWZXJ0ZXhBdHRyaWIxZihpbmRleCwgeCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
YjFmKGluZGV4LCB4KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVz
dWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIxZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdCwgMT4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDE+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMu
ZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjFmdihp
bmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWIyZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5KQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIyZihpbmRl
eCwgeCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KSwgZGVm
YXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAg
d2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWIyZnYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9h
dCwgMj4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDI+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmdihpbmRleCwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdCwgMj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5k
YXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZihHQ0dMdWludCBpbmRl
eCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dMZmxvYXQgeikKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliM2YoaW5kZXgsIHgs
IHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExv
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeiksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliM2Z2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxv
YXQsIDM+IHZhbHVlcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliM2Z2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAz
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExv
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQsIDM+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZXMu
ZGF0YSksIHZhbHVlcy5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliNGYoR0NHTHVpbnQgaW5k
ZXgsIEdDR0xmbG9hdCB4LCBHQ0dMZmxvYXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRy
aWI0ZihpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRmKGlu
ZGV4LCB4LCB5LCB6LCB3KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQgaW5kZXgsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgND4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIElQQzo6QXJy
YXlSZWZlcmVuY2U8ZmxvYXQsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1
ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRm
dihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgND4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUs
IEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRwdHIgb2Zm
c2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0
ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdGF0aWNfY2FzdDxib29sPihub3Jt
YWxpemVkKSwgc3RyaWRlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0YXRpY19jYXN0
PGJvb2w+KG5vcm1hbGl6ZWQpLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQp
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp2aWV3cG9ydChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Vmll
d3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAg
IGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YShHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaXB0ciBhcmcxLCBHQ0dMZW51bSB1c2FnZSkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTAodGFyZ2V0LCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oYXJnMSksIHVzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyRGF0YTAo
dGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnMSksIHVzYWdlKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpidWZmZXJE
YXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEsIEdDR0xl
bnVtIHVzYWdlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCdWZmZXJEYXRhMSh0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSwgdXNh
Z2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VD
b250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZmZXJEYXRhMSh0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwg
ZGF0YS5idWZTaXplKSwgdXNhZ2UpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAo
IXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlclN1YkRhdGEo
dGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBk
YXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNw
YW48R0NHTHZvaWQ+IGRhdGEpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PiBk
YXRhUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkblBpeGVsczAoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlJlYWRuUGl4ZWxzMDo6UmVwbHkoZGF0YVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOwotICAgIGlmIChzZW5kUmVzdWx0KQotICAgICAgICBtZW1jcHkoZGF0
YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkp
OwotICAgIAorICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRu
UGl4ZWxzMCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwOjpSZXBseShk
YXRhUmVwbHkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVt
Y3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRhdGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9mKHVp
bnQ4X3QpKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpyZWFkblBpeGVscyhHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZWFkblBpeGVsczEoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxz
MSh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVscykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5k
YXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UyRDAodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTJE
KEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQxKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFn
ZTJEMSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVy
LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9z
dCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhT
dWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zmc2V0
LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4
ZWxzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhT
dWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7
CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMu
YnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpUZXhTdWJJbWFnZTJEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNl
dCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zm
c2V0KSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAg
ICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48
Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRh
KSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBp
ZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFn
ZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRl
ciwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTJEMSh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBpbWFn
ZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29t
cHJlc3NlZFRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwg
R0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxl
dmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdD
R0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwg
eW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlMkQx
KHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
aW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMaW50IGZpcnN0LCBHQ0dMc2l6ZWkgY291bnQs
IEdDR0xzaXplaSBwcmltY291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmlt
Y291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExv
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBj
b3VudCwgcHJpbWNvdW50KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0NHTGVudW0gbW9k
ZSwgR0NHTHNpemVpIGNvdW50LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NH
THNpemVpIHByaW1jb3VudCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
b2Zmc2V0KSwgcHJpbWNvdW50KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
ZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDR0x1aW50IGlu
ZGV4LCBHQ0dMdWludCBkaXZpc29yKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvciksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICB9CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y3JlYXRlVmVydGV4QXJyYXkoKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0g
eyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVh
dGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Q3JlYXRlVmVydGV4QXJyYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDcmVhdGVWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRl
eEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFt
X2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheShhcmcwKSwgZGVm
YXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAg
d2FzTG9zdCgpOworICAgIH0KIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6aXNWZXJ0ZXhBcnJheShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXkoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7
CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5W
YWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFZlcnRl
eEFycmF5KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5KGFyZzApLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCaW5kVmVydGV4QXJyYXkoYXJnMCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weUJ1ZmZlclN1YkRhdGEoR0NHTGVudW0g
cmVhZFRhcmdldCwgR0NHTGVudW0gd3JpdGVUYXJnZXQsIEdDR0xpbnRwdHIgcmVhZE9mZnNldCwg
R0NHTGludHB0ciB3cml0ZU9mZnNldCwgR0NHTHNpemVpcHRyIGFyZzQpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRU
YXJnZXQsIHdyaXRlVGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihh
cmc0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRl
VGFyZ2V0LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVhZE9mZnNldCksIHN0YXRpY19jYXN0PHVp
bnQ2NF90Pih3cml0ZU9mZnNldCksIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmc0KSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dM
U3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+
IGRhdGFSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4ob2Zmc2V0KSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhOjpSZXBseShkYXRhUmVwbHkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Ci0gICAgaWYgKHNlbmRSZXN1bHQpCi0gICAg
ICAgIG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRhdGEuYnVmU2l6ZSAqIHNp
emVvZih1aW50OF90KSk7Ci0gICAgCisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAg
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpLCBkYXRhLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldEJ1ZmZlclN1YkRhdGE6OlJlcGx5KGRhdGFSZXBseSksIGRlZmF1bHRTZW5kVGltZW91dCk7
CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgp
LCBkYXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgICAgICB9CisgICAgfQogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsaXRGcmFtZWJ1ZmZlcihHQ0dM
aW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBH
Q0dMaW50IGRzdFgwLCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkx
LCBHQ0dMYml0ZmllbGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kw
LCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250
ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3Jj
WTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZyYW1l
YnVmZmVyVGV4dHVyZUxheWVyKEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwg
UGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGxheWVyKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZl
clRleHR1cmVMYXllcih0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsIGxldmVsLCBsYXllciks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRl
eHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVu
dCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlkYXRlRnJhbWVidWZmZXIoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYXR0YWNobWVudHMpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVGcmFt
ZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVm
U2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExv
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJbnZhbGlkYXRlRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6
OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90
Kj4oYXR0YWNobWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjppbnZhbGlk
YXRlU3ViRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51
bT4gYXR0YWNobWVudHMsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50
cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSksIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7
CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIodGFyZ2V0LCBJUEM6OkFycmF5UmVm
ZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYXR0YWNo
bWVudHMuZGF0YSksIGF0dGFjaG1lbnRzLmJ1ZlNpemUpLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpyZWFkQnVmZmVyKEdDR0xlbnVtIHNyYykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZEJ1ZmZlcihzcmMpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFk
QnVmZmVyKHNyYyksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdDR0xlbnVt
IHRhcmdldCwgR0NHTHNpemVpIHNhbXBsZXMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJn
ZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFN0b3JhZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xzaXplaSBsZXZlbHMsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlMkQodGFyZ2V0LCBs
ZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0Qo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgbGV2ZWxzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN0b3JhZ2Uz
RCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4
dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgs
IEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IHBpeGVs
cykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1h
Z2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXpl
KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4
ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAg
ICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlM0QoR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lk
dGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleEltYWdlM0QxKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBm
b3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VGV4SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9m
ZnNldCkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zmc2V0LCBHQ0dM
c2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFn
ZTNEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3Nl
Q29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7
CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5
b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xp
bnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpUZXhTdWJJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAo
IW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3Jt
YXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3Vi
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwg
R0NHTGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7Cisg
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2Uz
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NH
TGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lk
PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b21wcmVzc2VkVGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1
aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9k
aWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QwKHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFn
ZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRl
eEltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVw
dGgsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNl
dCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJl
c3NlZFRleEltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3Nl
Q29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlM0QxKHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NH
TGludCB5b2Zmc2V0LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodGFy
Z2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVw
dGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgeG9m
ZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgaW1h
Z2VTaXplLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGludCB4b2Zm
c2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTHNp
emVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTNEMSh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
Zm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Q29tcHJlc3NlZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6
ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQog
fQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9j
YXRpb24oUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAg
ICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFMb2NhdGlvbjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFM
b2NhdGlvbihwcm9ncmFtLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm0xdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0x
dWkobG9jYXRpb24sIHYwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjAp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0ydWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50
IHYxKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlm
b3JtMnVpKGxvY2F0aW9uLCB2MCwgdjEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpKGxvY2F0
aW9uLCB2MCwgdjEpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1
bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQg
djAsIEdDR0x1aW50IHYxLCBHQ0dMdWludCB2MikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0zdWkobG9jYXRpb24sIHYwLCB2MSwgdjIpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm00dWkoR0NHTGludCBsb2NhdGlvbiwgR0NHTHVpbnQgdjAsIEdDR0x1aW50IHYxLCBHQ0dMdWlu
dCB2MiwgR0NHTHVpbnQgdjMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm00dWkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAg
ICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpLCBkZWZhdWx0U2VuZFRp
bWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7
CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0x
dWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMXVpdihs
b2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtMXVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0ydWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1
aW50PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtMnVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250
ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMnVpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xT
cGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3Vpdihsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf
dCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAg
ICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00dWl2KEdDR0xpbnQg
bG9jYXRpb24sIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiBkYXRhKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpdihsb2NhdGlvbiwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf
dCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVp
dihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MzJfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm1NYXRyaXgyeDNmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
R0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBzdGF0aWNf
Y2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4o
dHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRy
aXgzeDJmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFu
PGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxi
b29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNw
b3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBm
bG9hdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgyeDRm
dihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0
IEdDR0xmbG9hdD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0
cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+
KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAg
ICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDJmdihHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xm
bG9hdD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bv
c2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1N
YXRyaXg0eDJmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEu
ZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAo
IXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzeDRmdihHQ0dMaW50IGxv
Y2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
ZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5p
Zm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
ZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgz
eDRmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSks
IGRhdGEuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXg0eDNmdihHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4gZGF0YSkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1h
dHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0eDNmdihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxmbG9hdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KGRhdGEuZGF0YSksIGRhdGEu
YnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0aShHQ0dMdWludCBpbmRleCwgR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHos
IHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VD
b250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGkoaW5kZXgsIHgsIHksIHosIHcpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAg
ICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnZlcnRleEF0dHJpYkk0aXYoR0NHTHVpbnQgaW5kZXgsIEdDR0xTcGFuPGNvbnN0IEdDR0xp
bnQsIDQ+IHZhbHVlcykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliSTRpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVl
cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1f
ZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0aXYoaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90
Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWko
R0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IHgsIEdDR0x1aW50IHksIEdDR0x1aW50IHosIEdDR0x1
aW50IHcpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZl
cnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhB
dHRyaWJJNHVpKGluZGV4LCB4LCB5LCB6LCB3KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJJNHVpdihHQ0dM
dWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQsIDQ+IHZhbHVlcykKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTR1aXYo
aW5kZXgsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3QsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWl2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2
YWx1ZXMuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYklQb2ludGVyKEdDR0x1aW50IGluZGV4
LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBzdHJpZGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpWZXJ0ZXhBdHRyaWJJUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYklQb2lu
dGVyKGluZGV4LCBzaXplLCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAg
ICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3UmFuZ2VFbGVtZW50cyhHQ0dMZW51bSBtb2RlLCBHQ0dMdWludCBzdGFy
dCwgR0NHTHVpbnQgZW5kLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUsIEdDR0xpbnRw
dHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3UmFuZ2VFbGVtZW50
cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9m
ZnNldCkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzKEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBidWZzKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QnVmZmVy
cyhJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdC
dWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhckJ1ZmZl
cml2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMaW50PiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KHZhbHVlcy5kYXRh
KSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJpdihidWZmZXIs
IGRyYXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNs
ZWFyQnVmZmVydWl2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3YnVmZmVyLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdWludD4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcnVpdihidWZmZXIsIGRyYXdidWZmZXIsIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3Qq
Pih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVm
ZmVydWl2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1
ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhckJ1ZmZlcmZ2KEdDR0xlbnVtIGJ1ZmZlciwgR0NHTGludCBkcmF3
YnVmZmVyLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlcykKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmdihidWZmZXIsIGRy
YXdidWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNsZWFyQnVmZmVyZnYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMu
YnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRy
YXdidWZmZXIsIEdDR0xmbG9hdCBkZXB0aCwgR0NHTGludCBzdGVuY2lsKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZpKGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGVhckJ1ZmZlcmZp
KGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAg
fQogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZVF1ZXJ5KCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5KCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnk6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVF1ZXJ5KCksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlUXVlcnk6OlJlcGx5KHJldHVyblZhbHVl
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlUXVlcnkoUGxhdGZvcm1HTE9i
amVjdCBxdWVyeSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6RGVsZXRlUXVlcnkocXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVRdWVyeShxdWVyeSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmlzUXVlcnkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSkKIHsKICAgICBib29s
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNRdWVyeShxdWVyeSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6SXNRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6SXNRdWVyeShxdWVyeSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNR
dWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybUdMT2JqZWN0IHF1ZXJ5KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCZWdpblF1ZXJ5KHRhcmdldCwgcXVlcnkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCZWdp
blF1ZXJ5KHRhcmdldCwgcXVlcnkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAo
IXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5kUXVlcnkodGFy
Z2V0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3Nl
Q29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RW5kUXVlcnkodGFyZ2V0KSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRRdWVyeShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIHVpbnQzMl90
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0UXVlcnkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0UXVlcnk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFF1ZXJ5KHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMdWludCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRRdWVyeU9iamVjdHVpKFBsYXRmb3JtR0xPYmplY3Qg
cXVlcnksIEdDR0xlbnVtIHBuYW1lKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9
OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVl
cnlPYmplY3R1aShxdWVyeSwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFF1ZXJ5T2JqZWN0dWk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAg
ICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0dWkocXVlcnksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpOjpSZXBseShyZXR1cm5WYWx1ZSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0
Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNhbXBsZXIo
KQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2FtcGxlcigpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBsZXI6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRM
b3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBsZXIoKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNhbXBsZXIoUGxhdGZvcm1HTE9i
amVjdCBzYW1wbGVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEZWxldGVTYW1wbGVyKHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTYW1wbGVy
KHNhbXBsZXIpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1NhbXBsZXIoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVy
KQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXIoc2FtcGxlciksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6SXNTYW1wbGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1
cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFNh
bXBsZXIoR0NHTHVpbnQgdW5pdCwgUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kU2FtcGxlcih1bml0LCBz
YW1wbGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRM
b3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFNhbXBsZXIodW5pdCwgc2FtcGxlciksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2FtcGxlclBhcmFtZXRlcmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFt
ZSwgR0NHTGludCBwYXJhbSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUsIHBhcmFtKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2Fz
TG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpz
YW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1l
LCBHQ0dMZmxvYXQgcGFyYW0pCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIsIHBuYW1lLCBwYXJhbSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIEdDR0xmbG9hdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyZihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lKQogewogICAgIGZsb2F0IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmYo
c2FtcGxlciwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNh
bXBsZXJQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZh
bHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAg
ICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAK
IEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2FtcGxlclBhcmFtZXRl
cmkoUGxhdGZvcm1HTE9iamVjdCBzYW1wbGVyLCBHQ0dMZW51bSBwbmFtZSkKIHsKICAgICBpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmkoc2FtcGxlciwgcG5hbWUpLCBNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpOjpSZXBs
eShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAg
ICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1l
dGVyaShzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0U2FtcGxlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xzeW5jIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmZlbmNlU3luYyhHQ0dMZW51bSBjb25kaXRpb24sIEdDR0xiaXRm
aWVsZCBmbGFncykKIHsKICAgICB1aW50NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZlbmNlU3luYyhjb25kaXRp
b24sIGZsYWdzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5jZVN5bmM6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZlbmNlU3luYyhj
b25kaXRpb24sIGZsYWdzKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpGZW5j
ZVN5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxHQ0dMc3luYz4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHJldHVy
blZhbHVlKSk7CiB9CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmlzU3luYyhHQ0dMc3luYyBhcmcwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0g
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlU3luYyhHQ0dM
c3luYyBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEZWxldGVTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0
cl90PihhcmcwKSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFt
X2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVTeW5jKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSkpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgfQogfQogCiBHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGllbnRX
YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0x1aW50NjQgdGlt
ZW91dCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5jKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4odGltZW91dCkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNsaWVudFdhaXRTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDbGllbnRXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRl
cnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHRpbWVvdXQpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnRXYWl0
U3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3
YWl0U3luYyhHQ0dMc3luYyBhcmcwLCBHQ0dMYml0ZmllbGQgZmxhZ3MsIEdDR0xpbnQ2NCB0aW1l
b3V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpXYWl0
U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJn
MCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGltZW91dCkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpXYWl0U3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4oYXJnMCkpLCBmbGFncywgc3RhdGljX2Nhc3Q8aW50NjRfdD4odGltZW91dCkpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldFN5bmNpKEdDR0xzeW5jIGFyZzAsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRTeW5jaShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4oYXJnMCkpLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0U3luY2k6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFN5bmNpKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0
cl90PihhcmcwKSksIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRTeW5jaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAg
ICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCiB7CiAgICAgdWludDMyX3Qg
cmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpLCBNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNr
OjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICgh
c2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJl
dHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVRyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKGlk
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojppc1RyYW5zZm9ybUZlZWRiYWNrKFBsYXRmb3JtR0xPYmplY3QgaWQpCiB7CiAgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVy
blZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gdGFyZ2V0LCBQbGF0Zm9ybUdM
T2JqZWN0IGlkKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCaW5kVHJhbnNmb3JtRmVlZGJhY2sodGFyZ2V0LCBpZCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRU
cmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlkKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiZWdpblRyYW5zZm9ybUZlZWRiYWNr
KEdDR0xlbnVtIHByaW1pdGl2ZU1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
ZW5kVHJhbnNmb3JtRmVlZGJhY2soKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpFbmRUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRU
cmFuc2Zvcm1GZWVkYmFjaygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoUGxhdGZv
cm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFyeWluZ3MsIEdDR0xl
bnVtIGJ1ZmZlck1vZGUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZl
ck1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExv
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHByb2dyYW0s
IHZhcnlpbmdzLCBidWZmZXJNb2RlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmco
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCBpbmRleCwgQWN0aXZlSW5mbyYgYXJn
MikKIHsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyhwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nOjpSZXBseShh
cmcyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9k
aWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Zyhwcm9ncmFtLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nOjpSZXBseShhcmcyKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYXVzZVRyYW5zZm9y
bUZlZWRiYWNrKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFj
aygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VD
b250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRC
dWZmZXJCYXNlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgsIFBsYXRmb3JtR0xPYmpl
Y3QgYnVmZmVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCaW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
aW5kQnVmZmVyQmFzZSh0YXJnZXQsIGluZGV4LCBidWZmZXIpLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAg
fQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5n
ZShHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBQbGF0Zm9ybUdMT2JqZWN0IGJ1ZmZl
ciwgR0NHTGludHB0ciBvZmZzZXQsIEdDR0xzaXplaXB0ciBhcmc0KQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyUmFuZ2UodGFyZ2V0LCBp
bmRleCwgYnVmZmVyLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KGFyZzQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZlclJhbmdlKHRhcmdldCwg
aW5kZXgsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHN0YXRpY19jYXN0
PHVpbnQ2NF90Pihhcmc0KSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2Vu
ZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIFZlY3RvcjxHQ0dM
dWludD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUluZGljZXMoUGxh
dGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdW5pZm9ybU5hbWVz
KQogewogICAgIFZlY3Rvcjx1aW50MzJfdD4gcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlcyhw
cm9ncmFtLCB1bmlmb3JtTmFtZXMpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFVuaWZvcm1JbmRpY2VzOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRVbmlmb3JtSW5kaWNlcyhwcm9ncmFtLCB1bmlmb3JtTmFtZXMpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzOjpSZXBseShyZXR1
cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkK
KyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwog
fQogCiBWZWN0b3I8R0NHTGludD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0
aXZlVW5pZm9ybXMoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBWZWN0b3I8R0NHTHVp
bnQ+JiB1bmlmb3JtSW5kaWNlcywgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgVmVjdG9yPGludDMy
X3Q+IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlm
b3Jtczo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0
aXZlVW5pZm9ybXMocHJvZ3JhbSwgdW5pZm9ybUluZGljZXMsIHBuYW1lKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtczo6UmVwbHkocmV0dXJuVmFs
dWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAog
R0NHTHVpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9ybUJsb2NrSW5k
ZXgoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIHVuaWZvcm1CbG9ja05h
bWUpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleChwcm9n
cmFtLCB1bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRVbmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7Cisg
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5kZXgocHJvZ3JhbSwgdW5pZm9ybUJsb2NrTmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUJsb2NrSW5k
ZXg6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiB9CiAKIFN0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgpCiB7CiAgICAgU3RyaW5nIHJldHVyblZhbHVlID0geyB9Owot
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZl
VW5pZm9ybUJsb2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJs
b2NrTmFtZShwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtQmxvY2tCaW5kaW5nKFBs
YXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdDR0x1
aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2Nr
SW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtQmxvY2tC
aW5kaW5nKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihHQ0dMdWludCBwcm9ncmFtLCBHQ0dMdWludCB1
bmlmb3JtQmxvY2tJbmRleCwgR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFt
cykKIHsKICAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFtc1JlcGx5OwotICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgs
IHBuYW1lLCBwYXJhbXMuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwotICAgIGlmIChzZW5kUmVzdWx0KQotICAgICAg
ICBtZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUg
KiBzaXplb2YoaW50MzJfdCkpOwotICAgIAorICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KHByb2dyYW0sIHVuaWZvcm1CbG9j
a0luZGV4LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2OjpSZXBseShwYXJhbXNSZXBseSksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IHdhc0xvc3QoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkocGFyYW1zLmRh
dGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkp
OworICAgICAgICB9CisgICAgfQogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQogewogICAgIGludDMyX3QgcmV0dXJu
VmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQjo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExv
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkI6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Ymxp
dEZyYW1lYnVmZmVyQU5HTEUoR0NHTGludCBzcmNYMCwgR0NHTGludCBzcmNZMCwgR0NHTGludCBz
cmNYMSwgR0NHTGludCBzcmNZMSwgR0NHTGludCBkc3RYMCwgR0NHTGludCBkc3RZMCwgR0NHTGlu
dCBkc3RYMSwgR0NHTGludCBkc3RZMSwgR0NHTGJpdGZpZWxkIG1hc2ssIEdDR0xlbnVtIGZpbHRl
cikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxpdEZy
YW1lYnVmZmVyQU5HTEUoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwg
ZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZm
ZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwg
ZHN0WTEsIG1hc2ssIGZpbHRlciksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICgh
c2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11
bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xF
KHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5T0VTKCksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVM6OlJlcGx5KHJldHVyblZhbHVl
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJyYXlPRVMoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlVmVydGV4QXJyYXlPRVMoYXJnMCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIEdDR0xi
b29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXlPRVMoUGxh
dGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5
T0VTKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJy
YXlPRVM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVy
dGV4QXJyYXlPRVMoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNW
ZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0
Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZl
cnRleEFycmF5T0VTKGFyZzApLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiBTdHJpbmcgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07
Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNsYXRl
ZFNoYWRlclNvdXJjZUFOR0xFOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Omluc2VydEV2ZW50TWFya2VyRVhUKGNvbnN0IFN0cmluZyYgYXJnMCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW5zZXJ0RXZlbnRN
YXJrZXJFWFQoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAo
IW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okluc2VydEV2ZW50TWFya2VyRVhUKGFyZzAp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnB1c2hHcm91cE1hcmtlckVYVChjb25zdCBTdHJpbmcmIGFyZzApCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlB1c2hHcm91cE1hcmtlckVYVChh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3Nl
Q29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UHVzaEdyb3VwTWFya2VyRVhUKGFyZzApLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBvcEdy
b3VwTWFya2VyRVhUKCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6UG9wR3JvdXBNYXJrZXJFWFQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UG9wR3JvdXBNYXJrZXJF
WFQoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAg
ICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkcmF3QnVmZmVyc0VYVChHQ0dMU3Bhbjxjb25zdCBHQ0dMZW51bT4gYnVmcykK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZl
cnNFWFQoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
cmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZTaXplKSksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmlyc3QsIEdDR0xz
aXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZp
cnN0LCBjb3VudCwgcHJpbWNvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5
cGUsIEdDR0x2b2lkcHRyIG9mZnNldCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBw
cmltY291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2Rl
LCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDR0x1aW50IGluZGV4LCBHQ0dMdWludCBk
aXZpc29yKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5kZXgsIGRpdmlzb3IpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVybmFs
Zm9ybWF0aXYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTGVu
dW0gcG5hbWUsIEdDR0xTcGFuPEdDR0xpbnQ+IHBhcmFtcykKIHsKICAgICBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+IHBhcmFtc1JlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZXJuYWxmb3JtYXRp
dih0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwgcGFyYW1zLmJ1ZlNpemUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVybmFsZm9ybWF0aXY6OlJlcGx5KHBh
cmFtc1JlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwotICAgIGlm
IChzZW5kUmVzdWx0KQotICAgICAgICBtZW1jcHkocGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRh
dGEoKSwgcGFyYW1zLmJ1ZlNpemUgKiBzaXplb2YoaW50MzJfdCkpOwotICAgIAorICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVybmFsZm9ybWF0aXYodGFy
Z2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlcm5hbGZvcm1hdGl2OjpSZXBseShwYXJhbXNS
ZXBseSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAg
ICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtZW1jcHko
cGFyYW1zLmRhdGEsIHBhcmFtc1JlcGx5LmRhdGEoKSwgcGFyYW1zLmJ1ZlNpemUgKiBzaXplb2Yo
aW50MzJfdCkpOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Om11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMs
IEdDR0xzaXplaSBkcmF3Y291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Ok11bHRpRHJhd0FycmF5c0FOR0xFKG1vZGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oZmlyc3RzLmRhdGEp
LCBmaXJzdHMuYnVmU2l6ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oY291bnRzLmRhdGEpLCBjb3VudHMuYnVmU2l6ZSksIGRy
YXdjb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0FycmF5c0FOR0xFKG1vZGUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4o
Zmlyc3RzLmRhdGEpLCBmaXJzdHMuYnVmU2l6ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oY291bnRzLmRhdGEpLCBjb3VudHMu
YnVmU2l6ZSksIGRyYXdjb3VudCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICgh
c2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5j
ZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMy
X3QqPihmaXJzdHMuZGF0YSksIGZpcnN0cy5idWZTaXplKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihjb3VudHMuZGF0YSksIGNv
dW50cy5idWZTaXplKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGludDMyX3QqPihpbnN0YW5jZUNvdW50cy5kYXRhKSwgaW5zdGFuY2VDb3VudHMu
YnVmU2l6ZSksIGRyYXdjb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0FycmF5c0luc3Rh
bmNlZEFOR0xFKG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBpbnQzMl90Kj4oZmlyc3RzLmRhdGEpLCBmaXJzdHMuYnVmU2l6ZSksIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4o
Y291bnRzLmRhdGEpLCBjb3VudHMuYnVmU2l6ZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oaW5zdGFuY2VDb3VudHMuZGF0YSks
IGluc3RhbmNlQ291bnRzLmJ1ZlNpemUpLCBkcmF3Y291bnQpLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAg
fQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1l
bnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMs
IEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXpl
aSBkcmF3Y291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6Ok11bHRpRHJhd0VsZW1lbnRzQU5HTEUobW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihjb3VudHMuZGF0YSksIGNvdW50
cy5idWZTaXplKSwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGludDMyX3QqPihvZmZzZXRzLmRhdGEpLCBvZmZzZXRzLmJ1ZlNpemUpLCBk
cmF3Y291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0aURyYXdFbGVtZW50c0FOR0xFKG1vZGUsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90
Kj4oY291bnRzLmRhdGEpLCBjb3VudHMuYnVmU2l6ZSksIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVu
Y2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4ob2Zmc2V0cy5kYXRh
KSwgb2Zmc2V0cy5idWZTaXplKSwgZHJhd2NvdW50KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291
bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0aURy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oY291bnRzLmRhdGEpLCBjb3VudHMu
YnVmU2l6ZSksIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBpbnQzMl90Kj4ob2Zmc2V0cy5kYXRhKSwgb2Zmc2V0cy5idWZTaXplKSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3Qq
PihpbnN0YW5jZUNvdW50cy5kYXRhKSwgaW5zdGFuY2VDb3VudHMuYnVmU2l6ZSksIGRyYXdjb3Vu
dCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwg
SVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMy
X3QqPihjb3VudHMuZGF0YSksIGNvdW50cy5idWZTaXplKSwgdHlwZSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihvZmZzZXRzLmRh
dGEpLCBvZmZzZXRzLmJ1ZlNpemUpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGluc3RhbmNlQ291bnRzLmRhdGEpLCBpbnN0YW5j
ZUNvdW50cy5idWZTaXplKSwgZHJhd2NvdW50KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkUGl4ZWxzUm9idXN0QU5HTEUo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9p
ZCogcGl4ZWxzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmgKaW5kZXggZTRjY2NmMGRjNTdlYzg0ZWE2ZWM0
ZGE5ODM0Y2NjYzRhNWE1MTk3My4uODk4ZTIwZDE3NTQ0YjI4YTk0Y2NmNDYzNjhkNGRlMmZmNWUy
YzIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ05ldHdvcmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENTb2Nr
ZXRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViTUROU1JlZ2lzdGVyLmgiCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzY4NDNkZmVkYTg3MDAwNGU5
ZDM5MmRlMTU1OGJmMDk2ZGYzZjA0NS4uOGU5NDNkY2FkNzk3YWRmZDg2M2Y5MzQ3ZDM2OTVmNDcy
ZGI4MWUwYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5l
bkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nlc3MgSVBDIHNob3VsZCB1c2Ug
c2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGRvbmUtc2VtYXBob3JlLW1vdmVzCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2w6CisKKzIwMjAtMTItMDggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBHUFUgcHJvY2VzcyBJUEMgc2hvdWxkIGJlIGZh
c3RlciB0aGFuIGN1cnJlbnQgV2ViS2l0IElQQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGdlbmVyYXRlLWdwdXAtd2ViZ2wgdG8gZ2VuZXJh
dGUgc2VuZCBjYWxscyBmb3Igc2VuZGluZyBzdHJlYW0KKyAgICAgICAgbWVzc2FnZXMuIFN0cmVh
bSBtZXNzYWdlcyBoYXZlIGltcGxpZWQgZGVzdGluYXRpb24sIHNvIGRlc3RpbmF0aW9uIGlkCisg
ICAgICAgIGRvZXMgbm90IG5lZWQgdG8gYmUgcGFydCBvZiBzZW5kIG1ldGhvZCBjYWxsLgorCisg
ICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorCiAyMDIxLTAxLTI5ICBEb24g
T2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW3dlYmtpdHB5XSBU
aHJlYWQuaXNBbGl2ZSB3YXMgcmVuYW1lZCB0byBUaHJlYWQuaXNfYWxpdmUKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJh
dGUtZ3B1cC13ZWJnbAppbmRleCBmMTZiNDIyMjljZjJmODI4YzY2YzdlN2I0MTc3M2MyZWJlNDQz
MTE0Li5lZTYzZWYyZjRmZWM2MjFkZTYyOTRhNDMzYWQxZTExODk0MzYyYWU4IDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9n
ZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC04OSw3ICs4OSw3IEBAIGNvbnRleHRfbWVzc2FnZXNfdGVt
cGxhdGUgPSAoCiAgICAgdGVtcGxhdGVfcHJlYW1ibGUKICAgICArICIiIiNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3
aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVw
YXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9u
b3VzCkBAIC01ODUsMjIgKzU4NSwyNiBAQCBjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBs
KG9iamVjdCk6CiAgICAgICAgIGluX2V4cHJzID0gIiwgIi5qb2luKFtzdHIoaSkgZm9yIGkgaW4g
c2VsZi5pbl9leHByc10pCiAgICAgICAgIG91dF9leHBycyA9ICIsICIuam9pbihzdHIobykgZm9y
IG8gaW4gc2VsZi5vdXRfZXhwcnMpCiAgICAgICAgIGlzX2FzeW5jID0gc2VsZi5yZXR1cm5fdHlw
ZS5pc192b2lkKCkgYW5kIGxlbihvdXRfZXhwcnMpID09IDAKKyAgICAgICAgc2VsZi5jYWxsX3N0
bXRzICs9IFsgImlmICghbV9kaWRMb3NlQ29udGV4dCkgeyIgXQogICAgICAgICBpZiBpc19hc3lu
YzoKICAgICAgICAgICAgIHNlbGYuY2FsbF9zdG10cyArPSBbCi0gICAgICAgICAgICAgICAgZiJz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtp
bl9leHByc30pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7IiwKKyAgICAgICAgICAg
ICAgICBmIiAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtpbl9leHByc30pLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOyIsCiAgICAgICAgICAgICBdCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZW5kX3Jl
c3VsdCA9ICIiCi0gICAgICAgICAgICBpZiBzZWxmLnBvc3RfY2FsbF9zdG10czogCi0gICAgICAg
ICAgICAgICAgc2VuZF9yZXN1bHQgPSAiYXV0byBzZW5kUmVzdWx0ID0gIgotICAgICAgICAgICAg
ICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzID0gWwotICAgICAgICAgICAgICAgICAgICAiaWYgKHNl
bmRSZXN1bHQpIiArICgiIHsiIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVsc2Ug
IiIpCi0gICAgICAgICAgICAgICAgXSArIFsiICAgICIgKyBzIGZvciBzIGluIHNlbGYucG9zdF9j
YWxsX3N0bXRzXSArIFsKLSAgICAgICAgICAgICAgICAgICAgKCJ9IiBpZiBsZW4oc2VsZi5wb3N0
X2NhbGxfc3RtdHMpID4gMSBlbHNlICIiKQotICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAg
IHNlbGYuY2FsbF9zdG10cyArPSBbCi0gICAgICAgICAgICAgICAgZiJ7c2VuZF9yZXN1bHR9c2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0o
e2luX2V4cHJzfSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNn
X25hbWV9OjpSZXBseSh7b3V0X2V4cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsiLAorICAgICAgICAgICAgICAgIGYiICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9KHtp
bl9leHByc30pLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OntzZWxmLm1zZ19u
YW1lfTo6UmVwbHkoe291dF9leHByc30pLCBkZWZhdWx0U2VuZFRpbWVvdXQpOyIKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICIgICAgaWYg
KCFzZW5kUmVzdWx0KSIsCisgICAgICAgICAgICAiICAgICAgICB3YXNMb3N0KCk7IiwKKyAgICAg
ICAgXQorICAgICAgICBpZiBzZWxmLnBvc3RfY2FsbF9zdG10czoKKyAgICAgICAgICAgIHNlbGYu
Y2FsbF9zdG10cyArPSBbCisgICAgICAgICAgICAgICAgIiAgICBlbHNlIHsiCiAgICAgICAgICAg
ICBdCisgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyA9IFsgIiAgICAiICsgbCBmb3Ig
bCBpbiBzZWxmLnBvc3RfY2FsbF9zdG10cyBdCisgICAgICAgICAgICBzZWxmLnBvc3RfY2FsbF9z
dG10cyArPSBbICIgICAgfSIgXQorICAgICAgICBzZWxmLnBvc3RfY2FsbF9zdG10cyArPSBbICJ9
IiBdCiAKIAogICAgIGRlZiBwcm9jZXNzX2luX2FyZ3Moc2VsZiwgaW5fYXJnczogTGlzdFtjcHBf
YXJnXSk6CkBAIC02MjEsOCArNjI1LDggQEAgY2xhc3Mgd2Via2l0X2lwY19jcHBfcHJveHlfaW1w
bChvYmplY3QpOgogICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtlXQogICAgICAg
ICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFsKICAgICAgICAgICAgICAgICAgICAg
I2ZtdDogb2ZmCi0gICAgICAgICAgICAgICAgICAgIGYiaWYgKHtvLm5hbWV9KSIsCi0gICAgICAg
ICAgICAgICAgICAgIGYiICAgICp7by5uYW1lfSA9IHt3ZWJraXRfaXBjX2NvbnZlcnRfZXhwcihl
LCB2YWx1ZV90eXBlKX07IgorICAgICAgICAgICAgICAgICAgICBmIiAgICBpZiAoe28ubmFtZX0p
IiwKKyAgICAgICAgICAgICAgICAgICAgZiIgICAgICAgICp7by5uYW1lfSA9IHt3ZWJraXRfaXBj
X2NvbnZlcnRfZXhwcihlLCB2YWx1ZV90eXBlKX07IgogICAgICAgICAgICAgICAgICAgICAjZm10
OiBvbgogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIGVsaWYgby50eXBlLmlzX3NwYW4o
KToKQEAgLTYzNCw3ICs2MzgsNyBAQCBjbGFzcyB3ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgaWYgby50eXBlLmlzX2R5bmFtaWNfc3BhbigpOgogICAg
ICAgICAgICAgICAgICAgICBzZWxmLmluX2V4cHJzICs9IFtjcHBfZXhwcihnZXRfY3BwX3R5cGUo
InNpemVfdCIpLCBmIntvLm5hbWV9LmJ1ZlNpemUiKV0KICAgICAgICAgICAgICAgICBzZWxmLnBv
c3RfY2FsbF9zdG10cyArPSBbCi0gICAgICAgICAgICAgICAgICAgIGYibWVtY3B5KHtvLm5hbWV9
LmRhdGEsIHt2Lm5hbWV9LmRhdGEoKSwge28ubmFtZX0uYnVmU2l6ZSAqIHNpemVvZih7c3RyKHdl
YmtpdF9pcGNfdHlwZS5nZXRfY29udGFpbmVkX3R5cGUoKSl9KSk7IgorICAgICAgICAgICAgICAg
ICAgICBmIiAgICBtZW1jcHkoe28ubmFtZX0uZGF0YSwge3YubmFtZX0uZGF0YSgpLCB7by5uYW1l
fS5idWZTaXplICogc2l6ZW9mKHtzdHIod2Via2l0X2lwY190eXBlLmdldF9jb250YWluZWRfdHlw
ZSgpKX0pKTsiCiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgICAgICBzZWxmLm91dF9leHBycyArPSBbY3BwX2V4cHIoby50eXBlLCBvLm5hbWUpXQo=
</data>
<flag name="commit-queue"
          id="437021"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418916</attachid>
            <date>2021-02-01 13:12:04 -0800</date>
            <delta_ts>2021-02-05 10:29:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210201231202.patch</filename>
            <type>text/plain</type>
            <size>355528</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYyMjg4MzgxOGY3YzZkNmUwZWU1NjU1
ODg2ZjcwZGFkZmVjN2JlNWQuLjdhNGZiZDkxNTk1OTE1OTk3YWU3MGI3MDM5NWQ5YmQ3MjgyZTU3
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDItMDEgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBHUFUgcHJvY2VzcyBJUEMgc2hvdWxk
IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBhc3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzIzNDA2NTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIG1vdmUgY29uc3RydWN0b3JzIGFuZCBhc3NpZ25tZW50IG9wZXJh
dG9ycyBzbyB0aGF0IE1hY2hTZW1hcGhvcmUKKyAgICAgICAgY2FuIGJlIHBhcnQgb2YgYW4gb2Jq
ZWN0IHRoYXQgaXMgc2VudCB0aHJvdWdoIElQQy4gT3RoZXJ3aXNlIHJlY2VpdmluZworICAgICAg
ICB0aGUgb2JqZWN0IHRocm91Z2ggT3B0aW9uYWw8VHlwZT4gaXMgbm90IHBvc3NpYmxlLgorCisg
ICAgICAgICogd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuY3BwOgorICAgICAgICAoV1RGOjpNYWNo
U2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKToKKyAgICAgICAgKFdURjo6TWFjaFNlbWFwaG9yZTo6
fk1hY2hTZW1hcGhvcmUpOgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjpvcGVyYXRvcj0p
OgorICAgICAgICAoV1RGOjpNYWNoU2VtYXBob3JlOjpzaWduYWwpOgorICAgICAgICAoV1RGOjpN
YWNoU2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAgKFdURjo6TWFjaFNlbWFwaG9yZTo6d2FpdEZv
cik6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6OmNyZWF0ZVNlbmRSaWdodCBjb25zdCk6
CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9j
b2NvYS9NYWNoU2VtYXBob3JlLmg6CisgICAgICAgIChXVEY6Ok1hY2hTZW1hcGhvcmU6Om9wZXJh
dG9yIGJvb2wgY29uc3QpOgorCiAyMDIxLTAxLTMxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgRGF0ZS5wYXJzZSByZXR1cm5zIG5vbi1pbnRlZ3JhbCB0aW1l
IHZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGY4ZjQ1YTNkYWZlNWJhMGQxZjQ4ZDlkNmY2OWQ5NWRlZTFiOTQw
YzYuLjA2NjE3NjQyYTlkMDFkZTA2ZDI2ODQ5NjBkNjM5ODA2NmY2NWEzYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDgyIEBACisyMDIxLTAyLTAxICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nlc3MgSVBDIHNob3VsZCB1c2Ugc2hh
cmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNzYWdlIGJ1ZmZlci4gVGhpcyBpcyBh
IHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFuZCBidWZmZXIiIG9yICJkaXNwbGF5
IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2FnZXMKKyAgICAgICAgY2FuIGJlIGFk
ZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRoZW4gcGxheWVkIGJhY2sgYnkgYQor
ICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBhZGRzIGEg
c3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBzZW1pLWR1cGxleCBtZXNzYWdlIGJ1
ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci4gVGhpcworICAgICAgICBpcyBh
IGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJlYW0gY29ubmVjdGlvbiwgYW4gb2Jq
ZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1lc3NhZ2VzIGVpdGhlciB0aHJvdWdo
IHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJvdWdoIG5vcm1hbCBJUEM6OkNvbm5l
Y3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAgICAgICBpbXBsZW1lbnRlZCBhcyBJ
UEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZlciBhbmQgY2xpZW50IGRpc3RpbmN0
aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVjdGlvbi4gVW5saWtlIElQQzo6Q29u
bmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3ltbWV0cmljCisgICAgICAgIGluIGZl
YXR1cmVzOiBjbGllbnQgY2FuIHNlbmQgbWVzc2FnZXMgYW5kIHJlY2VpdmUgcmVwbGllcywgd2hl
cmUKKyAgICAgICAgYXMgc2VydmljZSBjYW4gcmVjZWl2ZSBtZXNzYWdlcyBhbmQgc2VuZCByZXBs
aWVzLgorCisgICAgICAgIE1lc3NhZ2VzIHJlY2VpdmVkIHRocm91Z2ggc2VydmVyIHN0cmVhbSBj
b25uZWN0aW9ucyBjYW4gYmUgcHJvY2Vzc2VkIGJ5CisgICAgICAgIFN0cmVhbUNvbm5lY3Rpb25Q
cm9jZXNzb3IuCisKKyAgICAgICAgQ3VycmVudGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUg
YWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRo
ZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQgdGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAg
IEltcGxlbWVudGVkIGFzIGZvbGxvd3M6CisgICAgICAgIFNlbmRlciBzaGFyZXMgdGhlIHNoYXJl
ZCBtZW1vcnkgYXJlYSB3aXRoIHRoZSBkZXN0aW5hdGlvbiB3aGVuIGNyZWF0aW5nCisgICAgICAg
IHRoZSBkZXN0aW5hdGlvbi4KKworICAgICAgICBJZiB0aGUgbWVzc2FnZSBmaXRzIHRvIHRoZSBz
dHJlYW0gc2hhcmVkIG1lbW9yeSBhcmVhLCB3cml0ZSBpdCB0aGVyZS4KKyAgICAgICAgT3RoZXJ3
aXNlIHNlbmQgaXQgdmlhIG5vcm1hbCBJUEMgYXMgb3V0IG9mIGxpbmUgbWVzc2FnZS4KKworICAg
ICAgICBNZXNzYWdlcyB0byB0aGUgZGVzdGluYXRpb24gYXJyaXZlIGFzIGJlZm9yZSwgaW4gb3Jk
ZXIuIEZvciBlYWNoIG91dCBvZiBsaW5lCisgICAgICAgIG1lc3NhZ2UsIGFuIGVudHJ5IGlzIHB1
c2hlZCB0byB0aGUgc3RyZWFtLiBSZWNlaXZlciB3aWxsIHN0b3AgcHJvY2Vzc2luZyB0aGUKKyAg
ICAgICAgc3RyZWFtIGFuZCBwcm9jZXNzaW5nIHdpbGwgY29udGludWUgb25jZSB0aGUgb3V0LW9m
LWxpbmUKKyAgICAgICAgbWVzc2FnZSBoYXMgYmVlbiBwcm9jZXNzZWQuCisKKyAgICAgICAgU2Vu
ZGVyIGNhbiB3cml0ZSBtZXNzYWdlcyB0byB0aGUgc3RyZWFtIHNpbXVsdGFuZW91cyB0byB0aGUg
cmVjZWl2ZXIgcmVhZGluZworICAgICAgICB0aGUgbWVzc2FnZXMuIFRoaXMgaXMgaW1wbGVtZW50
ZWQgYXMgYSByaW5nIGJ1ZmZlciB3aXRoIGF0b21pYyBzZW5kZXIgYW5kIHJlY2VpdmVyCisgICAg
ICAgIHBvaW50ZXJzLgorCisgICAgICAgIFN0cmVhbSBjb25uZWN0aW9uIHByb2Nlc3NpbmcgaXMg
aW1wbGVtZW50ZWQgYXMgYSBzaGFyZWQgc2VtYXBob3JlLiBUaGlzIHNlbWFwaG9yZQorICAgICAg
ICBpcyBub3RpZmllZCBpZiB0aGUgcmVjZWl2ZXIgaXMgd2FpdGluZyBvbiBpdC4KKworICAgICAg
ICBQZXJmb3JtYW5jZSBpbXBhY3QgKGlNYWMgUHJvKToKKyAgICAgICAgICAgIC0gTW90aW9uTWFy
ayB0cmlhbmdsZXM6IDgwMCBwb2ludHMgLT4gNDUwMCBwb2ludHMKKyAgICAgICAgICAgICAgKH44
ODAwIHBvaW50cyBuby1HUFVQKQorICAgICAgICAgICAgLSBXZWJHTCBzYW1wbGVzIEFxdWFyaXVt
OiAxMDAwIGZpc2ggfjYwZnBzIC0+IDEwMDAwIGZpc2ggfjYwZnBzCisgICAgICAgICAgICAgICh+
MTAwMDAgZmlzaCB3aXRoIG5vLUdQVVApCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0ZXN0ZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY29wZWREaXNjb25uZWN0OjpTY29wZWREaXNjb25u
ZWN0KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NvcGVk
RGlzY29ubmVjdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6U2NvcGVkRGlzY29ubmVjdDo6flNjb3BlZERpc2Nvbm5lY3QpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Qcm9jZXNzb3Ip
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6On5SZW1v
dGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6ZGVpbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6c2VuZCBjb25zdCk6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMQ29jb2E6OmluaXRpYWxpemUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVN0cmluZ1RleHQpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFN0cmluZz46OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXJzLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjphZGRNZXNzYWdlRmlsdGVyKToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6cmVtb3ZlTWVzc2FnZUZpbHRlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OnNldERpZENsb3NlT25Db25uZWN0aW9uV29ya1F1ZXVlQ2FsbGJhY2spOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjppbnZhbGlkYXRlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2Vu
ZE1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246Omhhc0luY29taW5nU3luY01lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVRvRmlsdGVyKToKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHA6CisgICAgICAgIChJUEM6OkRlY29kZXI6OkRl
Y29kZXIpOgorICAgICAgICAoSVBDOjptX2J1ZmZlckRlYWxsb2NhdG9yKToKKyAgICAgICAgKElQ
Qzo6bV9kZXN0aW5hdGlvbklEKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgIChJUEM6Omhh
bmRsZU1lc3NhZ2VTeW5jaHJvbm91cyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VG
aWx0ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5o
LgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TZW1hcGhvcmVIYW5kbGUuaDogQ29waWVkIGZyb20g
U291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oLgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93
dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwSGFuZGxlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9T
dHJlYW1DbGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlT
ZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENv
bm5lY3Rpb246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1w
ZWRMaW1pdCBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25C
dWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKElQQzo6Y3JlYXRlTWVtb3J5KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcik6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6Om9wZXJhdG9yPSk6CisgICAgICAg
IChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChJ
UEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDogQWRkZWQuCisgICAgICAgIChJUEM6OlN0cmVh
bUNvbm5lY3Rpb25CdWZmZXI6OndyYXBPZmZzZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyOjphbGlnbk9mZnNldCBjb25zdCk6CisgICAgICAgIChJUEM6OlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVh
bUNvbm5lY3Rpb25CdWZmZXI6OnJlY2VpdmVyT2Zmc2V0KToKKyAgICAgICAgKElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXI6OmRhdGFTaXplIGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlcjo6c2VuZGVyV2FpdFNlbWFwaG9yZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25CdWZmZXI6OmhlYWRlciBjb25zdCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXI6OmhlYWRlclNpemUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
b25uZWN0aW9uRW5jb2Rlci5oOiBBZGRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFt
Q29ubmVjdGlvblByb2Nlc3Nvci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1Db25u
ZWN0aW9uUHJvY2Vzc29yOjpTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yKToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvcjo6ZGlzcGF0Y2gpOgorICAgICAgICAoSVBDOjpT
dHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yOjphZGRTdHJlYW1Db25uZWN0aW9uKToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvcjo6cmVtb3ZlU3RyZWFtQ29ubmVjdGlvbik6
CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3I6OnN0b3ApOgorICAgICAg
ICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yOjp3YWtlVXApOgorICAgICAgICAoSVBD
OjpTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yOjp3YWtlVXBIYW5kbGUpOgorICAgICAgICAoSVBD
OjpTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yOjp3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvcjo6cHJvY2Vzc1N0cmVhbXMpOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAg
ICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6
CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZl
ck9mZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFT
aXplIGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNl
bmRTeW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2Vp
dmVyPjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAo
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNz
YWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpw
cm9jZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVh
bU1lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21vZGVs
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHA6Cisg
ICAgICAgIChJUEM6OmpzVmFsdWVGb3JBcmd1bWVudHMpOgorICAgICAgICAoSVBDOjptZXNzYWdl
QXJndW1lbnREZXNjcmlwdGlvbnMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL01l
c3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKElQ
Qzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1lKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
bWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJl
YW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VGVz
dFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVkLgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1
ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNl
bmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29uc3QpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2Fn
ZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlRl
c3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAgICAg
KE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6CisgICAgICAg
IChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToKKyAgICAg
ICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRzIGNvbnN0
KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9u
aXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJp
bmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2Fn
ZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OnJlc2hhcGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmVuc3VyZUV4dGVuc2lvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpub3RpZnlNYXJrQ29udGV4dENoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVh
dGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2Fz
TG9zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
aXRVbnRpbEluaXRpYWxpemVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjayk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bW92ZUVycm9yc1Rv
U3ludGhldGljRXJyb3JMaXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kUmVu
ZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmluZFRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpibGVuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuYyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJsZW5kRnVuY1NlcGFyYXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmNsZWFyRGVwdGgpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjbGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojpjb2xvck1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4U3ViSW1hZ2UyRCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNy
ZWF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRleHR1cmUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjdWxsRmFjZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZy
YW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aEZ1bmMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aE1hc2spOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkZXB0aFJhbmdlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGV0YWNoU2hhZGVy
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGlzYWJs
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmRyYXdBcnJheXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZsdXNoKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpm
cmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmZyb250RmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
QnVmZmVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEZsb2F0dik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcjY0aSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFByb2dyYW1pKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0Qm9vbGVhbnYpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJp
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRleFBhcmFtZXRlcmYpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUZXhQYXJhbWV0ZXJp
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5p
Zm9ybWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0VW5pZm9ybXVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmhpbnQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc0J1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRW5hYmxlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dy
YW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1Jl
bmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmlzU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6aXNUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bGluZVdpZHRoKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bGlua1Byb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpwaXhlbFN0b3JlaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnBvbHlnb25PZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2FtcGxlQ292ZXJhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzY2lzc29y
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c2hhZGVy
U291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c3RlbmNpbEZ1bmMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhQYXJh
bWV0ZXJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4UGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2YpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2Z2KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTNpdik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm00
Zik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm00ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtNGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dXNlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZhbGlkYXRlUHJvZ3JhbSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYjFmKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dmVydGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjNmdik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjRm
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4
QXR0cmliNGZ2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZWFkblBpeGVscyk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdWJJbWFnZTJEKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRl
eEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmRyYXdBcnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRy
aWJEaXZpc29yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Y3JlYXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5QnVmZmVyU3ViRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEJ1
ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpibGl0RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpmcmFtZWJ1ZmZlclRleHR1cmVMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlYWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlMkQpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhTdG9yYWdlM0QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp0ZXhJbWFnZTNE
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3Vi
SW1hZ2UzRCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvcHlUZXhTdWJJbWFnZTNEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleEltYWdlM0QpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEZyYWdEYXRhTG9j
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtMXVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTJ1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnVuaWZvcm0zdWkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp1bmlmb3JtNHVpKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMnVpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zdWl2KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aXYpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4MngzZnYpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0
cml4M3gyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp1bmlmb3JtTWF0cml4Mng0ZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgyZnYpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4M3g0ZnYpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtTWF0cml4NHgzZnYp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWJJNGkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp2ZXJ0ZXhBdHRyaWJJNGl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTR1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYkk0dWl2KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpkcmF3UmFuZ2VF
bGVtZW50cyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRyYXdCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y2xlYXJCdWZmZXJpdik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVydWl2KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmdik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZmkpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVRdWVyeSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVF1ZXJ5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luUXVlcnkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRRdWVy
eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1
ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
UXVlcnlPYmplY3R1aSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OmNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZWxldGVTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6aXNTYW1wbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJm
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2Ft
cGxlclBhcmFtZXRlcmYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmZlbmNlU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU3luYyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVN5bmMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGllbnRXYWl0U3luYyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2kpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVUcmFuc2Zvcm1G
ZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6aXNUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJlZ2luVHJhbnNm
b3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjplbmRUcmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpiaW5kQnVmZmVyQmFzZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRCdWZmZXJSYW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm1JbmRpY2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QWN0aXZlVW5pZm9ybXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtQmxvY2tJbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3Jt
QmxvY2tCaW5kaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NraXYpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxpdEZyYW1lYnVmZmVy
QU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpy
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVmVydGV4QXJy
YXlPRVMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpp
c1ZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZFZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRN
YXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpwdXNoR3JvdXBNYXJrZXJFWFQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojpwb3BHcm91cE1hcmtlckVYVCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJy
YXlzQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMS0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ2hlY2sgYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSBmb3IgbnVsbCBj
b25zaXN0ZW50bHkgZXZlcnl3aGVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2Ev
TWFjaFNlbWFwaG9yZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmNw
cAppbmRleCA5MmZjZjE1YzA3ZDkyNGE0NTA3OTM3ZmQyMzA0NTcyYzRkYmJiOTY2Li42ZmIzNTc3
ZWFkMzg0OGNmODBjMDg1ODgxYzdlNmFlMTdjZTNjZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9N
YWNoU2VtYXBob3JlLmNwcApAQCAtMzYsNiArMzYsMTIgQEAgTWFjaFNlbWFwaG9yZTo6TWFjaFNl
bWFwaG9yZSgpCiAgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1MpOwog
fQogCitNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKE1hY2hTZW1hcGhvcmUmJiBvdGhlcikK
KyAgICA6IG1fc2VuZFJpZ2h0KFdURk1vdmUob3RoZXIubV9zZW5kUmlnaHQpKQorICAgICwgbV9z
ZW1hcGhvcmUoc3RkOjpleGNoYW5nZShvdGhlci5tX3NlbWFwaG9yZSwgU0VNQVBIT1JFX05VTEwp
KQoreworfQorCiBNYWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJiBz
ZW5kUmlnaHQpCiAgICAgOiBtX3NlbmRSaWdodChXVEZNb3ZlKHNlbmRSaWdodCkpCiAgICAgLCBt
X3NlbWFwaG9yZShtX3NlbmRSaWdodC5zZW5kUmlnaHQoKSkKQEAgLTQ1LDI5ICs1MSw1NiBAQCBN
YWNoU2VtYXBob3JlOjpNYWNoU2VtYXBob3JlKE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQpCiAK
IE1hY2hTZW1hcGhvcmU6On5NYWNoU2VtYXBob3JlKCkKIHsKLSAgICBpZiAoIW1fc2VuZFJpZ2h0
KQotICAgICAgICBzZW1hcGhvcmVfZGVzdHJveShtYWNoX3Rhc2tfc2VsZigpLCBtX3NlbWFwaG9y
ZSk7CisgICAgZGVzdHJveSgpOworfQorCitNYWNoU2VtYXBob3JlJiBNYWNoU2VtYXBob3JlOjpv
cGVyYXRvcj0oTWFjaFNlbWFwaG9yZSYmIG90aGVyKQoreworICAgIGlmICh0aGlzICE9ICZvdGhl
cikgeworICAgICAgICBkZXN0cm95KCk7CisgICAgICAgIG1fc2VuZFJpZ2h0ID0gV1RGTW92ZShv
dGhlci5tX3NlbmRSaWdodCk7CisgICAgICAgIG1fc2VtYXBob3JlID0gc3RkOjpleGNoYW5nZShv
dGhlci5tX3NlbWFwaG9yZSwgU0VNQVBIT1JFX05VTEwpOworICAgIH0KKworICAgIHJldHVybiAq
dGhpczsKIH0KIAogdm9pZCBNYWNoU2VtYXBob3JlOjpzaWduYWwoKQogewotICAgIHNlbWFwaG9y
ZV9zaWduYWwobV9zZW1hcGhvcmUpOworICAgIGF1dG8gcmV0ID0gc2VtYXBob3JlX3NpZ25hbCht
X3NlbWFwaG9yZSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXQsIHJldCA9PSBLRVJOX1NVQ0NFU1Mp
OwogfQogCiB2b2lkIE1hY2hTZW1hcGhvcmU6OndhaXQoKQogewotICAgIHNlbWFwaG9yZV93YWl0
KG1fc2VtYXBob3JlKTsKKyAgICBhdXRvIHJldCA9IHNlbWFwaG9yZV93YWl0KG1fc2VtYXBob3Jl
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CiB9CiAKIHZv
aWQgTWFjaFNlbWFwaG9yZTo6d2FpdEZvcihTZWNvbmRzIHRpbWVvdXQpCiB7CiAgICAgYXV0byBz
ZWNvbmRzID0gdGltZW91dC5zZWNvbmRzQXM8dW5zaWduZWQ+KCk7Ci0gICAgc2VtYXBob3JlX3Rp
bWVkd2FpdChtX3NlbWFwaG9yZSwgeyBzZWNvbmRzLCBzdGF0aWNfY2FzdDxjbG9ja19yZXNfdD4o
dGltZW91dC5uYW5vc2Vjb25kc0FzPHVpbnQ2NF90PigpIC0gc2Vjb25kcyAqIE5TRUNfUEVSX1NF
QykgfSk7CisgICAgYXV0byByZXQgPSBzZW1hcGhvcmVfdGltZWR3YWl0KG1fc2VtYXBob3JlLCB7
IHNlY29uZHMsIHN0YXRpY19jYXN0PGNsb2NrX3Jlc190Pih0aW1lb3V0Lm5hbm9zZWNvbmRzQXM8
dWludDY0X3Q+KCkgLSBzZWNvbmRzICogTlNFQ19QRVJfU0VDKSB9KTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyB8fCByZXQgPT0gS0VSTl9PUEVSQVRJT05fVElN
RURfT1VUKTsKIH0KIAotTWFjaFNlbmRSaWdodCBNYWNoU2VtYXBob3JlOjpjcmVhdGVTZW5kUmln
aHQoKQorTWFjaFNlbmRSaWdodCBNYWNoU2VtYXBob3JlOjpjcmVhdGVTZW5kUmlnaHQoKSBjb25z
dAogewogICAgIHJldHVybiBNYWNoU2VuZFJpZ2h0OjpjcmVhdGUobV9zZW1hcGhvcmUpOwogfQog
Cit2b2lkIE1hY2hTZW1hcGhvcmU6OmRlc3Ryb3koKQoreworICAgIGlmIChtX3NlbmRSaWdodCkg
eworICAgICAgICBtX3NlbmRSaWdodCA9IE1hY2hTZW5kUmlnaHQoKTsKKyAgICAgICAgbV9zZW1h
cGhvcmUgPSBTRU1BUEhPUkVfTlVMTDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
bV9zZW1hcGhvcmUgPT0gU0VNQVBIT1JFX05VTEwpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRv
IHJldCA9IHNlbWFwaG9yZV9kZXN0cm95KG1hY2hfdGFza19zZWxmKCksIG1fc2VtYXBob3JlKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IEtFUk5fU1VDQ0VTUyk7CisgICAgbV9zZW1h
cGhvcmUgPSBTRU1BUEhPUkVfTlVMTDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmggYi9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9NYWNoU2VtYXBob3JlLmgKaW5kZXggYmU3Y2VhMDQ2YjgxMmNiYzNlYjNhNzIxMzBk
OWE1YmEwMDkzZjkyZi4uNGI1ZGI3NGU3MTZjMzI4Zjc3YjI2MmRiOWQzYjBjYzE1Y2Q5MDc5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTWFjaFNlbWFwaG9yZS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL01hY2hTZW1hcGhvcmUuaApAQCAtMzcsMTYgKzM3LDIwIEBAIGNs
YXNzIE1hY2hTZW1hcGhvcmUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1hY2hTZW1hcGhv
cmUpOwogcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBNYWNoU2VtYXBob3JlKCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW1hcGhvcmUoTWFjaFNlbWFwaG9yZSYmKTsKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgTWFjaFNlbWFwaG9yZShNYWNoU2VuZFJpZ2h0
JiYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB+TWFjaFNlbWFwaG9yZSgpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBNYWNoU2VtYXBob3JlJiBvcGVyYXRvcj0oTWFjaFNlbWFwaG9yZSYmKTsK
IAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNpZ25hbCgpOwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHdhaXQoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWl0Rm9y
KFNlY29uZHMpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW5kUmlnaHQgY3JlYXRl
U2VuZFJpZ2h0KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hY2hTZW5kUmlnaHQgY3JlYXRl
U2VuZFJpZ2h0KCkgY29uc3Q7CiAKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gbV9zZW5kUmlnaHQgfHwgbV9zZW1hcGhvcmUgIT0gU0VNQVBIT1JFX05VTEw7IH0K
IHByaXZhdGU6CisgICAgdm9pZCBkZXN0cm95KCk7CiAgICAgTWFjaFNlbmRSaWdodCBtX3NlbmRS
aWdodDsKICAgICBzZW1hcGhvcmVfdCBtX3NlbWFwaG9yZSB7IFNFTUFQSE9SRV9OVUxMIH07CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IDkwMDU2Njk0YTUzMDBkYzNhOGJmZGQxZWUzMGVjMTZiZDhlYmRl
YTguLjMzNjc0OThlYjBjZjM2NWE4ODI5M2EyNDZhYWM3MzNkMDg5MzZiODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKQEAgLTI5NCw3ICsyOTQsNyBAQCBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eSYgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6YXVkaW9TZXNzaW9uUHJveHkoKQogdm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShwYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFdyYXBwZXI+KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92
ZShwYXJhbWV0ZXJzKSkpOworICAgICAgICByZXR1cm4gU2NvcGVkRGlzY29ubmVjdCB7IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShwYXJhbWV0ZXJzKSkgfTsK
ICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOwogfQpAQCAtMzA1LDIxICszMDUsMTEgQEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmkKICAg
ICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlcihSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4mJiByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kKQotICAgIDogbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKFdURk1vdmUocmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCkpCi17Ci19Ci0KLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIo
KQotewotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC0+ZGlzY29ubmVjdCgpOwotfQotCiAj
aWYgRU5BQkxFKFdFQkdMKQotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVH
cmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0
cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcikKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3ND
b250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRl
cywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQogewogICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgICAgICByZXR1cm4gU2NvcGVkRGlzY29ubmVjdCB7IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoYXR0cmlidXRlcyksIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgV1RGTW92ZShzdHJlYW0pKSB9OwogICAgIH0pOwogICAgIEFTU0VS
VF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRl
eCA0NDE4Y2E2YWVhMmE0MDhlMzc3NTM4OTBlMWQzMGRkZWM3NmVjN2NhLi5lZDI4Mzc3MTcxNDMx
Yzg2ZDUyNjYyNTM1MDgwNWFmZDQ1NDViNTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTEzMSw3ICsxMzEsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQg
cmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAj
ZW5kaWYKIApAQCAtMTk0LDIwICsxOTQsMzggQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dz
RGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBjbGFzcyBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kV3JhcHBlciB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgY2xhc3MgU2NvcGVkRGlzY29ubmVjdCB7CiAg
ICAgcHVibGljOgotICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcihSZWY8UmVt
b3RlUmVuZGVyaW5nQmFja2VuZD4mJik7Ci0gICAgICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
V3JhcHBlcigpOworICAgICAgICBTY29wZWREaXNjb25uZWN0KCkgPSBkZWZhdWx0OworICAgICAg
ICBleHBsaWNpdCBTY29wZWREaXNjb25uZWN0KFJlZjxUPiYmIG9iamVjdCkKKyAgICAgICAgICAg
IDogbV9vYmplY3QoV1RGTW92ZShvYmplY3QpKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAg
ICAgU2NvcGVkRGlzY29ubmVjdChTY29wZWREaXNjb25uZWN0JiYgb3RoZXIpCisgICAgICAgICAg
ICA6IG1fb2JqZWN0KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIG51bGxwdHIpKQorICAg
ICAgICB7CisgICAgICAgIH0KKyAgICAgICAgU2NvcGVkRGlzY29ubmVjdCYgb3BlcmF0b3I9KFNj
b3BlZERpc2Nvbm5lY3QmJiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fb2Jq
ZWN0KQorICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5kaXNjb25uZWN0KCk7CisgICAgICAgICAg
ICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIG51bGxwdHIpOworICAg
ICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgICAgIH5TY29wZWREaXNjb25u
ZWN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fb2JqZWN0KQorICAgICAgICAgICAg
ICAgIG1fb2JqZWN0LT5kaXNjb25uZWN0KCk7CisgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ7CisgICAgICAgIFJlZlB0cjxUPiBtX29iamVjdDsKICAgICB9OwotCi0gICAgdXNpbmcgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcj4+OworICAg
IHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLCBTY29wZWREaXNjb25uZWN0PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsK
ICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1h
cDsKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgU2NvcGVkRGlz
Y29ubmVjdDxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+OwogICAgIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWFwIG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXA7CiAjZW5kaWYKICNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwY2Jj
NWQ4Nzk4M2U2NjZlNDhlODM5YTY0NjQ4OTg3OTUwYTM5MmJmLi4wZGRjYWFhM2FhMGEwNTk0ZWQ0
ZjU2ZDc2YWZjMDg1MzM0MjJlMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MjYsNyArMjYsNyBAQCBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRz
RGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoc3RydWN0
IFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0
ZXJzKQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUo
V0VCR0wpCi0gICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lk
IENyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIgc3RyZWFtKQogICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNl
bmRpZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmNwcAppbmRleCBkODA0ZDFmYTk5OTRkNWZmZjMxNDM2NGQ1OWJlZjk1ZWI0OWVhOTk5Li41ZTAy
ODc3MTA0OGRmYzNmYjEyNjlkNDdmNmZhZjhmYzhkMTAyOTcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHAKQEAgLTMxLDU1ICszMSw3MCBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiU3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+Ci0KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorLy8gQ3VycmVudGx5IHdlIGhhdmUgb25l
IGdsb2JhbCBXZWJHTCBwcm9jZXNzaW5nIGluc3RhbmNlLgorc3RhdGljIElQQzo6U3RyZWFtQ29u
bmVjdGlvblByb2Nlc3NvciYgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Qcm9jZXNzb3Io
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJUEM6OlN0cmVhbUNvbm5lY3Rpb25Qcm9j
ZXNzb3I+IGluc3RhbmNlKCJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0aHJlYWQiKTsKKyAgICBy
ZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKQorUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogI2VuZGlmCiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkK
LSAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQotICAgICwgbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYm
IHN0cmVhbSkKKyAgICA6IG1fc3RyZWFtQ29ubmVjdGlvbihJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+OjpjcmVhdGUoZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtKSwgcmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xTdHJlYW1Qcm9jZXNzb3IoKSkpCiAgICAgLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkp
Ci0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0
KCksICp0aGlzKTsKLSAgICBtX2NvbnRleHQtPmFkZENsaWVudCgqdGhpcyk7Ci0gICAgU3RyaW5n
IGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6RVhU
RU5TSU9OUyk7Ci0gICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+
Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7Ci0g
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRl
ZChleHRlbnNpb25zLCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICByZW1vdGVH
cmFwaGljc0NvbnRleHRHTFN0cmVhbVByb2Nlc3NvcigpLmRpc3BhdGNoKFthdHRyaWJ1dGVzID0g
V1RGTW92ZShhdHRyaWJ1dGVzKSwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11
dGFibGUgeworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmli
dXRlcykpOworICAgIH0pOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdN
ZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
IH0KIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgp
CiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKCFtX3N0cmVhbUNv
bm5lY3Rpb24pOworICAgIEFTU0VSVCghbV9jb250ZXh0KTsKIH0KIAotR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKSBjb25zdAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdCgp
CiB7Ci0gICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RvcFJl
Y2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVByb2Nlc3NvcigpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgeworICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kZWluaXRpYWxpemUoKTsKKyAgICB9KTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAordm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICBy
ZXR1cm4gJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAobV9jb250ZXh0KSB7CisgICAgICAgIG1fY29udGV4dC0+YWRk
Q2xpZW50KCp0aGlzKTsKKyAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdl
dFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6RVhURU5TSU9OUyk7CisgICAgICAgIFN0cmluZyBy
ZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6
OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKHJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMU3RyZWFtUHJvY2Vzc29yKCkud2FrZVVwSGFuZGxlKCksIGV4dGVuc2lvbnMsIHJlcXVl
c3RhYmxlRXh0ZW5zaW9ucykpOworICAgIH0gZWxzZQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNMb3N0KCkpOwogfQogCi11aW50NjRfdCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGVpbml0aWFsaXplKCkKIHsKLSAgICBy
ZXR1cm4gbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKTsKKyAgICBtX2Nv
bnRleHQgPSBudWxscHRyOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCkBAIC04OCw3ICsx
MDMsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaWRDb21wb3NpdGUoKQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KCkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNMb3N0KCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNMb3N0KCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCkBAIC05OCw3ICsxMTMsNyBAQCB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xlQ29udGV4dCgpCiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5n
ZWQoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSk7CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBo
ZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDdkYjBjZjUxOGFiZjliYjI1YWIzMzZk
ZGRlMDM5OTkyNWFhMDVmMzIuLmZjMGMwYmU0MzEyNzM0ZmYzNjM2MTNjN2MxNzFmZmVlNjExOWZk
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC0yOCwxMCArMjgsOSBAQAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
LSNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCi0KKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgpAQCAtNDksMzEgKzQ4LDIwIEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwot
CiAvLyBHUFUgcHJvY2VzcyBzaWRlIGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcmVjZWl2ZXMgbWVz
c2FnZXMgYWJvdXQgR3JhcGhpY3NDb250ZXh0R0wgY2FsbHMKIC8vIGFuZCBpc3N1ZXMgcmVhbCBH
cmFwaGljc0NvbnRleHRHTCBjYWxscyBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZXMuCiAv
LyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29s
cy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wuCi1jbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTAotICAgIDogcHVibGljIElQQzo6TWVzc2FnZVNlbmRlcgotICAgICwgcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgotICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TDo6Q2xpZW50IHsKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiwgcHJpdmF0ZSBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxSZW1vdGVHcmFw
aGljc0NvbnRleHRHTD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKLSAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7
CisgICAgLy8gSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMPiB0ZW1wbGF0ZSBjb250cmFjdCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2b2lkIGRpZFJlY2Vp
dmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJUEM6OkRl
Y29kZXImKTsKIAogcHJvdGVjdGVkOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4pOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJy
aWRlcy4KLSAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QgZmluYWw7Ci0gICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dCBmaW5hbDsKLQotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KLSAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKIAogICAgIC8vIEdyYXBoaWNz
Q29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkQ29tcG9zaXRlKCkgZmlu
YWw7CkBAIC05Myw4ICs4MSwxMyBAQCBwcm90ZWN0ZWQ6CiAKICNpbmNsdWRlICJSZW1vdGVHcmFw
aGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKIAotICAgIFJlZjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwotICAgIFdlYWtQdHI8
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwor
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYmKTsKKyAgICB2b2lkIGRlaW5pdGlhbGl6ZSgpOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgYm9vbCBzZW5kKFQmJiBtZXNzYWdlKSBjb25zdCB7IHJldHVybiBtX3N0cmVh
bUNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsgfQorCisgICAgUmVmUHRyPElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+IG1fc3RyZWFtQ29ubmVjdGlvbjsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IG1fY29udGV4dDsK
ICAgICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KaW5k
ZXggMTkxNTFiZDBjYTEzOWI1Nzk4MGE2MzA2ZjNhNzRlNjE4M2QxMTk3YS4uZmQ1ZDY2ZGU0M2Yw
MzE2N2NkY2EzYjVmZjY1NWQzYmMxYTFhYWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogLy8gVGhpcyBmaWxlIGlzIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgTm90UmVmQ291bnRlZCB7CittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lk
dGgsIGludDMyX3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFy
ZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91
cwpAQCAtMjk2LDQgKzI5NiwzIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IE5vdFJlZkNvdW50ZWQgewogfQogCiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EuY3BwCmluZGV4IDhlMmQxZmM2NTE4NjI4Mzk1ZTk3NDFjNDRlN2FjODUxYjA4ZWY2Mjcu
LmMyNDM5NTFhY2QxZWU5OTVlOWI2ZWEwMzRiODM3YTU0ZmFmNjQxODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKQEAgLTEsMyArMSw0IEBACisKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTM5LDEw
ICs0MCwxMSBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLCBwcml2YXRlIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsKIHB1YmxpYzoKLSAgICBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSgpIGZpbmFsID0gZGVm
YXVsdDsKIAogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KKyAgICB2
b2lkIGluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZp
bmFsOwogICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
VEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYpIGZpbmFsOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0
R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVzLgpAQCAtNTYsMTQgKzU4LDIwIEBAIHByaXZh
dGU6CiAKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcikKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0p
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworfQorCitSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MsIFdURk1vdmUoYXR0cmlidXRlcyksIGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgV1RGTW92ZShzdHJlYW0pKQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+KG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hKGF0dHJpYnV0ZXMsIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcikpOwogfQogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgOiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBjb25uZWN0aW9uLCBpZGVudGlmaWVy
LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhhdHRyaWJ1dGVz
LCB0aGlzKSkKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6aW5pdGlhbGl6ZShX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogeworICAg
IG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNz
KGF0dHJpYnV0ZXMsIHRoaXMpOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjppbml0aWFs
aXplKFdURk1vdmUoYXR0cmlidXRlcykpOwogfQogCiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFj
ZVN3YXBDaGFpbjo6QnVmZmVyIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVC
dWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAppbmRleCBiN2JjYTdjNDg2OTU4MDIyOTRiZjk0YWVmMDc0
MGNmNzBlM2Y2MmFmLi42MjNhNTJhNDVhNGZhODVkYzEyZDQ4YTk1ZTU2ZWM2Zjk2MmQ5ZTdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShMSUJXRUJSVEMpCiAK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIkxpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdvcmtS
VENNb25pdG9yLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IDMyMDc2YWZkMDJhODk4YTFlMzlkZTI4M2Ux
MDJiODU5NDdmOGVkYzcuLjUzMzUwZjlmN2M4YzEyYmU2Mjc1OTk5YzdlYmZjM2M3ZTA5MWJjYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCisj
aW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAog
bmFtZXNwYWNlIElQQyB7CkBAIC03NSw2ICs3Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lID0gdm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVy
PgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBUIHZhbHVlKQogICAg
IHsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKQEAgLTkx
LDYgKzkzLDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19lbnVtX3Y8VD4+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2YWx1ZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPFQ+KFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8VD4o
dmFsdWUpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5j
cHAKaW5kZXggYjBhNDNkZTlkN2ExMzcyMTZhMTliZjdkMGJkNWUxOTExM2I1ZGE2OC4uYmQ0ZWVk
YWIxMDM3YWQ5ZTM1ODdjN2I1NDdiZTQ0ZWE1Mzg3YjA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTExMSw3ICsxMTIs
NyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENvZGVyPENTdHJpbmc+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgQ1N0cmluZwogICAgIHJldHVybiB0cnVlOwogfQogCi0KK3Rl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIFNw
ZWNpYWwgY2FzZSB0aGUgbnVsbCBzdHJpbmcuCkBAIC0xMzAsNiArMTMxLDEwIEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiAgICAgZWxzZQogICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczE2KCkp
LCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBhbGlnbm9mKFVDaGFyKSk7CiB9Cit0ZW1wbGF0ZQor
dm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgY29u
c3QgU3RyaW5nJik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29k
ZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBjb25z
dCBTdHJpbmcmKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMg
aW5saW5lIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVy
LCB1aW50MzJfdCBsZW5ndGgpCkBAIC0xMzksMTIgKzE0NCwxMiBAQCBzdGF0aWMgaW5saW5lIE9w
dGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJf
dCBsZW5ndAogICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgfQotICAgIAorCiAgICAgQ2hhcmFjdGVyVHlwZSogYnVmZmVyOwog
ICAgIFN0cmluZyBzdHJpbmcgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBi
dWZmZXIpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyKSwgbGVuZ3RoICogc2l6ZW9mKENoYXJhY3RlclR5cGUp
LCBhbGlnbm9mKENoYXJhY3RlclR5cGUpKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LSAgICAKKwogICAgIHJldHVybiBzdHJpbmc7CiB9CiAKQEAgLTE1MywxNiArMTU4LDE2IEBAIFdB
Uk5fVU5VU0VEX1JFVFVSTiBPcHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgdWludDMyX3QgbGVuZ3RoOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUobGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAK
KwogICAgIGlmIChsZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgp
KSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG51bGwgc3RyaW5nLgogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAgICAgfQotICAgIAorCiAgICAgYm9vbCBpczhCaXQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShpczhCaXQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIAor
CiAgICAgaWYgKGlzOEJpdCkKICAgICAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8TENoYXI+
KGRlY29kZXIsIGxlbmd0aCk7CiAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8VUNoYXI+KGRl
Y29kZXIsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaAppbmRleCAyMGViMTdhMGZkODI2MGQ0MGJlYzdmY2RhYWVhMjNiYzVlODY1ZTA5Li5mODU2
OTgwNzNkZDA0NWIyODE2ZTE2MTBjYTQ5OTZhNWQ0ZWU2YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTU1LDYgKzU1LDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50Q29kZXIgewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5j
ZTxULCBFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZl
cmVuY2U8VCwgRXh0ZW50PjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5
cGUmIGFycmF5UmVmZXJlbmNlKQogICAgIHsKICAgICAgICAgaWYgKCFFeHRlbnQpCkBAIC03NCw2
ICs3NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1
bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVuCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHlu
YW1pY0V4dGVudD4+IHsKICAgICB1c2luZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVy
ZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCiAgICAgewogICAgICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJlZmVyZW5jZS5zaXplKCkpOwpA
QCAtMjY2LDYgKzI2OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVj
dCBBcmd1bWVudENvZGVyPHN0ZDo6cGFpcjxULCBVPj4gewogCiB0ZW1wbGF0ZTxzaXplX3QgaW5k
ZXgsIHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1cGxlRW5jb2RlciB7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4mIHR1cGxlKQogICAgIHsKICAg
ICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxzaXplb2YuLi4oRWxlbWVudHMpIC0gaW5kZXg+KHR1
cGxlKTsKQEAgLTI3NSw2ICsyNzgsNyBAQCBzdHJ1Y3QgVHVwbGVFbmNvZGVyIHsKIAogdGVtcGxh
dGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+CiBzdHJ1Y3QgVHVwbGVFbmNvZGVyPDAsIEVsZW1lbnRz
Li4uPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JikKICAgICB7CiAg
ICAgfQpAQCAtMzM4LDYgKzM0Miw3IEBAIHN0cnVjdCBUdXBsZURlY29kZXI8MD4gewogfTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6
dHVwbGU8RWxlbWVudHMuLi4+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjp0dXBsZTxF
bGVtZW50cy4uLj4mIHR1cGxlKQogICAgIHsKICAgICAgICAgVHVwbGVFbmNvZGVyPHNpemVvZi4u
LihFbGVtZW50cyksIEVsZW1lbnRzLi4uPjo6ZW5jb2RlKGVuY29kZXIsIHR1cGxlKTsKQEAgLTM3
NCw2ICszNzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5
cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6S2V5VmFsdQogdGVtcGxhdGU8Ym9vbCBmaXhl
ZFNpemVFbGVtZW50cywgdHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4gc3RydWN0IFZlY3RvckFyZ3Vt
ZW50Q29kZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwg
dHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+IHN0cnVjdCBWZWN0
b3JBcmd1bWVudENvZGVyPGZhbHNlLCBULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVD
YXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mIHZlY3RvcikKICAgICB7CiAg
ICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZlY3Rvci5zaXplKCkpOwpA
QCAtNDExLDYgKzQxNyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluCiB9OwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2Rlcjx0cnVl
LCBULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4geworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eT4mIHZlY3RvcikKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHZlY3Rvci5zaXplKCkpOwpAQCAtNzUzLDYgKzc2MCw3IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Q1N0cmluZz4gewogfTsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTdHJpbmc+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7
CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU3Ry
aW5nJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlKERlY29kZXImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggY2RhZjEzYTVkNmIy
YWQwYTUxNzY3YmRjMDUxMTkwZDFlZmM0NmMyZS4uZTgxNzNkNjI5ZTdiOTFjMmZmNzBiNWJmOGFm
NmY1ZGVlNDVmMTk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5j
cHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRlc3Rp
bmF0aW9uTWVzc2FnZUZpbHRlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJN
ZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxtZW1vcnk+CkBAIC0zODEsNiArMzgzLDI4IEBAIHZv
aWQgQ29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCB1CiAgICAgbV90aHJlYWRNZXNzYWdlUmVjZWl2ZXJzLnJlbW92
ZShrZXkpOwogfQogCit2b2lkIENvbm5lY3Rpb246OmFkZE1lc3NhZ2VGaWx0ZXIoTWVzc2FnZUZp
bHRlciYgbWVzc2FnZUZpbHRlciwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCkKK3sKKyAgICBhdXRvIG1lc3NhZ2VGaWx0ZXJMb2NrZXIgPSBob2xkTG9j
ayhtX21lc3NhZ2VGaWx0ZXJzTG9jayk7CisgICAgbV9tZXNzYWdlRmlsdGVycy5hZGRGaWx0ZXIo
bWVzc2FnZUZpbHRlciwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKKyAgICBmb3IgKGF1dG8g
aXQgPSBtX2luY29taW5nTWVzc2FnZXMuYmVnaW4oKSwgZW5kID0gbV9pbmNvbWluZ01lc3NhZ2Vz
LmVuZCgpOyBpdCAhPSBlbmQ7KSB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYg
bWVzc2FnZSA9ICppdDsKKyAgICAgICAgbWVzc2FnZUZpbHRlci5kaWRSZWNlaXZlTWVzc2FnZSgq
dGhpcywgbWVzc2FnZSk7CisgICAgICAgIGlmICghbWVzc2FnZSkgeworICAgICAgICAgICAgbV9p
bmNvbWluZ01lc3NhZ2VzLnJlbW92ZShpdCk7CisgICAgICAgICAgICBlbmQgPSBtX2luY29taW5n
TWVzc2FnZXMuZW5kKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgKytpdDsKKyAgICB9
Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlTWVzc2FnZUZpbHRlcihSZWNlaXZlck5hbWUg
cmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIGF1dG8gbWVzc2Fn
ZUZpbHRlckxvY2tlciA9IGhvbGRMb2NrKG1fbWVzc2FnZUZpbHRlcnNMb2NrKTsKKyAgICBtX21l
c3NhZ2VGaWx0ZXJzLnJlbW92ZUZpbHRlcihyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwor
fQorCiB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWVzc2Fn
ZShUaHJlYWRNZXNzYWdlUmVjZWl2ZXImIHRocmVhZE1lc3NhZ2VSZWNlaXZlciwgRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBpZiAoIWRlY29kZXIuaXNTeW5jTWVzc2FnZSgpKSB7CkBAIC00MDks
NyArNDMzLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpzZXREaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtR
dWV1ZUNhbGxiYWNrKERpZENsb3NlT25Db25uZWN0aW9uV28KIHsKICAgICBBU1NFUlQoIW1faXND
b25uZWN0ZWQpOwogCi0gICAgbV9kaWRDbG9zZU9uQ29ubmVjdGlvbldvcmtRdWV1ZUNhbGxiYWNr
ID0gY2FsbGJhY2s7ICAgIAorICAgIG1fZGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxs
YmFjayA9IGNhbGxiYWNrOwogfQogCiB2b2lkIENvbm5lY3Rpb246OmludmFsaWRhdGUoKQpAQCAt
NDIwLDcgKzQ0NCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6aW52YWxpZGF0ZSgpCiAgICAgICAgIC8v
IFNvbWVvbmUgYWxyZWFkeSBjYWxsZWQgaW52YWxpZGF0ZSgpLgogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCiAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiAKICAgICBtX2Nvbm5lY3Rpb25R
dWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxl
IHsKQEAgLTQ4OCw3ICs1MTIsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRNZXNzYWdlKHN0ZDo6
dW5pcXVlX3B0cjxFbmNvZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8U2VuZE9wdAogICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0Z29pbmdNZXNzYWdlc011dGV4KTsKICAgICAgICAg
bV9vdXRnb2luZ01lc3NhZ2VzLmFwcGVuZChXVEZNb3ZlKGVuY29kZXIpKTsKICAgICB9Ci0gICAg
CisKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFkZCBhIGJvb2xlYW4gZmxhZyBzbyB3ZSBkb24n
dCBjYWxsIHRoaXMgd2hlbiB3b3JrIGhhcyBhbHJlYWR5IGJlZW4gc2NoZWR1bGVkLgogICAgIG1f
Y29ubmVjdGlvblF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zZW5kT3V0Z29pbmdNZXNzYWdl
cygpOwpAQCAtNjQzLDIxICs2NjcsMjEgQEAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IENvbm5l
Y3Rpb246OndhaXRGb3JTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgTWUKICAgICBN
b25vdG9uaWNUaW1lIGFic29sdXRlVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGltZW91
dDsKIAogICAgIHdpbGxTZW5kU3luY01lc3NhZ2Uoc2VuZFN5bmNPcHRpb25zKTsKLSAgICAKKwog
ICAgIGJvb2wgdGltZWRPdXQgPSBmYWxzZTsKICAgICB3aGlsZSAoIXRpbWVkT3V0KSB7CiAgICAg
ICAgIC8vIEZpcnN0LCBjaGVjayBpZiB3ZSBoYXZlIGFueSBtZXNzYWdlcyB0aGF0IHdlIG5lZWQg
dG8gcHJvY2Vzcy4KICAgICAgICAgU3luY01lc3NhZ2VTdGF0ZTo6c2luZ2xldG9uKCkuZGlzcGF0
Y2hNZXNzYWdlcygpOwotICAgICAgICAKKwogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX3N5bmNSZXBseVN0YXRlTXV0ZXgpOwogCiAgICAgICAgICAgICAvLyBTZWNv
bmQsIGNoZWNrIGlmIHRoZXJlIGlzIGEgc3luYyByZXBseSBhdCB0aGUgdG9wIG9mIHRoZSBzdGFj
ay4KICAgICAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nU3luY1JlcGxpZXMuaXNFbXB0eSgpKTsK
LSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBQZW5kaW5nU3luY1JlcGx5JiBwZW5kaW5nU3lu
Y1JlcGx5ID0gbV9wZW5kaW5nU3luY1JlcGxpZXMubGFzdCgpOwogICAgICAgICAgICAgQVNTRVJU
X1VOVVNFRChzeW5jUmVxdWVzdElELCBwZW5kaW5nU3luY1JlcGx5LnN5bmNSZXF1ZXN0SUQgPT0g
c3luY1JlcXVlc3RJRCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgLy8gV2UgZm91bmQg
dGhlIHN5bmMgcmVwbHksIG9yIHRoZSBjb25uZWN0aW9uIHdhcyBjbG9zZWQuCiAgICAgICAgICAg
ICBpZiAocGVuZGluZ1N5bmNSZXBseS5kaWRSZWNlaXZlUmVwbHkgfHwgIW1fc2hvdWxkV2FpdEZv
clN5bmNSZXBsaWVzKSB7CiAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVN5bmNSZXBseShzZW5k
U3luY09wdGlvbnMpOwpAQCAtNzMyLDEwICs3NTYsOCBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nl
c3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAg
fQogCiAgICAgYXV0byB0aHJlYWRlZFJlY2VpdmVyS2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGlj
X2Nhc3Q8dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgbWVzc2FnZS0+
ZGVzdGluYXRpb25JRCgpKTsKLSAgICBpZiAoIVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcDo6
aXNWYWxpZEtleSh0aHJlYWRlZFJlY2VpdmVyS2V5KSB8fCAhVGhyZWFkTWVzc2FnZVJlY2VpdmVy
TWFwOjppc1ZhbGlkS2V5KHRocmVhZGVkUmVjZWl2ZXJLZXkpKSB7Ci0gICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdl
TmFtZSA9IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShtZXNzYWdlTmFt
ZSk7Ci0gICAgICAgIH0pOworICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwOjpp
c1ZhbGlkS2V5KHRocmVhZGVkUmVjZWl2ZXJLZXkpIHx8ICFUaHJlYWRNZXNzYWdlUmVjZWl2ZXJN
YXA6OmlzVmFsaWRLZXkodGhyZWFkZWRSZWNlaXZlcktleSkgfHwgIURlc3RpbmF0aW9uTWVzc2Fn
ZUZpbHRlcjo6aXNWYWxpZE1lc3NhZ2UoKm1lc3NhZ2UpKSB7CisgICAgICAgIGRpc3BhdGNoRGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC03NDUsNiArNzY3LDExIEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJv
Y2Vzc0luY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVzc2FnZSkKICAg
ICBpZiAoZGlzcGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcihtZXNzYWdlKSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgLy8gTm90ZTogTWVzc2FnZSBmaWx0ZXIgbG9jayBpcyBoZWxkIGR1cmlu
ZyBtZXNzYWdlIHJvdXRpbmcsIHNvIHRoYXQgYWRkaW5nIGFuZCByZW1vdmluZyBtZXNzYWdlIGZp
bHRlcnMKKyAgICAvLyBkb2VzIG5vdCBjYXVzZSBtZXNzYWdlIHJlb3JkZXJpbmcuCisgICAgYXV0
byBtZXNzYWdlRmlsdGVyTG9ja2VyID0gaG9sZExvY2sobV9tZXNzYWdlRmlsdGVyc0xvY2spOwor
ICAgIGlmIChkaXNwYXRjaE1lc3NhZ2VUb0ZpbHRlcihtZXNzYWdlKSkKKyAgICAgICAgcmV0dXJu
OwogICAgIGlmIChtZXNzYWdlLT5pc1N5bmNNZXNzYWdlKCkpIHsKICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2luY29taW5nU3luY01lc3NhZ2VDYWxsYmFja011dGV4KTsKIApAQCAt
ODE3LDcgKzg0NCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6aGFzSW5jb21pbmdTeW5jTWVzc2FnZSgp
CiAgICAgICAgIGlmIChtZXNzYWdlLT5pc1N5bmNNZXNzYWdlKCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTk1NCw3
ICs5ODEsMTMgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXIm
IGRlY29kZXIpCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKKyAgICBpZiAoIVJ1bkxvb3A6OmlzTWFpbigpKSB7CisgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdl
TmFtZV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+aXNWYWxp
ZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
Pm1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShwcm90ZWN0ZWRUaGlzLCBtZXNzYWdl
TmFtZSk7CisgICAgICAgIH0pOworICAgIH0KIAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC0xMDk5LDYgKzExMzIsMTIgQEAgYm9vbCBDb25uZWN0aW9uOjpkaXNwYXRj
aE1lc3NhZ2VUb1RocmVhZFJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYgbWVzc2EK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdl
VG9GaWx0ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNzYWdlKQoreworICAgIG1fbWVz
c2FnZUZpbHRlcnMuZGlkUmVjZWl2ZU1lc3NhZ2UoKnRoaXMsIG1lc3NhZ2UpOworICAgIHJldHVy
biAhbWVzc2FnZTsKK30KKwogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKQEAgLTExMTAsNiArMTE0OSw5IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNz
YWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlKQogICAgIC8vIFRoZSBtZXNzYWdl
IG1pZ2h0IGhhdmUgYWxyZWFkeSBiZWVuIGRpc3BhdGNoZWQgZnJvbSB0aGUgSVBDIFdvcmtRdWV1
ZSB0byB0aGUgbWFpbiB0aHJlYWQgYnkgdGhlIHRpbWUgdGhlCiAgICAgLy8gY2xpZW50IHJlZ2lz
dGVycyBpdHNlbGYgYXMgYSBXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuIFRvIGFkZHJlc3MgdGhp
cywgd2UgY2hlY2sgYWdhaW4gZm9yIG1lc3NhZ2VzIHJlY2VpdmVycwogICAgIC8vIG9uY2UgdGhl
IG1lc3NhZ2UgYXJyaXZlcyBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgLy8gRklYTUU6IFRoaXMg
aGFzIGEgbWVzc2FnZSBvcmRlcmluZyBidWcgd2hlcmUgdGhlIGVhcmx5IG1lc3NhZ2VzIGRpc3Bh
dGNoZWQgaGVyZSB3b3VsZCBhcnJpdmUKKyAgICAvLyBsYXRlciB0aGFuIGxhdGVyIG1lc3NhZ2Vz
IHRoYXQgZ2V0IGRpc3BhdGNoZWQgYnkgdGhlIG1lc3NhZ2UgcHJvY2Vzc2luZyBxdWV1ZS4gVGhp
cyBzaG91bGQgYmUgZml4ZWQgYnkgbWFraW5nIFdvcmtRdWV1ZVJlY2VpdmVyCisgICAgLy8gYSBt
ZXNzYWdlIGZpbHRlci4KICAgICBpZiAoZGlzcGF0Y2hNZXNzYWdlVG9Xb3JrUXVldWVSZWNlaXZl
cihtZXNzYWdlKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTIyLDcgKzExNjQsNyBAQCB2b2lk
IENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVz
c2FnZSkKICAgICB9CiAKICAgICBtX2luRGlzcGF0Y2hNZXNzYWdlQ291bnQrKzsKLSAgICAKKwog
ICAgIGJvb2wgaXNEaXNwYXRjaGluZ01lc3NhZ2VXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkgPSAo
bWVzc2FnZS0+c2hvdWxkRGlzcGF0Y2hNZXNzYWdlV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoKSA9
PSBTaG91bGREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1JlcGx5OjpZZXMpCiAgICAgICAgIHx8
IChtZXNzYWdlLT5zaG91bGREaXNwYXRjaE1lc3NhZ2VXaGVuV2FpdGluZ0ZvclN5bmNSZXBseSgp
ID09IFNob3VsZERpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVwbHk6Olllc0R1cmluZ1VuYm91
bmRlZElQQyAmJiBVbmJvdW5kZWRTeW5jaHJvbm91c0lQQ1Njb3BlOjpoYXNPbmdvaW5nVW5ib3Vu
ZGVkU3luY0lQQygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmlu
ZGV4IGMwNGFjZjg4MDQ1MTM2YTVkNDA5ZWIwMTc3MDgzZmI2NzZkNDE1NjAuLmRmMDgyNzVlYzAw
ODU1NDlmNGM1MDQ0NDVhMWRhNWM4NWNhZTI2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKQEAgLTI5LDEwICsyOSwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25NZXNzYWdlRmlsdGVyLmgiCiAj
aW5jbHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0yMDYsNyArMjA3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0T25seVNlbmRNZXNzYWdlc0FzRGlzcGF0Y2hXaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseVdoZW5Qcm9jZXNzaW5nU3VjaEFNZXNzYWdlKGJvb2wpOwogICAgIHZv
aWQgc2V0U2hvdWxkRXhpdE9uU3luY01lc3NhZ2VTZW5kRmFpbHVyZShib29sKTsKIAotICAgIC8v
IFRoZSBzZXQgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgb24gdGhlIGNvbm5lY3Rpb24gd29yayBx
dWV1ZSB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCwgCisgICAgLy8gVGhlIHNldCBjYWxs
YmFjayB3aWxsIGJlIGNhbGxlZCBvbiB0aGUgY29ubmVjdGlvbiB3b3JrIHF1ZXVlIHdoZW4gdGhl
IGNvbm5lY3Rpb24gaXMgY2xvc2VkLAogICAgIC8vIGJlZm9yZSBkaWRDYWxsIGlzIGNhbGxlZCBv
biB0aGUgY2xpZW50IHRocmVhZC4gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9u
IGlzIG9wZW5lZC4KICAgICAvLyBJbiB0aGUgZnV0dXJlIHdlIG1pZ2h0IHdhbnQgYSBtb3JlIGdl
bmVyaWMgd2F5IHRvIGhhbmRsZSBzeW5jIG9yIGFzeW5jIG1lc3NhZ2VzIGRpcmVjdGx5CiAgICAg
Ly8gb24gdGhlIHdvcmsgcXVldWUsIGZvciBleGFtcGxlIGlmIHdlIHdhbnQgdG8gaGFuZGxlIHRo
ZW0gb24gc29tZSBvdGhlciB0aHJlYWQgd2UgY291bGQgYXZvaWQKQEAgLTIyMCw2ICsyMjEsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFt
ZSwgVGhyZWFkTWVzc2FnZVJlY2VpdmVyKiwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOwog
ICAgIHZvaWQgcmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2VpdmVyKFJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCA9IDApOwogCisgICAgdm9pZCBhZGRNZXNzYWdlRmlsdGVyKE1lc3Nh
Z2VGaWx0ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwKTsKKyAg
ICAvLyBUaGUgcmVtb3ZlZCBtZXNzYWdlIGZpbHRlciBpcyBndWFyYW50ZWVkIHRvIG5vdCByZWNl
aXZlIG1lc3NhZ2VzIGFmdGVyIHRoZSBjYWxsIHJldHVybnMuCisgICAgdm9pZCByZW1vdmVNZXNz
YWdlRmlsdGVyKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOworCiAg
ICAgYm9vbCBvcGVuKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdm9pZCBtYXJrQ3Vy
cmVudGx5RGlzcGF0Y2hlZE1lc3NhZ2VBc0ludmFsaWQoKTsKQEAgLTIzMiwxNCArMjM3LDE0IEBA
IHB1YmxpYzoKICAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9IHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhU
JiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNl
bmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5
LgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRp
YXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8
V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOyAvLyBNYWluIHRocmVhZCBvbmx5
LgotICAgIAorCiAgICAgLy8gVGhyZWFkLXNhZmUuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgQywgdHlwZW5hbWUgVT4KICAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYg
bWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3Rp
bmF0aW9uSUQgPSB7IH0sIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkK
ICAgICB7CiAgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseTxULCBDPihXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBz
ZW5kT3B0aW9ucyk7CiAgICAgfQotICAgIAorCiAgICAgLy8gVGhyZWFkLXNhZmUuCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2Us
IE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+
IHNlbmRPcHRpb25zID0geyB9KQpAQCAtMjUzLDcgKzI1OCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBzZW5kU3luYzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5
KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwog
ICAgIH0KLSAgICAKKwogICAgIC8vIE1haW4gdGhyZWFkIG9ubHkuCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAgICBib29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5KE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBP
cHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pCkBAIC0yOTksMTkg
KzMwNCwyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rp
bmcoKSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZzsgfQog
I2VuZGlmCiAKKyAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KKyAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKIHByaXZhdGU6
CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2VydmVyLCBDbGllbnQmKTsKICAg
ICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyKTsKICAgICB2b2lkIHBsYXRmb3Jt
SW52YWxpZGF0ZSgpOwogCiAgICAgYm9vbCBpc0luY29taW5nTWVzc2FnZXNUaHJvdHRsaW5nRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbmNvbWluZ01lc3NhZ2VzVGhyb3R0bGVyOyB9Ci0g
ICAgCisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gd2FpdEZvck1lc3NhZ2UoTWVzc2Fn
ZU5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0
PFdhaXRGb3JPcHRpb24+KTsKLSAgICAKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiB3
YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lc3NhZ2VOYW1lLCBTZWNv
bmRzIHRpbWVvdXQsIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4pOwogCiAgICAgYm9vbCBkaXNw
YXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYp
OwogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcihzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4mKTsKKyAgICBib29sIGRpc3BhdGNoTWVzc2FnZVRvRmlsdGVyKHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiYpOwogCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBjb25uZWN0aW9uIHdv
cmsgcXVldWUuCiAgICAgdm9pZCBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPik7CkBAIC0zMjUsMTQgKzMzMywxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Vu
ZE91dGdvaW5nTWVzc2FnZXMoKTsKICAgICBib29sIHNlbmRPdXRnb2luZ01lc3NhZ2Uoc3RkOjp1
bmlxdWVfcHRyPEVuY29kZXI+KTsKICAgICB2b2lkIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwotICAg
IAorCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBsaXN0ZW5lciB0aHJlYWQuCiAgICAgdm9pZCBkaXNw
YXRjaE9uZUluY29taW5nTWVzc2FnZSgpOwogICAgIHZvaWQgZGlzcGF0Y2hJbmNvbWluZ01lc3Nh
Z2VzKCk7CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShEZWNvZGVyJik7CiAgICAgdm9pZCBkaXNwYXRj
aFN5bmNNZXNzYWdlKERlY29kZXImKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKICAgICB2b2lkIGRpZEZhaWxUb1NlbmRTeW5jTWVzc2Fn
ZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkLgpAQCAtMzg4LDYgKzM5
NSw5IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwID0gSGFz
aE1hcDxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+LCBSZWZQdHI8VGhyZWFkTWVzc2FnZVJl
Y2VpdmVyPj47CiAgICAgVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwIG1fdGhyZWFkTWVzc2FnZVJl
Y2VpdmVyczsKIAorICAgIExvY2sgbV9tZXNzYWdlRmlsdGVyc0xvY2s7CisgICAgRGVzdGluYXRp
b25NZXNzYWdlRmlsdGVyIG1fbWVzc2FnZUZpbHRlcnM7CisKICAgICB1bnNpZ25lZCBtX2luU2Vu
ZFN5bmNDb3VudDsKICAgICB1bnNpZ25lZCBtX2luRGlzcGF0Y2hNZXNzYWdlQ291bnQ7CiAgICAg
dW5zaWduZWQgbV9pbkRpc3BhdGNoTWVzc2FnZU1hcmtlZERpc3BhdGNoV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHlDb3VudDsKQEAgLTQwNCw3ICs0MTQsNyBAQCBwcml2YXRlOgogICAgIC8vIE91dGdv
aW5nIG1lc3NhZ2VzLgogICAgIExvY2sgbV9vdXRnb2luZ01lc3NhZ2VzTXV0ZXg7CiAgICAgRGVx
dWU8c3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+PiBtX291dGdvaW5nTWVzc2FnZXM7Ci0gICAgCisK
ICAgICBDb25kaXRpb24gbV93YWl0Rm9yTWVzc2FnZUNvbmRpdGlvbjsKICAgICBMb2NrIG1fd2Fp
dEZvck1lc3NhZ2VNdXRleDsKIApAQCAtNTA2LDcgKzUxNiw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6
c2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRP
cHRpb24+CiAKICAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPEVuY29kZXI+KFQ6Om5hbWUo
KSwgZGVzdGluYXRpb25JRCk7CiAgICAgKmVuY29kZXIgPDwgbWVzc2FnZS5hcmd1bWVudHMoKTsK
LSAgICAKKwogICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0
aW9ucyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggODBh
MGY3NWM3MDU3MmJmNGMyNDg1MjZmZWQyZmVmYjA5N2NkYzhmOS4uNGRlMDUwOThjNDYzMmFkNDVm
NGU4NTNmNjdlOWVlM2U3NzEzNmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5jcHAKQEAgLTkwLDYgKzkwLDE3IEBAIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgQ29uc3RydWN0V2l0aG91dEhlYWRlCiAgICAgICAg
IG1hcmtJbnZhbGlkKCk7CiB9CiAKK0RlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogc3Ry
ZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICA6IG1f
YnVmZmVyIHsgc3RyZWFtIH0KKyAgICAsIG1fYnVmZmVyUG9zIHsgbV9idWZmZXIgfQorICAgICwg
bV9idWZmZXJFbmQgeyBtX2J1ZmZlciArIHN0cmVhbVNpemUgfQorICAgICwgbV9idWZmZXJEZWFs
bG9jYXRvcihbXSAoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9KQorICAgICwgbV9kZXN0aW5h
dGlvbklEKGRlc3RpbmF0aW9uSUQpCit7CisgICAgaWYgKCFkZWNvZGUobV9tZXNzYWdlTmFtZSkp
CisgICAgICAgIHJldHVybjsKK30KKwogRGVjb2Rlcjo6fkRlY29kZXIoKQogewogICAgIEFTU0VS
VChtX2J1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggNjY5ODVi
YzM4N2Q3NDM5MTM3MDFiMTE3YjkxODAwYjlhMjc3MWFiOC4uYjNjNmFjOGEyZDVhY2JhMmMyMTUy
OGRmZWIxOGM2NDE1Y2VkZDIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApA
QCAtNTEsNiArNTEsNyBAQCBjbGFzcyBEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVf
dCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJik7CiAgICAgZXhwbGljaXQgRGVjb2Rlcihjb25z
dCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxv
Y2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJik7Cisg
ICAgRGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1TaXplLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEKTsKICAgICB+RGVjb2RlcigpOwogCiAgICAgRGVjb2Rlcihjb25z
dCBEZWNvZGVyJikgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGVzdGluYXRpb25NZXNzYWdlRmlsdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzVkMDIyZDBl
MGFiZGQ1NDM5OWE5MzRjNDgwOTZkZjk0ODUxNGUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVzdGluYXRpb25NZXNzYWdlRmlsdGVyLmNwcApAQCAtMCww
ICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRl
c3RpbmF0aW9uTWVzc2FnZUZpbHRlci5oIgorCituYW1lc3BhY2UgSVBDIHsKKwordm9pZCBEZXN0
aW5hdGlvbk1lc3NhZ2VGaWx0ZXI6OmFkZEZpbHRlcihNZXNzYWdlRmlsdGVyJiBmaWx0ZXIsIFJl
Y2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAg
YXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5h
bWUpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBBU1NFUlQoIW1fZmlsdGVycy5jb250YWlucyhrZXkp
KTsKKyAgICBtX2ZpbHRlcnMuYWRkKGtleSwgJmZpbHRlcik7Cit9CisKK3ZvaWQgRGVzdGluYXRp
b25NZXNzYWdlRmlsdGVyOjpyZW1vdmVGaWx0ZXIoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWly
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAg
IEFTU0VSVChtX2ZpbHRlcnMuY29udGFpbnMoa2V5KSk7CisgICAgbV9maWx0ZXJzLnJlbW92ZShr
ZXkpOworfQorCit2b2lkIERlc3RpbmF0aW9uTWVzc2FnZUZpbHRlcjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNz
YWdlKQoreworICAgIGlmIChtX2ZpbHRlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdl
LT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCAwKTsKKyAgICBpZiAoYXV0byBmaWx0ZXIgPSBtX2Zp
bHRlcnMuZ2V0KGtleSkpCisgICAgICAgIGZpbHRlci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgbWVzc2FnZSk7CisgICAgaWYgKCFtZXNzYWdlKQorICAgICAgICByZXR1cm47CisgICAg
a2V5LnNlY29uZCA9IG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKTsKKyAgICBpZiAoIWtleS5zZWNv
bmQpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0byBmaWx0ZXIgPSBtX2ZpbHRlcnMuZ2V0
KGtleSkpCisgICAgICAgIGZpbHRlci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVz
c2FnZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rl
c3RpbmF0aW9uTWVzc2FnZUZpbHRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVz
dGluYXRpb25NZXNzYWdlRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdjZjVkZDFkY2M4OWVlYjRmMmQw
NDFiNDJlNjNiYmViZmJkMGNhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0Rlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRl
ICJNZXNzYWdlRmlsdGVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNl
IElQQyB7CisKK2VudW0gY2xhc3MgUmVjZWl2ZXJOYW1lIDogdWludDhfdDsKKworY2xhc3MgRGVz
dGluYXRpb25NZXNzYWdlRmlsdGVyIGZpbmFsIDogcHVibGljIE1lc3NhZ2VGaWx0ZXIgeworcHVi
bGljOgorICAgIERlc3RpbmF0aW9uTWVzc2FnZUZpbHRlcigpID0gZGVmYXVsdDsKKyAgICB+RGVz
dGluYXRpb25NZXNzYWdlRmlsdGVyKCkgZmluYWwgPSBkZWZhdWx0OworCisgICAgc3RhdGljIGJv
b2wgaXNWYWxpZE1lc3NhZ2UoY29uc3QgRGVjb2RlciYgbWVzc2FnZSkKKyAgICB7CisgICAgICAg
cmV0dXJuIEZpbHRlcnNNYXA6OmlzVmFsaWRLZXkoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8
dWludDhfdD4obWVzc2FnZS5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCBtZXNzYWdlLmRlc3RpbmF0
aW9uSUQoKSkpOworICAgIH0KKworICAgIC8vIEFkZHMgYSB3aWxkY2FyZCBmaWx0ZXIgaWYgZGVz
dGluYXRpb25JRCA9PSAwLgorICAgIHZvaWQgYWRkRmlsdGVyKE1lc3NhZ2VGaWx0ZXImLCBSZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIHZvaWQgcmVtb3ZlRmlsdGVy
KFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisKKyAgICAvLyBNZXNzYWdl
RmlsdGVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvbm5lY3Rpb24m
LCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mKSBmaW5hbDsKK3ByaXZhdGU6CisgICAgdXNpbmcg
RmlsdGVyc01hcCA9IEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90PiwgTWVzc2Fn
ZUZpbHRlcio+OworICAgIEZpbHRlcnNNYXAgbV9maWx0ZXJzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNz
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKaW5kZXgg
NDEyOWQ0ZTJiNDlkNWM4ZmM0MWEyZDY1NGFkY2Q4OWU4NmM2MzdmNi4uNTlkODM5NmU1ZDg4ZGU4
ZmVhMGRiMTc1YTI2YTAxNDQ3NGI0ZDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0hhbmRsZU1lc3NhZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTY0LDYgKzE2NSwyOCBAQCB2b2lkIGhh
bmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBEZWNvZGVyJiBkZQogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihjb25uZWN0aW9uLCBXVEZN
b3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5j
dGlvbik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1G
Pgordm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2UmIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24p
Cit7CisgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzeW5jUmVxdWVzdElEKSB8fCAhc3luY1JlcXVlc3RJRCkgeworICAgICAgICBkZWNvZGVy
Lm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBPcHRpb25hbDx0
eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3VtZW50
czsKKyAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKKyAgICBpZiAoIWFyZ3VtZW50cykgeworICAg
ICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbc3luY1JlcXVl
c3RJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJncykg
bXV0YWJsZSB7CisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoc3luY1JlcXVlc3RJ
RCwgYXJncy4uLik7CisgICAgfTsKKyAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZSgqYXJn
dW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOwor
fQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4KIHZvaWQg
aGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29k
ZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmlsdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9NZXNzYWdlRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RlOTYzNTY4MDQzMTRlNTA1ZDliOTJhNWM2
ZThkZDJjNDUxYjcyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VGaWx0ZXIuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBDb25uZWN0aW9uOworY2xhc3Mg
RGVjb2RlcjsKKworY2xhc3MgTWVzc2FnZUZpbHRlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
TWVzc2FnZUZpbHRlcigpID0gZGVmYXVsdDsKKyAgICAvLyBGaWx0ZXIgY29uc3VtZXMgdGhlIG1l
c3NhZ2UgaWYgaXQgYWRvcHRzIHRoZSBkZWNvZGVyLgorICAgIC8vIENhbGxlZCB3aXRoIENvbm5l
Y3Rpb24gbWVzc2FnZSBmaWx0ZXIgbG9jayBoZWxkLgorICAgIC8vIE1heSBiZSBjYWxsZWQgZnJv
bSBtdWx0aXBsZSB0aHJlYWRzLgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShD
b25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JikgPSAwOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TZW1h
cGhvcmVIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NlbWFwaG9yZUhhbmRs
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRmNTlhNzQ0YWI5N2JlZTNkNDRhODk0YmIwNDE0MTJhMjQ2M2E1MzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TZW1hcGhvcmVI
YW5kbGUuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBJUEMgeworCisjaWYgUExBVEZPUk0oQ09DT0EpCit1c2luZyBTZW1hcGhv
cmVIYW5kbGUgPSBNYWNoU2VuZFJpZ2h0OworI2Vsc2UKKy8vIFVuaW1wbGVtZW50ZWQuCit1c2lu
ZyBTZW1hcGhvcmVIYW5kbGUgPSBpbnQ7CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lMDBmMmE2MTFhN2U2YWQ3Y2VlNzQ0MTY4ZDBmN2E5ZmU4Njk4MzYxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5j
cHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIHNpemVfdCBzaXplKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24p
CisgICAgLCBtX2J1ZmZlcihzaXplKQoreworICAgIC8vIFJlYWQgc3RhcnRzIGZyb20gMCB3aXRo
IGxpbWl0IG9mIDAgYW5kIHJlYWRlciBzbGVlcGluZy4KKyAgICBzaGFyZWRTZW5kZXJPZmZzZXQo
KS5zdG9yZShTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xl
ZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICAgIC8vIFdyaXRlIHN0YXJ0
cyBmcm9tIDAgd2l0aCBhIGxpbWl0IG9mIHRoZSB3aG9sZSBidWZmZXIuCisgICAgc2hhcmVkUmVj
ZWl2ZXJPZmZzZXQoKS5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30KKwor
dm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZXRXYWtlVXBIYW5kbGUoSVBDOjpTZW1hcGhv
cmVIYW5kbGUmJiBoYW5kbGUpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBT
ZW1hcGhvcmUgPSBNYWNoU2VtYXBob3JlKFdURk1vdmUoaGFuZGxlKSk7CisjZW5kaWYKKyAgICB3
YWtlVXBSZWNlaXZlcigpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Ondha2VV
cFJlY2VpdmVyKCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAobV93YWtlVXBTZW1h
cGhvcmUpCisgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLT5zaWduYWwoKTsKKyNlbmRpZgorfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25u
ZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJhYTNjMmM5NWU3NjFjOWU5MzY0YTQ1NTAwZTUzYzI4OTRh
ZTI2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDI0MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgor
I2luY2x1ZGUgIlNlbWFwaG9yZUhhbmRsZS5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgorI2luY2x1ZGUg
PHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1l
c3BhY2UgSVBDIHsKKworLy8gQSBtZXNzYWdlIHN0cmVhbSBpcyBhIGhhbGYtZHVwbGV4IHR3by13
YXkgc3RyZWFtIG9mIG1lc3NhZ2VzIHRvIGEgYmV0d2VlbiBhIHNlbmRlciBhbmQgdGhlCisvLyBk
ZXN0aW5hdGlvbiByZWNlaXZlci4KKy8vCisvLyBTdHJlYW1DbGllbnRDb25uZWN0aW9uIGNhbiBz
ZW5kIG1lc3NhZ2VzIGFuZCByZWNlaXZlIHN5bmNocm9ub3VzIHJlcGxpZXMKKy8vIHRocm91Z2gg
dGhpcyBtZXNzYWdlIHN0cmVhbSBvciB0aHJvdWdoIElQQzo6Q29ubmVjdGlvbi4KKy8vCisvLyBU
aGUgZGVzdGluYXRpb24gcmVjZWl2ZXIgd2lsbCByZWNlaXZlIG1lc3NhZ2VzIGluIG9yZGVyIF9m
b3IgdGhlIGRlc3RpbmF0aW9uIG1lc3NhZ2VzXy4KKy8vIFRoZSB3aG9sZSBJUEM6OkNvbm5lY3Rp
b24gbWVzc2FnZSBvcmRlciBpcyBub3QgcHJlc2VydmVkLgorCitjbGFzcyBTdHJlYW1DbGllbnRD
b25uZWN0aW9uIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJlYW1DbGllbnRD
b25uZWN0aW9uKTsKK3B1YmxpYzoKKyAgICBTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rp
b24mLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBz
dHJlYW1CdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIHZvaWQgc2V0V2FrZVVwSGFu
ZGxlKElQQzo6U2VtYXBob3JlSGFuZGxlJiYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRl
c3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKKyAgICB1c2luZyBTZW5kU3luY1Jlc3Vs
dCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+CisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIE9i
amVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgU2Vj
b25kcyB0aW1lb3V0KTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgU3BhbiB7CisgICAgICAgIHVp
bnQ4X3QqIGRhdGE7CisgICAgICAgIHNpemVfdCBzaXplOworICAgIH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VTaXplID0gU3RyZWFtQ29ubmVjdGlvbkVuY29k
ZXI6Om1pbmltdW1NZXNzYWdlU2l6ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNz
YWdlQWxpZ25tZW50ID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1lc3NhZ2VBbGlnbm1lbnQ7
CisgICAgYm9vbCB0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIE1vbm90b25pY1RpbWUgdGltZW91dCk7CisgICAgdm9pZCBzZW5kUHJvY2Vzc091dE9m
U3RyZWFtTWVzc2FnZShTcGFuJiYpOworCisgICAgT3B0aW9uYWw8U3Bhbj4gdHJ5QWNxdWlyZShN
b25vdG9uaWNUaW1lIHRpbWVvdXQpOworICAgIGVudW0gY2xhc3MgV2FrZVVwUmVjZWl2ZXIgOiBi
b29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcworICAgIH07CisgICAgV2FrZVVwUmVjZWl2
ZXIgcmVsZWFzZShzaXplX3Qgd3JpdGVTaXplKTsKKyAgICB2b2lkIHdha2VVcFJlY2VpdmVyKCk7
CisKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7Cisg
ICAgc2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAgICBzaXplX3Qg
Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7CisKKyAgICBzaXplX3Qg
d3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci53cmFwT2Zm
c2V0KG9mZnNldCk7IH0KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9mZnNldCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0
LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9CisgICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFNlbmRl
ck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9mZnNldCgpOyB9CisgICAgQXRvbWlj
PHNpemVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIucmVjZWl2
ZXJPZmZzZXQoKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5kYXRhKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5kYXRhU2l6ZSgpOyB9CisKKyAgICBDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247CisgICAgdWlu
dDY0X3QgbV9jdXJyZW50RGVzdGluYXRpb25JRCB7IDAgfTsKKworICAgIHNpemVfdCBtX3NlbmRl
ck9mZnNldCB7IDAgfTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIG1fYnVmZmVyOworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIE9wdGlvbmFsPE1hY2hTZW1hcGhvcmU+IG1fd2FrZVVwU2Vt
YXBob3JlOworI2VuZGlmCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgor
Ym9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVu
dGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBzdGF0aWNf
YXNzZXJ0KCFUOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CisgICAgTW9ub3RvbmljVGlt
ZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7CisgICAg
aWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKGRlc3RpbmF0aW9uSUQudG9VSW50NjQo
KSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gc3Bh
biA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4pCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB7CisgICAgICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG1l
c3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBzcGFuLT5kYXRhLCBzcGFuLT5zaXplIH07CisgICAg
ICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpKSB7CisgICAgICAg
ICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2UobWVzc2FnZUVuY29kZXIuc2l6ZSgpKTsK
KyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAgICAgICAgICAgICB3YWtlVXBSZWNlaXZlcigpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgc2VuZFByb2Nl
c3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOworICAgIGlmICghbV9jb25uZWN0
aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IFN0cmVhbUNs
aWVudENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+
IGRlc3RpbmF0aW9uSUQsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIFNlY29uZHMgdGltZW91
dCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KFQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgbm90IHN5bmMh
Iik7CisgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjpu
b3coKSArIHRpbWVvdXQ7CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKGRl
c3RpbmF0aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKGFic29sdXRlVGltZW91dCk7CisgICAg
aWYgKCFzcGFuKQorICAgICAgICByZXR1cm4geyB9OworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
c2VuZCB0aHJvdWdoIHN0cmVhbS4KKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHJlY2VpdmUgdGhy
b3VnaCBzdHJlYW0uCisgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgq
c3BhbikpOworICAgIGF1dG8gcmVzdWx0ID0gbV9jb25uZWN0aW9uLnNlbmRTeW5jKFdURk1vdmUo
bWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0KTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShyZXN1bHQpOworfQorCitpbmxpbmUgYm9vbCBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjp0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0KQoreworICAgIGlmIChkZXN0aW5hdGlv
bklEID09IG1fY3VycmVudERlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNv
ZGVyIHsgTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQsIHNwYW4tPmRhdGEsIHNw
YW4tPnNpemUgfTsKKyAgICBpZiAoIShlbmNvZGVyIDw8IGRlc3RpbmF0aW9uSUQpKSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBTaXplIG9mIHRoZSBtaW5pbXVtIGFsbG9jYXRp
b24gaXMgaW5jb3JyZWN0LiBMaWtlbHkgYW4gYWxpZ25tZW50IGlzc3VlLgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShlbmNvZGVy
LnNpemUoKSk7CisgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpXYWtlVXBSZWNlaXZlcjo6WWVzKQorICAgICAgICB3YWtlVXBSZWNlaXZlcigpOworICAgIG1f
Y3VycmVudERlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgIHJldHVybiB0cnVlOwor
fQorCitpbmxpbmUgdm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9m
U3RyZWFtTWVzc2FnZShTcGFuJiYgc3BhbikKK3sKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ciBlbmNvZGVyIHsgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UsIHNwYW4u
ZGF0YSwgc3Bhbi5zaXplIH07CisgICAgLy8gTm90IG5vdGlmeWluZyBvbiB3YWtlIHVwIHNpbmNl
IHRoZSBvdXQtb2Ytc3RyZWFtIG1lc3NhZ2Ugd2lsbCBkbyB0aGF0LgorICAgICh2b2lkKSByZWxl
YXNlKGVuY29kZXIuc2l6ZSgpKTsKK30KK2lubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKE1vbm90b25p
Y1RpbWUgdGltZW91dCkKK3sKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNpemVfdCBzZW5kZXJM
aW1pdCA9IGNsYW1wZWRMaW1pdChzaGFyZWRSZWNlaXZlck9mZnNldCgpLmxvYWQoc3RkOjptZW1v
cnlfb3JkZXJfYWNxdWlyZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1f
c2VuZGVyT2Zmc2V0LCBzZW5kZXJMaW1pdCk7CisgICAgICAgIGlmIChyZXN1bHQuc2l6ZSA8IG1p
bmltdW1NZXNzYWdlU2l6ZSkgeworICAgICAgICAgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKKyAgICAgICAgICAgIGlmIChub3cgPj0gdGltZW91dCkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIHNpemVfdCBvbGRTZW5k
ZXJMaW1pdCA9IHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHNl
bmRlckxpbWl0LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpyZWNlaXZlck9mZnNldFNlbmRlcklz
V2FpdGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3JkZXJf
YWNxX3JlbCk7CisgICAgICAgICAgICBpZiAoc2VuZGVyTGltaXQgPT0gb2xkU2VuZGVyTGltaXQp
CisgICAgICAgICAgICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLndhaXRGb3Io
dGltZW91dCAtIG5vdyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzZW5k
ZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChvbGRTZW5kZXJMaW1pdCk7CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKKyAgICAg
ICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisjZW5kaWYKKyAg
ICAgICAgfQorICAgICAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXplKQor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVyIFN0
cmVhbUNsaWVudENvbm5lY3Rpb246OnJlbGVhc2Uoc2l6ZV90IHNpemUpCit7CisgICAgc2l6ZSA9
IHN0ZDo6bWF4KHNpemUsIG1pbmltdW1NZXNzYWdlU2l6ZSk7CisgICAgc2l6ZV90IGV4cGVjdGVk
UmVjZWl2ZXJMaW1pdCA9IG1fc2VuZGVyT2Zmc2V0OworICAgIG1fc2VuZGVyT2Zmc2V0ID0gd3Jh
cE9mZnNldChhbGlnbk9mZnNldChtX3NlbmRlck9mZnNldCkgKyBzaXplKTsKKyAgICBBU1NFUlQo
bV9zZW5kZXJPZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICAvLyBJZiB0aGUgcmVjZWl2ZXIgd3Jv
dGUgb3ZlciB0aGUgc2VuZGVyT2Zmc2V0IHdpdGggc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVw
aW5nVGFnLCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgorICAgIHNpemVfdCByZWNlaXZlckxpbWl0
ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkuZXhjaGFuZ2UobV9zZW5kZXJPZmZzZXQsIHN0ZDo6bWVt
b3J5X29yZGVyX2FjcV9yZWwpOworICAgIGlmIChyZWNlaXZlckxpbWl0ICE9IGV4cGVjdGVkUmVj
ZWl2ZXJMaW1pdCkKKyAgICAgICAgcmV0dXJuIFdha2VVcFJlY2VpdmVyOjpZZXM7CisgICAgcmV0
dXJuIFdha2VVcFJlY2VpdmVyOjpObzsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rp
b246OlNwYW4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6YWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxpbWl0KQoreworICAgIEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAg
ICBBU1NFUlQobGltaXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBzaXplX3QgYWxpZ25lZCA9IGFsaWdu
T2Zmc2V0KG9mZnNldCk7CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSAwOworICAgIGlmIChvZmZz
ZXQgPCBsaW1pdCkgeworICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgJiYgYWxpZ25lZCA8
IGxpbWl0KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwg
bGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7Cisg
ICAgfQorICAgIHJldHVybiB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30KKwor
aW5saW5lIHNpemVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzaXplKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsaW1pdCkKK3sKKyAgICBpZiAoIWxpbWl0KQorICAgICAgICByZXR1cm4gZGF0YVNp
emUoKSAtIDEgLSBvZmZzZXQ7CisgICAgaWYgKGxpbWl0IDw9IG9mZnNldCkKKyAgICAgICAgcmV0
dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7CisgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0IC0gMTsK
K30KKworaW5saW5lIHNpemVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjbGFtcGVkTGltaXQo
c2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdAoreworICAgIEFTU0VSVCh1bnRydXN0ZWRMaW1p
dCA8IChkYXRhU2l6ZSgpIC0gMSkpOworICAgIHJldHVybiBzdGQ6Om1pbih1bnRydXN0ZWRMaW1p
dCwgZGF0YVNpemUoKSAtIDEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlMDJkOGI4
ZjMwZGJlY2MzYmMwYjljOGQzZTI1NTFmZWFlZjc2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApAQCAtMCww
ICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBGZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitzdGF0aWMgUmVmPFdlYktpdDo6U2hhcmVkTWVt
b3J5PiBjcmVhdGVNZW1vcnkoc2l6ZV90IHNpemUpCit7CisgICAgYXV0byBtZW1vcnkgPSBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZSk7CisgICAgaWYgKCFtZW1vcnkpCisgICAg
ICAgIENSQVNIKCk7CisgICAgcmV0dXJuIG1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpOworfQorCitT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyKHNpemVfdCBtZW1v
cnlTaXplKQorICAgIDogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihjcmVhdGVNZW1vcnkobWVtb3J5
U2l6ZSksIG1lbW9yeVNpemUpCit7Cit9CisKKyNpZiBQTEFURk9STShDT0NPQSkKK1N0cmVhbUNv
bm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVk
TWVtb3J5PiYmIG1lbW9yeSwgc2l6ZV90IG1lbW9yeVNpemUsIE1hY2hTZW1hcGhvcmUmJiBzZW5k
ZXJXYWl0U2VtYXBob3JlKQorICAgIDogbV9kYXRhU2l6ZShtZW1vcnlTaXplIC0gaGVhZGVyU2l6
ZSgpKQorICAgICwgbV9zaGFyZWRNZW1vcnkoV1RGTW92ZShtZW1vcnkpKQorICAgICwgbV9zZW5k
ZXJXYWl0U2VtYXBob3JlKFdURk1vdmUoc2VuZGVyV2FpdFNlbWFwaG9yZSkpCit7Cit9CisjZW5k
aWYKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihSZWY8
V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYgbWVtb3J5LCBzaXplX3QgbWVtb3J5U2l6ZSkKKyAgICA6
IG1fZGF0YVNpemUobWVtb3J5U2l6ZSAtIGhlYWRlclNpemUoKSkKKyAgICAsIG1fc2hhcmVkTWVt
b3J5KFdURk1vdmUobWVtb3J5KSkKK3sKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3RoZXIpID0gZGVm
YXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6flN0cmVhbUNvbm5lY3Rpb25CdWZmZXIo
KSA9IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXImIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3RoZXIpCit7CisgICAg
aWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgIG1fZGF0YVNpemUgPSBvdGhlci5tX2RhdGFT
aXplOworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9IFdURk1vdmUob3RoZXIubV9zaGFyZWRNZW1v
cnkpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBtX3NlbmRlcldhaXRTZW1hcGhvcmUg
PSBXVEZNb3ZlKG90aGVyLm1fc2VuZGVyV2FpdFNlbWFwaG9yZSk7CisjZW5kaWYKKyAgICB9Cisg
ICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpI
YW5kbGUgaGFuZGxlOworICAgIGlmICghbV9zaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5k
bGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpKQorICAgICAg
ICBDUkFTSCgpOworICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxl
IHsgV1RGTW92ZShoYW5kbGUpLCBtX3NoYXJlZE1lbW9yeS0+c2l6ZSgpIH07CisgICAgZW5jb2Rl
ciA8PCBpcGNIYW5kbGU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgZW5jb2RlciA8PCBtX3Nl
bmRlcldhaXRTZW1hcGhvcmUuY3JlYXRlU2VuZFJpZ2h0KCk7CisjZW5kaWYKK30KKworT3B0aW9u
YWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8V2ViS2l0OjpTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZT4gaXBjSGFuZGxlOworICAgIGRlY29kZXIgPj4gaXBjSGFuZGxlOworICAgIGlm
ICghaXBjSGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbWFwaG9yZVNlbmRSaWdodDsK
KyAgICBkZWNvZGVyID4+IHNlbWFwaG9yZVNlbmRSaWdodDsKKyAgICBpZiAoIXNlbWFwaG9yZVNl
bmRSaWdodCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorICAgIGlmIChp
cGNIYW5kbGUtPmRhdGFTaXplIDwgaGVhZGVyU2l6ZSgpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6Om1h
cChpcGNIYW5kbGUtPmhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRXcml0ZSk7CisgICAgaWYgKHNoYXJlZE1lbW9yeS0+c2l6ZSgpIDwgaXBjSGFuZGxlLT5kYXRh
U2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICByZXR1cm4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7IHNoYXJlZE1lbW9yeS5yZWxlYXNl
Tm9uTnVsbCgpLCBpcGNIYW5kbGUtPmRhdGFTaXplLCBNYWNoU2VtYXBob3JlIHsgV1RGTW92ZSgq
c2VtYXBob3JlU2VuZFJpZ2h0KSB9IH07CisjZWxzZQorICAgIHJldHVybiBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyIHsgc2hhcmVkTWVtb3J5LT5yZWxlYXNlTm9uTnVsbCgpLCBpcGNIYW5kbGUtPmRh
dGFTaXplIH07CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1OGQ1ZDBlOWJkZTYy
MDFmOWY3OTYwYjE3MDk2ZDUwMGRkNGI3NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKQEAgLTAsMCArMSwxMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNp
bmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8d3Rm
L2NvY29hL01hY2hTZW1hcGhvcmUuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgSVBDIHsKKworLy8g
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBpcyBhIHNoYXJlZCAiYmktcGFydGl0ZSIgY2lyY3VsYXIg
YnVmZmVyIHN1cHBvcnRpbmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdlcywgc3BlY2lmaWMg
ZGF0YSBhbGlnbm1lbnQgd2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUuCisvLyBTdHJlYW1DbGll
bnRDb25uZWN0aW9uIGFuZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHVzZSBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyIHRvIGNvbW11bmljYXRlLgorLy8KKy8vIFRoZSAiYmktcGFydGl0ZSIgaXMgaGVy
ZSB0byBtZWFuIHRoYXQgd3JpdGVzIGFuZCByZWFkcyB0byB0aGUgYnVmZmVyIG11c3QgYmUKKy8v
IGNvbnRpbnVvdXMuCisvLworLy8gVGhlIGNsaWVudCAoc2VuZGVyIG9yIHJlY2VpdmVyKSAiYWNx
dWlyZXMiIHNvbWUgYW1vdW50IG9mIGJ1ZmZlciBkYXRhLiBJZiBidWZmZXIgaGFzIG5vCisvLyBj
YXBhY2l0eSwgYWNxdWlyZSByZXR1cm5zIHdpdGggemVybyBjYXBhY2l0eS4gSWYgYnVmZmVyIGhh
cyBhdCBsZWFzdCBhY3F1aXJlZAorLy8gY2FwYWNpdHksIGFsbCB0aGUgYXZhaWxhYmxlIGNhcGFj
aXR5IGlzIHJldHVybmVkLgorLy8KKy8vIFRoZSBjbGllbnQgInJlbGVhc2VzIiB0aGUgc29tZSBh
bW91bnQgb2YgZGF0YSwgYXQgbGVhc3QgdGhlIGFtb3VudCBhY3F1aXJlZCBidXQgcG90ZW50aWFs
bHkKKy8vIG1vcmUuCisvLworLy8gQm90aCBzZW5kZXIgYW5kIHJlY2VpdmVyIG11c3QgYWNxdWly
ZSBzYW1lIGFtb3VudCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhlIGFjcXVpcmUgc2Vx
dWVuY2UuCisvLyBJZiBzZW5kZXIgYWNxdWlyZXMgWCBhbmQgdGhlbiBZIGFtb3VudCwgcmVjZWl2
ZXIgbXVzdCBkbyB0aGUgc2FtZS4KKy8vCisvLyBUaGUgY2lyY3VsYXIgYnVmZmVyIGhhcyBmb2xs
b3dpbmcgaW1wbGVtZW50YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRoZSBkYXRhIGJldHdlZW4g
W3NlbmRlck9mZnNldCwgcmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9mZnNldCA9PQorLy8g
cmVjZWl2ZXJPZmZzZXQsIHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4KKy8vICogUmVjZWl2ZXIg
b3ducyB0aGUgZGF0YSBiZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVyT2Zmc2V0Wy4KKy8v
ICogVGhlIGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhlIGxh
c3QgdmFsdWUgaXMgcmVzZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZlciBp
cyBmdWxsLiBGSVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBpZgor
Ly8gaXQgd291bGQgdXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9mIHRoZSBob2xlIGFzIHRo
ZSBpbmRpY2F0b3IuIFRoaXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWduZWRTcGFuIGltcGxlbWVu
dGF0aW9uIHRvIHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgorLy8gKiBBbGwgYXRvbWljIHZh
cmlhYmxlIGxvYWRzIGFyZSB1bnRydXN0ZWQsIHNvIHRoZXkncmUgY2xhbXBlZC4gVmlvbGF0aW9u
cyBhcmUgbm90IHJlcG9ydGVkLAorLy8gdGhvdWdoLgorLy8gU2VlIFNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlLgorY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6ZSk7CisgICAgU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOworICAgIH5TdHJl
YW1Db25uZWN0aW9uQnVmZmVyKCk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgb3BlcmF0
b3I9KFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisKKyAgICBzaXplX3Qgd3JhcE9mZnNldChz
aXplX3Qgb2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8PSBkYXRh
U2l6ZSgpKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBkYXRhU2l6ZSgpKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8
c2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQ+CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBhY3F1aXJlU2l6ZSkgY29uc3QKKyAgICB7CisgICAgICAgIG9mZnNldCA9
IHJvdW5kVXBUb011bHRpcGxlT2Y8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0KTsKKyAgICAgICAg
aWYgKG9mZnNldCArIGFjcXVpcmVTaXplID49IGRhdGFTaXplKCkpCisgICAgICAgICAgICBvZmZz
ZXQgPSAwOworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAgIEF0b21pYzxzaXpl
X3Q+JiBzZW5kZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZW5kZXJPZmZzZXQ7IH0KKyAg
ICBBdG9taWM8c2l6ZV90PiYgcmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5yZWNl
aXZlck9mZnNldDsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDx1aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBoZWFkZXJTaXplKCk7IH0K
KyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTaXplOyB9CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgV1RGOjpNYWNoU2VtYXBob3JlJiBzZW5kZXJXYWl0U2VtYXBo
b3JlKCkgeyByZXR1cm4gbV9zZW5kZXJXYWl0U2VtYXBob3JlOyB9CisjZW5kaWYKKworICAgIC8v
IFRhZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpzZW5kZXJPZmZzZXQgd2hlbiByZWNlaXZlciBp
cyBzbGVlcGluZywgZS5nLiBub3QgcnVubmluZy4KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcgPSAxIDw8IDMxOworICAgIC8vIFRh
ZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpyZWNlaXZlck9mZnNldCB3aGVuIHNlbmRlciBpcyB3
YWl0aW5nLCBlLmcuIHdhaXRpbmcgb24KKyAgICAvLyBhIHNlbWFwaG9yZS4KKyAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCByZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGluZ1RhZyA9IDEgPDwg
MzE7CisKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIE9wdGlv
bmFsPFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihSZWY8V2Vi
S2l0OjpTaGFyZWRNZW1vcnk+JiYsIHNpemVfdCBtZW1vcnlTaXplLCBNYWNoU2VtYXBob3JlJiYg
c2VuZGVyV2FpdFNlbWFwaG9yZSk7CisjZW5kaWYKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
KFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiwgc2l6ZV90IG1lbW9yeVNpemUpOworCisgICAg
c3RydWN0IEhlYWRlciB7CisgICAgICAgIEF0b21pYzxzaXplX3Q+IHJlY2VpdmVyT2Zmc2V0Owor
ICAgICAgICAvLyBQYWRkaW5nIHNvIHRoYXQgdGhlIHZhcmlhYmxlcyBtb3N0bHkgYWNjZXNzZWQg
YnkgZGlmZmVyZW50IHByb2Nlc3NlcyBkbyBub3Qgc2hhcmUgYSBjYWNoZSBsaW5lLgorICAgICAg
ICAvLyBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gYXZvaWQgY2FjaGUtbGluZSBpbmR1Y2VkIHJlZHVj
dGlvbiBvZiBwYXJhbGxlbCBhY2Nlc3MuCisgICAgICAgIHVpbnQ2NF90IGNhY2hlTGluZVBhZGRp
bmdbMl07CisgICAgICAgIEF0b21pYzxzaXplX3Q+IHNlbmRlck9mZnNldDsKKyAgICB9OworICAg
IEhlYWRlciYgaGVhZGVyKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8SGVhZGVy
Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBoZWFkZXJTaXplKCkgeyByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2Yoc3RkOjpt
YXhfYWxpZ25fdCk+KHNpemVvZihIZWFkZXIpKTsgfQorCisgICAgc2l6ZV90IG1fZGF0YVNpemUg
eyAwIH07CisgICAgUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBXVEY6Ok1hY2hTZW1hcGhvcmUgbV9zZW5kZXJXYWl0U2Vt
YXBob3JlOworI2VuZGlmCit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTIzMmRlY2Y2Yzc5
M2E0NTc3MTY4ZTk3ZWZiNTFhYWZiMzJmZGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaApAQCAtMCwwICsxLDk2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorCituYW1lc3BhY2UgSVBDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVu
YW1lPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjsKKworLy8gSVBDIGVuY29kZXIgd2hpY2g6CisvLyAg
LSBFbmNvZGVzIHRvIGEgY2FsbGVyIGJ1ZmZlciB3aXRoIGZpeGVkIHNpemUsIGRvZXMgbm90IHJl
c2l6ZSwgc3RvcHMgd2hlbiBzaXplIHJ1bnMgb3V0CisvLyAgLSBEb2VzIG5vdCBpbml0aWFsaXpl
IGFsaWdubWVudCBnYXBzCisvLworY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZmluYWwg
eworcHVibGljOgorICAgIC8vIFN0cmVhbSBtZXNzYWdlIG5lZWRzIHRvIGJlIGF0IGxlYXN0IHNp
emUgb2YgU3RyZWFtU2V0RGVzdGluYXRpb25JRCBtZXNzYWdlLgorICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IHNpemVvZihNZXNzYWdlTmFtZSkgKyBzaXpl
b2YodWludDY0X3QpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1l
bnQgPSBhbGlnbm9mKE1lc3NhZ2VOYW1lKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJ
UENFbmNvZGVyID0gdHJ1ZTsKKworICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyKE1lc3NhZ2VO
YW1lIG1lc3NhZ2VOYW1lLCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1DYXBhY2l0eSkK
KyAgICAgICAgOiBtX2J1ZmZlcihzdHJlYW0pCisgICAgICAgICwgbV9idWZmZXJDYXBhY2l0eShz
dHJlYW1DYXBhY2l0eSkKKyAgICB7CisgICAgICAgICp0aGlzIDw8IG1lc3NhZ2VOYW1lOworICAg
IH0KKworICAgIH5TdHJlYW1Db25uZWN0aW9uRW5jb2RlcigpID0gZGVmYXVsdDsKKworICAgIGJv
b2wgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
LCBzaXplX3QgYWxpZ25tZW50KQorICAgIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclBvaW50ZXIg
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fYnVmZmVy
ICsgbV9lbmNvZGVkU2l6ZSkpOworICAgICAgICBzaXplX3QgbmV3QnVmZmVyUG9pbnRlciA9IHJv
dW5kVXBUb011bHRpcGxlT2YoYWxpZ25tZW50LCBidWZmZXJQb2ludGVyKTsKKyAgICAgICAgaWYg
KG5ld0J1ZmZlclBvaW50ZXIgPCBidWZmZXJQb2ludGVyKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpbnRwdHJfdCBhbGlnbmVkU2l6ZSA9IG1fZW5jb2RlZFNpemUgKyAobmV3
QnVmZmVyUG9pbnRlciAtIGJ1ZmZlclBvaW50ZXIpOworICAgICAgICBpZiAoIXJlc2VydmUoYWxp
Z25lZFNpemUsIHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1aW50
OF90KiBidWZmZXIgPSBtX2J1ZmZlciArIGFsaWduZWRTaXplOworICAgICAgICBtZW1jcHkoYnVm
ZmVyLCBkYXRhLCBzaXplKTsKKyAgICAgICAgbV9lbmNvZGVkU2l6ZSA9IGFsaWduZWRTaXplICsg
c2l6ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYgb3BlcmF0b3I8PChUJiYgdCkKKyAg
ICB7CisgICAgICAgIEFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92
ZV9yZWZlcmVuY2VfdDxUPj4sIHZvaWQ+OjplbmNvZGUoKnRoaXMsIHN0ZDo6Zm9yd2FyZDxUPih0
KSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgQVNTRVJUKGlzVmFsaWQoKSk7IHJldHVybiBtX2VuY29kZWRTaXplOyB9CisgICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJDYXBhY2l0eTsgfQorICAgIG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1ZhbGlkKCk7IH0KK3ByaXZhdGU6CisgICAgYm9v
bCByZXNlcnZlKHNpemVfdCBhbGlnbmVkU2l6ZSwgc2l6ZV90IGFkZGl0aW9uYWxTaXplKQorICAg
IHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBhbGlnbmVkU2l6ZSArIGFkZGl0aW9uYWxTaXplOwor
ICAgICAgICBpZiAoc2l6ZSA8IGFsaWduZWRTaXplIHx8IHNpemUgPiBtX2J1ZmZlckNhcGFjaXR5
KSB7CisgICAgICAgICAgICBtX2J1ZmZlckNhcGFjaXR5ID0gMDsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgdWlu
dDhfdCogbV9idWZmZXI7CisgICAgc2l6ZV90IG1fYnVmZmVyQ2FwYWNpdHk7CisgICAgc2l6ZV90
IG1fZW5jb2RlZFNpemUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTA2ZTEzOTVhMjU5NGJiY2UwYTFiM2UzZWZhNWJmYmIwMjZiMGQ3
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNv
bm5lY3Rpb25Qcm9jZXNzb3IuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3IuaCIK
KworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3I6OlN0cmVhbUNv
bm5lY3Rpb25Qcm9jZXNzb3IoY29uc3QgY2hhciogbmFtZSkKKyAgICA6IG1fbmFtZShuYW1lKQor
eworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3I6OmRpc3BhdGNoKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tl
cihtX2xvY2spOworICAgICAgICBtX2Z1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikp
OworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBz
aHV0ZG93biBub3Qgc3VwcG9ydGVkLgorICAgIH0KKyAgICB3YWtlVXBQcm9jZXNzaW5nVGhyZWFk
KCk7CisKK30KK3ZvaWQgU3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvcjo6YWRkU3RyZWFtQ29ubmVj
dGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbikKK3sKKyAgICB7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9jb25uZWN0aW9ucy5hZGQo
Y29ubmVjdGlvbik7CisgICAgICAgIEFTU0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50ZXJp
bmcgZHVyaW5nIHNodXRkb3duIG5vdCBzdXBwb3J0ZWQuCisgICAgfQorICAgIHdha2VVcFByb2Nl
c3NpbmdUaHJlYWQoKTsKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yOjpyZW1v
dmVTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9u
KQoreworICAgIEFTU0VSVChtX3Byb2Nlc3NpbmdUaHJlYWQpOworICAgIHsKKyAgICAgICAgTG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0
aW9uKTsKKyAgICAgICAgQVNTRVJUKCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJp
bmcgc2h1dGRvd24gbm90IHN1cHBvcnRlZC4KKyAgICB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1D
b25uZWN0aW9uUHJvY2Vzc29yOjpzdG9wKCkKK3sKKyAgICBtX3Nob3VsZFF1aXQgPSB0cnVlOwor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmICghbV9wcm9jZXNzaW5nVGhyZWFkKQorICAgICAg
ICByZXR1cm47CisgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgbV9wcm9jZXNz
aW5nVGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOworICAgIG1fcHJvY2Vzc2luZ1RocmVhZCA9
IG51bGxwdHI7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yOjp3
YWtlVXAoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1fd2FrZVVwU2VtYXBob3JlLnNp
Z25hbCgpOworI2VuZGlmCit9CisKK0lQQzo6U2VtYXBob3JlSGFuZGxlIFN0cmVhbUNvbm5lY3Rp
b25Qcm9jZXNzb3I6Ondha2VVcEhhbmRsZSgpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
cmV0dXJuIG1fd2FrZVVwU2VtYXBob3JlLmNyZWF0ZVNlbmRSaWdodCgpOworI2Vsc2UKKyAgICBy
ZXR1cm4geyB9OworI2VuZGlmCit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvcjo6
d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYg
KG1fcHJvY2Vzc2luZ1RocmVhZCkgeworICAgICAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gdGFzayA9IFt0aGlzXSgpIG11
dGFibGUgeworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICBwcm9jZXNzU3RyZWFtcygp
OworICAgICAgICAgICAgaWYgKG1fc2hvdWxkUXVpdCkgeworICAgICAgICAgICAgICAgIHByb2Nl
c3NTdHJlYW1zKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUud2FpdCgpOworICAgICAgICB9CisgICAgfTsKKyAg
ICBtX3Byb2Nlc3NpbmdUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShtX25hbWUsIFdURk1vdmUodGFz
ayksIFRocmVhZFR5cGU6OkdyYXBoaWNzLCBUaHJlYWQ6OlFPUzo6VXNlckludGVyYWN0aXZlKTsK
KyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3I6OnByb2Nlc3NTdHJl
YW1zKCkKK3sKKyAgICBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRNZXNzYWdlTGltaXQgPSAxMDAw
OworICAgIGJvb2wgaGFzTW9yZVRvUHJvY2VzcyA9IGZhbHNlOworICAgIGRvIHsKKyAgICAgICAg
RGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBmdW5jdGlvbnM7CisgICAgICAgIEhhc2hTZXQ8
UmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPj4gY29ubmVjdGlvbnM7CisgICAgICAgIHsK
KyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgICAg
IGZ1bmN0aW9ucy5zd2FwKG1fZnVuY3Rpb25zKTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb25zID0g
bV9jb25uZWN0aW9uczsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDog
ZnVuY3Rpb25zKQorICAgICAgICAgICAgV1RGTW92ZShmdW5jdGlvbikoKTsKKworICAgICAgICBo
YXNNb3JlVG9Qcm9jZXNzID0gZmFsc2U7CisgICAgICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6
IGNvbm5lY3Rpb25zKQorICAgICAgICAgICAgaGFzTW9yZVRvUHJvY2VzcyB8PSBjb25uZWN0aW9u
LT5kaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKGRlZmF1bHRNZXNzYWdlTGltaXQpID09IFN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpIYXNNb3JlTWVzc2FnZXM7CisgICAgfSB3aGlsZSAoaGFzTW9y
ZVRvUHJvY2Vzcyk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTNmNGVlYzVjNDEz
NzYzNTE5ZmM3OWE3YzdjNDBhNGIzZWY2MzU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvci5oCkBAIC0wLDAgKzEs
NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNlbWFwaG9yZUhh
bmRsZS5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxh
dG9taWM+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlz
cGF0Y2hlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xvY2su
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitjbGFz
cyBTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0
Y2hlciB7CitwdWJsaWM6CisgICAgU3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvcihjb25zdCBjaGFy
Kik7CisgICAgflN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3IoKSA9IGRlZmF1bHQ7CisgICAgdm9p
ZCBhZGRTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJik7CisgICAg
dm9pZCByZW1vdmVTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJik7
CisKKyAgICB2b2lkIGRpc3BhdGNoKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIHN0b3AoKTsKKworICAgIHZvaWQgd2FrZVVwKCk7CisKKyAgICBTZW1hcGhvcmVIYW5k
bGUgd2FrZVVwSGFuZGxlKCk7Citwcml2YXRlOgorICAgIHZvaWQgd2FrZVVwUHJvY2Vzc2luZ1Ro
cmVhZCgpOworICAgIHZvaWQgcHJvY2Vzc1N0cmVhbXMoKTsKKworICAgIGNvbnN0IGNoYXIqIGNv
bnN0IG1fbmFtZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBNYWNoU2VtYXBob3JlIG1fd2Fr
ZVVwU2VtYXBob3JlOworI2VuZGlmCisgICAgUmVmUHRyPFRocmVhZD4gbV9wcm9jZXNzaW5nVGhy
ZWFkOworCisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9zaG91bGRRdWl0IHsgZmFsc2UgfTsKKwor
ICAgIExvY2sgbV9sb2NrOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fZnVuY3Rpb25z
OworICAgIEhhc2hTZXQ8UmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPj4gbV9jb25uZWN0
aW9uczsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5YjhhZTdhY2ZjODAwYzYwOWM3
MmQ1NjI1ZjQ5MDVmMWM1NGI5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTI1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTdHJlYW1D
b25uZWN0aW9uUHJvY2Vzc29yLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZTo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoQ29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSwgU3RyZWFtQ29ubmVjdGlv
blByb2Nlc3NvciYgcHJvY2Vzc29yKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisg
ICAgLCBtX3Byb2Nlc3Nvcihwcm9jZXNzb3IpCisgICAgLCBtX2J1ZmZlcihXVEZNb3ZlKHN0cmVh
bSkpCit7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2
aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpCit7CisgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlRmlsdGVyKCp0aGlzLCBy
ZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIG1fcHJvY2Vzc29yLmFkZFN0cmVhbUNv
bm5lY3Rpb24oKnRoaXMpOworfQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpz
dG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlRmls
dGVyKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgbV9wcm9jZXNzb3IucmVtb3Zl
U3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OmRpZFJlY2VpdmVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4mIG1lc3NhZ2UpCit7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOworICAgICAgICBtX291dE9mU3RyZWFtTWVzc2Fn
ZXMuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAgIH0KKyAgICBtX3Byb2Nlc3Nvci53YWtl
VXAoKTsKK30KKworT3B0aW9uYWw8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4+IFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUoKQoreworICAgIHNpemVfdCByZWNl
aXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9h
Y3F1aXJlKTsKKyAgICBpZiAocmVjZWl2ZXJMaW1pdCA9PSBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3JlY2VpdmVyT2Zmc2V0
LCByZWNlaXZlckxpbWl0KTsKKyAgICBpZiAocmVzdWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNp
emUpIHsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNlbmRlck9mZnNldCgpLmNvbXBh
cmVFeGNoYW5nZVN0cm9uZyhyZWNlaXZlckxpbWl0LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpz
ZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9y
ZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICBBU1NFUlQoIShyZWNlaXZl
ckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1Ns
ZWVwaW5nVGFnKSk7CisgICAgICAgIHJlY2VpdmVyTGltaXQgPSBjbGFtcGVkTGltaXQocmVjZWl2
ZXJMaW1pdCk7CisgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fcmVjZWl2ZXJPZmZzZXQs
IHJlY2VpdmVyTGltaXQpOworICAgIH0KKworICAgIGlmIChyZXN1bHQuc2l6ZSA+PSBtaW5pbXVt
TWVzc2FnZVNpemUpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6cmVsZWFzZShzaXpl
X3QgcmVhZFNpemUpCit7CisgICAgQVNTRVJUKHJlYWRTaXplKTsKKyAgICByZWFkU2l6ZSA9IHN0
ZDo6bWF4KHJlYWRTaXplLCBtaW5pbXVtTWVzc2FnZVNpemUpOworICAgIHNpemVfdCByZWNlaXZl
ck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9yZWNlaXZlck9mZnNldCkgKyByZWFk
U2l6ZSk7CisgICAgc2l6ZV90IG9sZFJlY2VpdmVyT2Zmc2V0ID0gc2hhcmVkUmVjZWl2ZXJPZmZz
ZXQoKS5leGNoYW5nZShyZWNlaXZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7
CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAvLyBJZiB0aGUgc2VuZGVyIHdyb3RlIG92ZXIg
cmVjZWl2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBzZW5kZXIgaXMgd2FpdGluZy4KKyAgICBpZiAo
b2xkUmVjZWl2ZXJPZmZzZXQgIT0gbV9yZWNlaXZlck9mZnNldCkKKyAgICAgICAgbV9idWZmZXIu
c2VuZGVyV2FpdFNlbWFwaG9yZSgpLnNpZ25hbCgpOworI2VuZGlmCisKKyAgICBtX3JlY2VpdmVy
T2Zmc2V0ID0gcmVjZWl2ZXJPZmZzZXQ7Cit9CisKK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
OjpTcGFuIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjphbGlnbmVkU3BhbihzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgQVNTRVJUKG9mZnNldCA8IGRhdGFTaXplKCkpOwor
ICAgIEFTU0VSVChsaW1pdCA8IGRhdGFTaXplKCkpOworICAgIHNpemVfdCBhbGlnbmVkID0gYWxp
Z25PZmZzZXQob2Zmc2V0KTsKKyAgICBzaXplX3QgcmVzdWx0U2l6ZSA9IDA7CisgICAgaWYgKG9m
ZnNldCA8IGxpbWl0KSB7CisgICAgICAgIGlmIChvZmZzZXQgPD0gYWxpZ25lZCAmJiBhbGlnbmVk
IDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7
CisgICAgfSBlbHNlIGlmIChvZmZzZXQgPiBsaW1pdCkgeworICAgICAgICBpZiAoYWxpZ25lZCA+
PSBvZmZzZXQgfHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNp
emUoYWxpZ25lZCwgbGltaXQpOworICAgIH0KKyAgICByZXR1cm4geyBkYXRhKCkgKyBhbGlnbmVk
LCByZXN1bHRTaXplIH07Cit9CisKK3NpemVfdCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6
c2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgaWYgKG9mZnNldCA8PSBs
aW1pdCkKKyAgICAgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0OworICAgIHJldHVybiBkYXRhU2l6
ZSgpIC0gb2Zmc2V0OworfQorCitzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmNs
YW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHVu
dHJ1c3RlZExpbWl0IDwgKGRhdGFTaXplKCkgLSAxKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHVu
dHJ1c3RlZExpbWl0LCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
OWM5ZTljNDQ2OWYxMjc4MmI2ODA3OTNhY2YwMzllNzBmYjdiZmRlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCkBA
IC0wLDAgKzEsMjgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIK
KyNpbmNsdWRlICJNZXNzYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisj
aW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworY2xhc3MgU3RyZWFtQ29ubmVjdGlvblBy
b2Nlc3NvcjsKKworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+LCBwcm90ZWN0ZWQg
TWVzc2FnZUZpbHRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2UpOworcHVibGljOgorICAgIH5TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSgp
IG92ZXJyaWRlID0gZGVmYXVsdDsKKworICAgIENvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJl
dHVybiBtX2Nvbm5lY3Rpb247IH0KKworICAgIGVudW0gRGlzcGF0Y2hSZXN1bHQgOiBib29sIHsK
KyAgICAgICAgSGFzTm9NZXNzYWdlcywKKyAgICAgICAgSGFzTW9yZU1lc3NhZ2VzCisgICAgfTsK
KyAgICB2aXJ0dWFsIERpc3BhdGNoUmVzdWx0IGRpc3BhdGNoU3RyZWFtTWVzc2FnZXMoc2l6ZV90
IG1lc3NhZ2VMaW1pdCkgPSAwOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgorICAgIHZvaWQgc2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVu
dHMmJi4uLik7CisKK3Byb3RlY3RlZDoKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShJ
UEM6OkNvbm5lY3Rpb24mLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYsIFN0cmVhbUNvbm5lY3Rp
b25Qcm9jZXNzb3ImKTsKKworICAgIHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIHN0b3BSZWNlaXZp
bmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKwor
ICAgIC8vIE1lc3NhZ2VGaWx0ZXIgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoQ29ubmVjdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYgbWVzc2FnZSkgZmluYWw7
CisKKyAgICBzdHJ1Y3QgU3BhbiB7CisgICAgICAgIHVpbnQ4X3QqIGRhdGE7CisgICAgICAgIHNp
emVfdCBzaXplOworICAgIH07CisgICAgT3B0aW9uYWw8U3Bhbj4gdHJ5QXF1aXJlKCk7CisKKyAg
ICB2b2lkIHJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBtaW5pbXVtTWVzc2FnZVNpemUgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWluaW11
bU1lc3NhZ2VTaXplOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1l
bnQgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWVzc2FnZUFsaWdubWVudDsKKyAgICBTcGFu
IGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90IHNp
emUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAgICBzaXplX3QgY2xhbXBlZExpbWl0
KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7CisgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6
ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNldChvZmZzZXQpOyB9
CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwgbWluaW11bU1lc3Nh
Z2VTaXplKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRTZW5kZXJPZmZzZXQoKSB7IHJl
dHVybiBtX2J1ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFy
ZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnJlY2VpdmVyT2Zmc2V0KCk7IH0K
KyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9Cisg
ICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUoKTsg
fQorCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFN0cmVhbUNv
bm5lY3Rpb25Qcm9jZXNzb3ImIG1fcHJvY2Vzc29yOworCisgICAgc2l6ZV90IG1fcmVjZWl2ZXJP
ZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKKworICAg
IExvY2sgbV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jazsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4+IG1fb3V0T2ZTdHJlYW1NZXNzYWdlczsKKworICAgIGZyaWVuZCBjbGFzcyBT
dHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJn
dW1lbnRzPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2VuZFN5bmNSZXBseSh1
aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCit7CisgICAg
Ly8gRklYTUU6IGltcGxlbWVudCBzZW5kaW5nIHRvIGJ1ZmZlci4KKyAgICBhdXRvIGVuY29kZXIg
PSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VS
ZXBseSwgc3luY1JlcXVlc3RJRCk7CisgICAgKCplbmNvZGVyIDw8IC4uLiA8PCBhcmd1bWVudHMp
OworICAgIG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30K
KworLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbiByZXByZXNlbnRzIHRoZSBjb25uZWN0aW9uIGJl
dHdlZW4gc3RyZWFtIHNlbmRlciBhbmQgcmVjZWl2ZXIsIGFzIHVzZWQgYnkgdGhlIHJlY2VpdmVy
LgorLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbjoKKy8vICAqIEhvbGRzIHRoZSBtZXNzYWdlcyB0
b3dhcmRzIHRoZSByZWNlaXZlci4KKy8vICAqIFNlbmRzIHRoZSByZXBsaWVzIGJhY2sgdG8gdGhl
IHNlbmRlciB2aWEgdGhlIHN0cmVhbSBvciBub3JtYWwgQ29ubmVjdGlvbiBmYWxsYmFjay4KKy8v
CisvLyBSZWNlaXZlciB0ZW1wbGF0ZSBjb250cmFjdDoKKy8vICAgdm9pZCBkaWRSZWNlaXZlU3Ry
ZWFtTWVzc2FnZShTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIERlY29kZXImKTsKKy8vCit0
ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24g
ZmluYWwgOiBwdWJsaWMgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UgeworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gY3JlYXRlKENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVhbUNv
bm5lY3Rpb25Qcm9jZXNzb3ImIHByb2Nlc3NvcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZShzdHJl
YW1CdWZmZXIpLCBwcm9jZXNzb3IpKTsKKyAgICB9CisgICAgflN0cmVhbVNlcnZlckNvbm5lY3Rp
b24oKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMo
UmVjZWl2ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIC8v
IFN0b3BzIHRoZSBtZXNzYWdlIHJlY2VpcHQuIE5vdGU6IGFscmVhZHkgcmVjZWl2ZWQgbWVzc2Fn
ZXMgbWlnaHQgc3RpbGwgYmUgZGVsaXZlcmVkLgorICAgIHZvaWQgc3RvcFJlY2VpdmluZ01lc3Nh
Z2VzKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisKKyAgICAvLyBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSBvdmVycmlkZXMuCisgICAgRGlzcGF0Y2hSZXN1bHQgZGlz
cGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KSBmaW5hbDsKKworcHJpdmF0
ZToKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVhbUNvbm5lY3Rpb25Qcm9j
ZXNzb3ImIHByb2Nlc3NvcikKKyAgICAgICAgOiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShj
b25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHByb2Nlc3NvcikKKyAgICB7CisgICAg
fQorICAgIGJvb2wgcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoRGVjb2RlciYmLCBSZWZQ
dHI8UmVjZWl2ZXI+JiBjdXJyZW50UmVjZWl2ZXIpOworICAgIGJvb2wgZGlzcGF0Y2hTdHJlYW1N
ZXNzYWdlKERlY29kZXImJiwgUmVjZWl2ZXImKTsKKyAgICBib29sIGRpc3BhdGNoT3V0T2ZTdHJl
YW1NZXNzYWdlKERlY29kZXImJik7CisgICAgTG9jayBtX3JlY2VpdmVyc0xvY2s7CisgICAgdXNp
bmcgUmVjZWl2ZXJzTWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+LCBS
ZWY8UmVjZWl2ZXI+PjsKKyAgICBSZWNlaXZlcnNNYXAgbV9yZWNlaXZlcnM7CisKKyAgICB1aW50
NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEID0gMDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6c3RhcnRS
ZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYgcmVjZWl2ZXIsIFJlY2VpdmVyTmFtZSByZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgeworICAgICAgICBhdXRvIGtl
eSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRl
c3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJz
TG9jayk7CisgICAgICAgIEFTU0VSVCghbV9yZWNlaXZlcnMuY29udGFpbnMoa2V5KSk7CisgICAg
ICAgIG1fcmVjZWl2ZXJzLmFkZChrZXksIG1ha2VSZWYocmVjZWl2ZXIpKTsKKyAgICB9CisgICAg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKHJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2Vp
dmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6c3RvcFJlY2Vpdmlu
Z01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpCit7CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNz
YWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGtleSA9IHN0
ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3RpbmF0
aW9uSUQpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAg
ICBBU1NFUlQobV9yZWNlaXZlcnMuY29udGFpbnMoa2V5KSk7CisgICAgbV9yZWNlaXZlcnMucmVt
b3ZlKGtleSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2U6OkRpc3BhdGNoUmVzdWx0IFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVj
ZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNzYWdlTGltaXQpCit7Cisg
ICAgUmVmUHRyPFJlY2VpdmVyPiBjdXJyZW50UmVjZWl2ZXI7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudCBXVEY6OmlzVmFsaWQoUmVjZWl2ZXJOYW1lKS4KKyAgICB1aW50OF90IGN1cnJlbnRSZWNl
aXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihSZWNlaXZlck5hbWU6OkludmFsaWQpOwor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlTGltaXQ7ICsraSkgeworICAgICAg
ICBhdXRvIHNwYW4gPSB0cnlBcXVpcmUoKTsKKyAgICAgICAgaWYgKCFzcGFuKQorICAgICAgICAg
ICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICBJUEM6OkRl
Y29kZXIgZGVjb2RlciB7IHNwYW4tPmRhdGEsIHNwYW4tPnNpemUsIG1fY3VycmVudERlc3RpbmF0
aW9uSUQgfTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkgeworICAgICAgICAgICAg
bV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01l
c3NhZ2VzOworICAgICAgICB9CisgICAgICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQpIHsKKyAgICAgICAgICAgIGlmICgh
cHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoV1RGTW92ZShkZWNvZGVyKSwgY3VycmVudFJl
Y2VpdmVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVz
c2FnZXM7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNz
YWdlKSB7CisgICAgICAgICAgICBpZiAoIWRpc3BhdGNoT3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1v
dmUoZGVjb2RlcikpKQorICAgICAgICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFz
Tm9NZXNzYWdlczsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlm
IChjdXJyZW50UmVjZWl2ZXJOYW1lICE9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSkgeworICAgICAgICAgICAgY3VycmVudFJlY2VpdmVyTmFtZSA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAg
ICAgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKCFjdXJyZW50UmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIGF1dG8ga2V5ID0gc3RkOjptYWtl
X3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4oY3VycmVudFJlY2VpdmVyTmFtZSksIG1fY3VycmVu
dERlc3RpbmF0aW9uSUQpOworICAgICAgICAgICAgaWYgKCFSZWNlaXZlcnNNYXA6OmlzVmFsaWRL
ZXkoa2V5KSkgeworICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAg
ICAgICAgICBjdXJyZW50UmVjZWl2ZXIgPSBtX3JlY2VpdmVycy5nZXQoa2V5KTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNlaXZlcikgeworICAgICAgICAgICAgLy8gVmFsaWQg
c2NlbmFyaW8gaXMgd2hlbiByZWNlaXZlciBoYXMgYmVlbiByZW1vdmVkLCBidXQgbWVzc2FnZXMK
KyAgICAgICAgICAgIC8vIGZvciBpdCBleGlzdCBpbiB0aGUgYnVmZmVyLgorICAgICAgICAgICAg
Ly8gRklYTUU6IFNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgcmVjZWl2ZXIsIHdlIGRvbid0IGtub3cg
aG93IHRvIGRlY29kZSB0aGUgbWVzc2FnZS4KKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgd2Ug
bXVzdCB0aW1lb3V0IGV2ZXJ5IHJlY2VpdmVyIGluIHRoZSBzdHJlYW0gY29ubmVjdGlvbi4KKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIERpc3Bh
dGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICB9CisgICAgICAgIGlmICghZGlzcGF0
Y2hTdHJlYW1NZXNzYWdlKFdURk1vdmUoZGVjb2RlciksICpjdXJyZW50UmVjZWl2ZXIpKQorICAg
ICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgIH0KKyAg
ICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc01vcmVNZXNzYWdlczsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgUmVjZWl2ZXI+Citib29sIFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+
Ojpwcm9jZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRChEZWNvZGVyJiYgZGVjb2RlciwgUmVmUHRy
PFJlY2VpdmVyPiYgY3VycmVudFJlY2VpdmVyKQoreworICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQgPSAwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVzdGluYXRpb25JRCkpIHsKKyAgICAg
ICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmICht
X2N1cnJlbnREZXN0aW5hdGlvbklEICE9IGRlc3RpbmF0aW9uSUQpIHsKKyAgICAgICAgbV9jdXJy
ZW50RGVzdGluYXRpb25JRCA9IGRlc3RpbmF0aW9uSUQ7CisgICAgICAgIGN1cnJlbnRSZWNlaXZl
ciA9IG51bGxwdHI7CisgICAgfQorICAgIHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9z
aXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2Vp
dmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJl
YW1NZXNzYWdlKERlY29kZXImJiBkZWNvZGVyLCBSZWNlaXZlciYgcmVjZWl2ZXIpCit7CisgICAg
cmVjZWl2ZXIuZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKnRoaXMsIGRlY29kZXIpOworICAgIGlm
ICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9z
aXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2Vp
dmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRP
ZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmIGRlY29kZXIpCit7CisgICAgc3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+IG1lc3NhZ2U7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOworICAgICAgICBpZiAobV9vdXRPZlN0cmVhbU1l
c3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbWVz
c2FnZSA9IG1fb3V0T2ZTdHJlYW1NZXNzYWdlcy50YWtlRmlyc3QoKTsKKyAgICB9CisgICAgaWYg
KCFtZXNzYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8UmVjZWl2ZXI+
IHJlY2VpdmVyOworICAgIHsKKyAgICAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0
aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCBtZXNzYWdl
LT5kZXN0aW5hdGlvbklEKCkpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVj
ZWl2ZXJzTG9jayk7CisgICAgICAgIHJlY2VpdmVyID0gbV9yZWNlaXZlcnMuZ2V0KGtleSk7Cisg
ICAgfQorICAgIGlmIChyZWNlaXZlcikgeworICAgICAgICByZWNlaXZlci0+ZGlkUmVjZWl2ZVN0
cmVhbU1lc3NhZ2UoKnRoaXMsICptZXNzYWdlKTsKKyAgICAgICAgaWYgKCFtZXNzYWdlLT5pc1Zh
bGlkKCkpIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gSWYgcmVjZWl2ZXIgZG9lcyBub3QgZXhp
c3QgaWYgaXQgaGFzIGJlZW4gcmVtb3ZlZCBidXQgbWVzc2FnZXMgYXJlIHN0aWxsIHBlbmRpbmcg
dG8gYmUKKyAgICAvLyBwcm9jZXNzZWQuIEl0J3Mgb2sgdG8gc2tpcCBzdWNoIG1lc3NhZ2VzLgor
ICAgIC8vIEZJWE1FOiBOb3RlLCBjb3JyZXNwb25kaW5nIHNraXAgaXMgbm90IHBvc3NpYmxlIGF0
IHRoZSBtb21lbnQgZm9yIHN0cmVhbSBtZXNzYWdlcy4KKyAgICByZWxlYXNlKGRlY29kZXIuY3Vy
cmVudEJ1ZmZlclBvc2l0aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaAppbmRleCA3ODU0ZmE4ZjE4Njhm
YjhlNDU2MjI4OWZkZGY2ZjI3OTVhZjJkOTBkLi44M2Q5OWYwY2JjOGZlMDQ4MjBiNDc4M2M5YzA3
NmFiNTdhM2VhYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2Nv
YS9NYWNoUG9ydC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQ
b3J0LmgKQEAgLTI1LDkgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcmd1
bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgotI2luY2x1ZGUgIkRlY29kZXIu
aCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBlYzhiY2YwODdkZjE2ZGY2MGRiZTAw
ODBlNGNlYjA2MWQxNzY4ZmY3Li5hNjVkMzQ3MDA5MWYyNTYwOWZhZDBiZTdiY2IzY2Y4NGU5MTcz
NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTI0LDgg
KzI0LDkgQEAgaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIAorZnJv
bSBtb2RlbCBpbXBvcnQgTWVzc2FnZVJlY2VpdmVyLCBNZXNzYWdlCiBmcm9tIHdlYmtpdCBpbXBv
cnQgcGFyc2VyCi1mcm9tIHdlYmtpdC5tb2RlbCBpbXBvcnQgQlVJTFRJTl9BVFRSSUJVVEUsIEFT
WU5DX0FUVFJJQlVURSwgU1lOQ0hST05PVVNfQVRUUklCVVRFCitmcm9tIHdlYmtpdC5tb2RlbCBp
bXBvcnQgQlVJTFRJTl9BVFRSSUJVVEUsIEFTWU5DX0FUVFJJQlVURSwgU1lOQ0hST05PVVNfQVRU
UklCVVRFLCBTVFJFQU1fQVRUUklCVVRFLCBXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURQogCiBf
bGljZW5zZV9oZWFkZXIgPSAiIiIvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTMsMTMgKzU0LDExIEBAIF9saWNlbnNlX2hl
YWRlciA9ICIiIi8qCiAKICIiIgogCi1XQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSA9ICdXYW50
c0Nvbm5lY3Rpb24nCiBXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSA9ICdXYW50c0Rp
c3BhdGNoTWVzc2FnZScKIFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFID0g
J1dhbnRzQXN5bmNEaXNwYXRjaE1lc3NhZ2UnCiBMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFID0g
J0xlZ2FjeVJlY2VpdmVyJwogTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFID0gJ05v
dFJlZkNvdW50ZWQnCiAKLQogZGVmIHJlY2VpdmVyX2VudW1lcmF0b3Jfb3JkZXJfa2V5KHJlY2Vp
dmVyX25hbWUpOgogICAgIGlmIHJlY2VpdmVyX25hbWUgPT0gJ0lQQyc6CiAgICAgICAgIHJldHVy
biAxCkBAIC0yMDYsNyArMjA1LDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9u
KHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2lu
ZyBBc3luY1JlcGx5ID0gJXNBc3luY1JlcGx5O1xuJyAlIG1lc3NhZ2UubmFtZSkKICAgICAgICAg
ZWxpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKToKICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSAlc0RlbGF5ZWRS
ZXBseTtcbicgJSBtZXNzYWdlLm5hbWUpCi0gICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0
ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19B
VFRSSUJVVEUpOgorICAgICAgICBpZiAobWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VT
X0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSkpIGFu
ZCBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToKICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYnKQogICAgICAgICAgICAgaWYgbGVuKHNl
bmRfcGFyYW1ldGVycyk6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAlcycgJSBj
b21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycykKQEAgLTI1NCw2ICsyNTMsNyBAQCBkZWYgdHlw
ZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgIHJldHVybiBmcm96ZW5z
ZXQoWwogICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNlJywKICAgICAgICAgJ0lQQzo6Rm9udFJl
ZmVyZW5jZScsCisgICAgICAgICdJUEM6OlNlbWFwaG9yZUhhbmRsZScsCiAgICAgICAgICdNYWNo
U2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdTdHJpbmcnLApAQCAt
NTYzLDEwICs1NjMsMTUgQEAgZGVmIHN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1l
c3NhZ2UpOgogICAgICAgICBkaXNwYXRjaF9mdW5jdGlvbiArPSAnQXN5bmMnCiAKICAgICB3YW50
c19jb25uZWN0aW9uID0gbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVU
RSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFKQor
ICAgIG1heWJlX3JlcGx5X2VuY29kZXIgPSAiLCAqcmVwbHlFbmNvZGVyIgorICAgIGlmIHJlY2Vp
dmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CisgICAgICAgIG1heWJlX3JlcGx5
X2VuY29kZXIgPSAnJworICAgIGVsaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VT
X0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6Cisg
ICAgICAgIG1heWJlX3JlcGx5X2VuY29kZXIgPSAnLCByZXBseUVuY29kZXInCiAKICAgICByZXN1
bHQgPSBbXQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUoKSkge1xuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNz
YWdlLm5hbWUpKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6
JXM6OiVzPiglc2RlY29kZXIsICVzcmVwbHlFbmNvZGVyLCB0aGlzLCAmJXMpO1xuJyAlIChkaXNw
YXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnY29ubmVjdGlvbiwg
JyBpZiB3YW50c19jb25uZWN0aW9uIGVsc2UgJycsICcnIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0
ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19B
VFRSSUJVVEUpIGVsc2UgJyonLCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKSkp
CisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVz
ZGVjb2RlciVzLCB0aGlzLCAmJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIu
bmFtZSwgbWVzc2FnZS5uYW1lLCAnY29ubmVjdGlvbiwgJyBpZiB3YW50c19jb25uZWN0aW9uIGVs
c2UgJycsIG1heWJlX3JlcGx5X2VuY29kZXIsIGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIsIG1l
c3NhZ2UpKSkKICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybjtcbicpCiAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIH1cbicpCiAgICAgcmV0dXJuIHN1cnJvdW5kX2luX2NvbmRpdGlvbign
Jy5qb2luKHJlc3VsdCksIG1lc3NhZ2UuY29uZGl0aW9uKQpAQCAtODYxLDcgKzg2Niw3IEBAIGRl
ZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICBpZiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZSBhbmQgKG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5D
SFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJV
VEUpKToKICAgICAgICAgICAgIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXMuYXBwZW5kKG1lc3Nh
Z2UpCiAKLSAgICBpZiBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzOgorICAgIGlmIGRlbGF5ZWRf
b3JfYXN5bmNfbWVzc2FnZXMgYW5kIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9B
VFRSSUJVVEUpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCduYW1lc3BhY2UgTWVzc2FnZXMge1xu
XG5uYW1lc3BhY2UgJXMge1xuXG4nICUgcmVjZWl2ZXIubmFtZSkKIAogICAgICAgICBmb3IgbWVz
c2FnZSBpbiBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzOgpAQCAtOTA5LDI1ICs5MTQsNDQgQEAg
ZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICBhc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkKIAotICAgIGlmIGFzeW5j
X21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FH
RV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFU
Q0hfTUVTU0FHRV9BVFRSSUJVVEUpOgotICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpk
aWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJlY2Vp
dmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykpCisg
ICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToKKyAgICAgICAg
cmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KVxuJyAlIChyZWNlaXZlci5uYW1lKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAg
ICAgICAgaWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlW
RVJfQVRUUklCVVRFKToKKyAgICAgICAgYXNzZXJ0KHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9U
X1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKSkKKyAgICAgICAgYXNzZXJ0KG5vdCByZWNl
aXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSkKKyAg
ICAgICAgYXNzZXJ0KG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BB
VENIX01FU1NBR0VfQVRUUklCVVRFKSkKKworICAgICAgICByZXN1bHQgKz0gW2FzeW5jX21lc3Nh
Z2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3IgbWVzc2FnZSBpbiBhc3luY19tZXNz
YWdlc10KKyAgICAgICAgcmVzdWx0ICs9IFtzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVy
LCBtZXNzYWdlKSBmb3IgbWVzc2FnZSBpbiBzeW5jX21lc3NhZ2VzXQorCisgICAgICAgIGlmIChy
ZWNlaXZlci5zdXBlcmNsYXNzKToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAlczo6
ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7XG4nICUgKHJlY2Vp
dmVyLnN1cGVyY2xhc3MpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTtcbicpCisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pO1xuJykKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCisgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ31cbicpCisgICAgZWxpZiBhc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0
cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNf
YXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKKyAgICAg
ICAgcmVjZWl2ZV92YXJpYW50ID0gcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmli
dXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycKKyAgICAgICAgcmVzdWx0LmFw
cGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2
ZV92YXJpYW50KSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKKyAgICAgICAgaWYgbm90
IChyZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVU
RSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKSk6CiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyk7XG4nKQogCiAgICAgICAgIHJlc3VsdCArPSBbYXN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVj
ZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIGFzeW5jX21lc3NhZ2VzXQorCiAgICAgICAg
IGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJV
VEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FH
RV9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChkaXNwYXRj
aE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlcikpXG4nKQogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgICAgICByZXR1cm47XG4nKQogICAgICAgICBpZiAocmVjZWl2ZXIuc3VwZXJjbGFz
cyk6Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJXM6OmRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNsYXNzKSkKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcywgcmVjZWl2ZV92YXJpYW50
KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURf
UEFSQU0oY29ubmVjdGlvbik7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVO
VVNFRF9QQVJBTShkZWNvZGVyKTtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQog
Ci0gICAgaWYgc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJ
U1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKKyAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJp
YnV0ZShTVFJFQU1fQVRUUklCVVRFKSBhbmQgKHN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFz
X2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkpOgogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJl
Y2VpdmVTeW5jJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVy
KVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRy
aWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ3tcbicpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlc191bml0dGVzdC5weQppbmRleCA2ZWM2ZWI0ZGE1NTc3M2ZjZWQ2M2QzODIyMzNjMzI1ODE5
YTlhM2MzLi45NTVkYjJmNjhiYjY5YWNiMTgzZTkzYTRkYzAyZjk0NmY0M2EzZTY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKQEAg
LTM5LDcgKzM5LDcgQEAgdGVzdHNfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKG1vZHVsZV9kaXJl
Y3RvcnksICd0ZXN0cycpCiAKIHJlc2V0X3Jlc3VsdHMgPSBGYWxzZQogCi1fdGVzdF9yZWNlaXZl
cl9uYW1lcyA9IFsnVGVzdFdpdGhTdXBlcmNsYXNzJywgJ1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXIn
LCAnVGVzdFdpdGhvdXRBdHRyaWJ1dGVzJywgJ1Rlc3RXaXRoSWZNZXNzYWdlJ10KK190ZXN0X3Jl
Y2VpdmVyX25hbWVzID0gWydUZXN0V2l0aFN1cGVyY2xhc3MnLCAnVGVzdFdpdGhMZWdhY3lSZWNl
aXZlcicsICdUZXN0V2l0aG91dEF0dHJpYnV0ZXMnLCAnVGVzdFdpdGhJZk1lc3NhZ2UnLCAnVGVz
dFdpdGhTdHJlYW0nLCAnVGVzdFdpdGhTdHJlYW1CdWZmZXInXQogCiAKIGRlZiByZWNlaXZlcl9o
ZWFkZXJfZmlsZV9uYW1lKHJlY2VpdmVyX25hbWUpOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bW9kZWwucHkKaW5kZXggYWMzODY4OTA1Y2ZjZDMwYThjNjM2ZjNmZTA0N2E3NGE0YTMxNGE4My4u
ZmY1MzEyZTk3YWMwMTAwY2ZhOGJjOTY0ODFlN2ZhNTMyYTJjZmMyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21vZGVsLnB5CkBAIC0yNyw2ICsyNyw4IEBAIGZyb20gY29sbGVjdGlvbnMg
aW1wb3J0IENvdW50ZXIsIGRlZmF1bHRkaWN0CiBCVUlMVElOX0FUVFJJQlVURSA9ICJCdWlsdGlu
IgogQVNZTkNfQVRUUklCVVRFID0gIkFzeW5jIgogU1lOQ0hST05PVVNfQVRUUklCVVRFID0gJ1N5
bmNocm9ub3VzJworU1RSRUFNX0FUVFJJQlVURSA9ICJTdHJlYW0iCitXQU5UU19DT05ORUNUSU9O
X0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24nCiAKIGNsYXNzIE1lc3NhZ2VSZWNlaXZlcihv
YmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdXBlcmNsYXNzLCBhdHRyaWJ1
dGVzLCBtZXNzYWdlcywgY29uZGl0aW9uKToKQEAgLTcyLDcgKzc0LDkgQEAgaXBjX3JlY2VpdmVy
ID0gTWVzc2FnZVJlY2VpdmVyKG5hbWU9IklQQyIsIHN1cGVyY2xhc3M9Tm9uZSwgYXR0cmlidXRl
cz1bQlVJTFRJTl8KICAgICBNZXNzYWdlKCdXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZycs
IFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJ
QlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdTeW5jTWVzc2FnZVJlcGx5Jywg
W10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwK
ICAgICBNZXNzYWdlKCdJbml0aWFsaXplQ29ubmVjdGlvbicsIFtdLCBbXSwgYXR0cmlidXRlcz1b
QlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249IlBMQVRGT1JNKENPQ09BKSIpLAotICAgIE1l
c3NhZ2UoJ0xlZ2FjeVNlc3Npb25TdGF0ZScsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9B
VFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSkKKyAgICBNZXNzYWdlKCdMZWdhY3lTZXNzaW9uU3Rh
dGUnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5v
bmUpLAorICAgIE1lc3NhZ2UoJ1NldFN0cmVhbURlc3RpbmF0aW9uSUQnLCBbXSwgW10sIGF0dHJp
YnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2Uo
J1Byb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5f
QVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpCiBdLCBjb25kaXRpb249Tm9uZSkKIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQppbmRleCA4Nzk2ZmZiYzVh
M2Y4N2I5MjNlZDZjOTgwMjM5MWE4NzZiYWMzODJlLi5iZGU5OGRiMmZlMDMyMDdkNmViZjA3ZWJi
YTc5YTUwYzhiOGI1MTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL01ha2VmaWxlCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWFrZWZpbGUKQEAgLTEsMiArMSwyIEBACiBhbGw6Ci0JcHl0aG9uIC4uLy4uL2dlbmVyYXRlLW1l
c3NhZ2UtcmVjZWl2ZXIucHkgLiBUZXN0V2l0aFN1cGVyY2xhc3MgVGVzdFdpdGhMZWdhY3lSZWNl
aXZlciBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgVGVzdFdpdGhJZk1lc3NhZ2UKKwlweXRob24gLi4v
Li4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSAuIFRlc3RXaXRoU3VwZXJjbGFzcyBUZXN0
V2l0aExlZ2FjeVJlY2VpdmVyIFRlc3RXaXRob3V0QXR0cmlidXRlcyBUZXN0V2l0aElmTWVzc2Fn
ZSBUZXN0V2l0aFN0cmVhbSBUZXN0V2l0aFN0cmVhbUJ1ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnRE
ZXNjcmlwdGlvbnMuY3BwCmluZGV4IDU5NDA0NDM5MGNhZGFjMmZmMGNkZmFhOWUzMDUwNDQyNzc4
MzgwZmUuLjIxZjBlYmNmZjBkNWYxMmIzNDQ4ZTZhZDg5MWU3OWE3MjU5MTIwMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVz
Y3JpcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01l
c3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKQEAgLTQwLDEyICs0MCwxNSBAQAogI2luY2x1
ZGUgIk1hY2hQb3J0LmgiCiAjZW5kaWYKICNpbmNsdWRlICJQbHVnaW4uaCIKKyNpbmNsdWRlICJT
dHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGVzdENsYXNzTmFtZS5oIgogI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCiAjaW5jbHVkZSAiVGVzdFR3b1N0YXRlRW51bS5oIgogI2Vu
ZGlmCiAjaW5jbHVkZSAiVGVzdFdpdGhJZk1lc3NhZ2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRl
c3RXaXRoTGVnYWN5UmVjZWl2ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFt
QnVmZmVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiVGVzdFdpdGhTdXBlcmNsYXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJUZXN0V2l0
aG91dEF0dHJpYnV0ZXNNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgpAQCAtMjE2LDYgKzIxOSwxMiBAQCBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IGpzVmFsdWVG
b3JBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNZQogICAgIGNh
c2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoSWZNZXNzYWdlX0xvYWRVUkw6CiAgICAgICAgIHJldHVy
biBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhJZk1lc3NhZ2U6
OkxvYWRVUkw6OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKICNlbmRpZgorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmc6CisgICAgICAgIHJl
dHVybiBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50czxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06
OlNlbmRTdHJpbmc6OkFyZ3VtZW50cz4oZ2xvYmFsT2JqZWN0LCBkZWNvZGVyKTsKKyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkOgorICAg
ICAgICByZXR1cm4ganNWYWx1ZUZvckRlY29kZWRBcmd1bWVudHM8TWVzc2FnZXM6OlRlc3RXaXRo
U3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpBcmd1bWVudHM+KGdsb2JhbE9iamVjdCwg
ZGVjb2Rlcik7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXJfU2Vu
ZFN0cmVhbUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRz
PE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcjo6QXJndW1l
bnRzPihnbG9iYWxPYmplY3QsIGRlY29kZXIpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTUxNyw2ICs1MjYsMTggQEAgT3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVz
Y3JpcHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUgbmEKICAg
ICAgICAgICAgIHsidmFsdWUiLCAiaW50NjRfdCIsIG51bGxwdHIsIGZhbHNlfSwKICAgICAgICAg
fTsKICNlbmRpZgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJp
bmc6CisgICAgICAgIHJldHVybiBWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4geworICAgICAg
ICAgICAgeyJ1cmwiLCAiU3RyaW5nIiwgbnVsbHB0ciwgZmFsc2V9LAorICAgICAgICB9OworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6
CisgICAgICAgIHJldHVybiBWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4geworICAgICAgICAg
ICAgeyJ1cmwiLCAiU3RyaW5nIiwgbnVsbHB0ciwgZmFsc2V9LAorICAgICAgICB9OworICAgIGNh
c2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXI6Cisg
ICAgICAgIHJldHVybiBWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4geworICAgICAgICAgICAg
eyJzdHJlYW0iLCAiSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIiwgbnVsbHB0ciwgZmFsc2V9
LAorICAgICAgICB9OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcApp
bmRleCA3NmZhZDM3YzU0NjBhZGJjZmVhMzcyZDE4NjY1NTBmYTdjOGE4NTEzLi4xOWY3MmZlMjUz
ZjBiNWEwZDMwNWI2Y2Y1YTNlYmQ3MDA0N2VhMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCkBAIC03Miw2ICs3MiwxMiBA
QCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBuYW1lKQogICAgICAgICByZXR1
cm4gIlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMiOwogICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVudDoKICAg
ICAgICAgcmV0dXJuICJUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1RvdWNoRXZlbnQiOworICAgIGNh
c2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXI6Cisg
ICAgICAgIHJldHVybiAiVGVzdFdpdGhTdHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZlciI7Cisg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZzoKKyAgICAgICAg
cmV0dXJuICJUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkOgorICAgICAgICByZXR1cm4g
IlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmdTeW5jaHJvbml6ZWQiOwogICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMOgogICAgICAgICByZXR1cm4gIlRlc3RX
aXRoU3VwZXJjbGFzc19Mb2FkVVJMIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1
cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZToKQEAgLTEyNiw2ICsxMzIsMTAgQEAgY29uc3QgY2hh
ciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUgbmFtZSkKICAgICAgICAgcmV0dXJuICJJbml0aWFs
aXplQ29ubmVjdGlvbiI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRl
OgogICAgICAgICByZXR1cm4gIkxlZ2FjeVNlc3Npb25TdGF0ZSI7CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJQcm9jZXNz
T3V0T2ZTdHJlYW1NZXNzYWdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0
aW5hdGlvbklEOgorICAgICAgICByZXR1cm4gIlNldFN0cmVhbURlc3RpbmF0aW9uSUQiOwogICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHk6CiAgICAgICAgIHJldHVybiAiU3lu
Y01lc3NhZ2VSZXBseSI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNz
X1Rlc3RBc3luY01lc3NhZ2VSZXBseToKQEAgLTE4MSw2ICsxOTEsMTEgQEAgUmVjZWl2ZXJOYW1l
IHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpUZXN0V2l0aExlZ2FjeVJlY2VpdmVyX1Rlc3RQYXJhbWV0ZXJBdHRyaWJ1dGVzOgogICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoTGVnYWN5UmVjZWl2ZXJfVG91Y2hFdmVudDoKICAg
ICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhMZWdhY3lSZWNlaXZlcjsKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcl9TZW5kU3RyZWFtQnVmZmVyOgor
ICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjsKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nOgorICAgIGNhc2UgTWVz
c2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6CisgICAgICAg
IHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtOwogICAgIGNhc2UgTWVzc2FnZU5h
bWU6OlRlc3RXaXRoU3VwZXJjbGFzc19Mb2FkVVJMOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRl
c3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb246CkBAIC0y
MTAsNiArMjI1LDggQEAgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNz
YWdlTmFtZSkKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1
dGVzOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgogICAgIGNh
c2UgTWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlNldFN0
cmVhbURlc3RpbmF0aW9uSUQ6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBs
eToKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SVBDOwogICAgIGNhc2UgTWVzc2FnZU5h
bWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CkBAIC0yOTksNiAr
MzE2LDEyIEBAIGJvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1l
KQogICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aExlZ2Fj
eVJlY2VpdmVyX1RvdWNoRXZlbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCisgICAg
aWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVy
X1NlbmRTdHJlYW1CdWZmZXIpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdl
TmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZ1N5bmNocm9uaXplZCkKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRo
U3VwZXJjbGFzc19Mb2FkVVJMKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQpAQCAtMzc5LDYgKzQwMiwxMCBAQCBib29sIGlzVmFsaWRNZXNzYWdlTmFtZShN
ZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICNlbmRpZgogICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJ
UEM6Ok1lc3NhZ2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGUpCiAgICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZT
dHJlYW1NZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUg
PT0gSVBDOjpNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRCkKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlN5bmNN
ZXNzYWdlUmVwbHkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2lmIEVOQUJMRShURVNUX0ZFQVRV
UkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3Nh
Z2VOYW1lcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFt
ZXMuaAppbmRleCAyM2Y3NTYwODdkNjgzYWQyMmIwNjhlMmE3MWZkOTVhMGYzY2U1NTVlLi43YzQx
NWFmNGI2YmVkYmU3MTE1YjcyNWQzNmQwNDg1YjE1YzhiOTI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKQEAgLTMxLDExICszMSwx
MyBAQCBuYW1lc3BhY2UgSVBDIHsKIGVudW0gY2xhc3MgUmVjZWl2ZXJOYW1lIDogdWludDhfdCB7
CiAgICAgVGVzdFdpdGhJZk1lc3NhZ2UgPSAxCiAgICAgLCBUZXN0V2l0aExlZ2FjeVJlY2VpdmVy
ID0gMgotICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzID0gMwotICAgICwgVGVzdFdpdGhvdXRBdHRy
aWJ1dGVzID0gNAotICAgICwgSVBDID0gNQotICAgICwgQXN5bmNSZXBseSA9IDYKLSAgICAsIElu
dmFsaWQgPSA3CisgICAgLCBUZXN0V2l0aFN0cmVhbSA9IDMKKyAgICAsIFRlc3RXaXRoU3RyZWFt
QnVmZmVyID0gNAorICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzID0gNQorICAgICwgVGVzdFdpdGhv
dXRBdHRyaWJ1dGVzID0gNgorICAgICwgSVBDID0gNworICAgICwgQXN5bmNSZXBseSA9IDgKKyAg
ICAsIEludmFsaWQgPSA5CiB9OwogCiBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3Qg
ewpAQCAtNjAsNiArNjIsOSBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3Qgewog
ICAgICwgVGVzdFdpdGhMZWdhY3lSZWNlaXZlcl9UZW1wbGF0ZVRlc3QKICAgICAsIFRlc3RXaXRo
TGVnYWN5UmVjZWl2ZXJfVGVzdFBhcmFtZXRlckF0dHJpYnV0ZXMKICAgICAsIFRlc3RXaXRoTGVn
YWN5UmVjZWl2ZXJfVG91Y2hFdmVudAorICAgICwgVGVzdFdpdGhTdHJlYW1CdWZmZXJfU2VuZFN0
cmVhbUJ1ZmZlcgorICAgICwgVGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZworICAgICwgVGVzdFdp
dGhTdHJlYW1fU2VuZFN0cmluZ1N5bmNocm9uaXplZAogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNz
X0xvYWRVUkwKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlCiAgICAg
LCBUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uCkBAIC04
Nyw2ICs5Miw4IEBAIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdCB7CiAgICAgLCBU
ZXN0V2l0aG91dEF0dHJpYnV0ZXNfVG91Y2hFdmVudAogICAgICwgSW5pdGlhbGl6ZUNvbm5lY3Rp
b24KICAgICAsIExlZ2FjeVNlc3Npb25TdGF0ZQorICAgICwgUHJvY2Vzc091dE9mU3RyZWFtTWVz
c2FnZQorICAgICwgU2V0U3RyZWFtRGVzdGluYXRpb25JRAogICAgICwgU3luY01lc3NhZ2VSZXBs
eQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseQogICAgICwg
VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvblJlcGx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN0cmVhbS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDBmNTI4YzY5Y2RlZmRkYTljNDg2
NzkxMzhjNjM4YjhhYzBjYjMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI3
IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVGVzdHMgU3Ry
ZWFtIHJlY2VpdmVyIGF0dHJpYnV0ZS4KK21lc3NhZ2VzIC0+IFRlc3RXaXRoU3RyZWFtIE5vdFJl
ZkNvdW50ZWQgU3RyZWFtIHsKKyAgICB2b2lkIFNlbmRTdHJpbmcoU3RyaW5nIHVybCkKKyAgICB2
b2lkIFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQoU3RyaW5nIHVybCkgLT4gKGludDY0X3QgcmV0dXJu
KQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN0cmVhbUJ1ZmZlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE3
MGFjODlhMjVmMDM5MjE5ZmU0MTgxMDViMmMxZDA0YWUwYzdlOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIu
bWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisj
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjIFRlc3RzIFN0cmVhbSByZWNlaXZlciBhdHRyaWJ1dGUuCittZXNzYWdl
cyAtPiBUZXN0V2l0aFN0cmVhbUJ1ZmZlciAgeworICAgIHZvaWQgU2VuZFN0cmVhbUJ1ZmZlcihJ
UEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWM5MjQwYTRlYjFh
YjU1NzQwOTYwMjI5MWRjMTI3MzE5ODdmMDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNl
aXZlci5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAq
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbUJ1ZmZlci5oIgorCisjaW5jbHVkZSAi
RGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJTdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdl
cy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJl
YW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRs
ZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVy
PihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW1CdWZmZXI6OnNlbmRTdHJlYW1CdWZmZXIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsK
KyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YTI0ZWJkZDIwMGYzMzkwNDc3ZGZhZjdjZDg1NzE5MWJkNTNiMjg3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAi
VGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3Bh
Y2UgSVBDIHsKK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI7Cit9CisKK25hbWVzcGFjZSBN
ZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIgeworCitzdGF0aWMgaW5s
aW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVy
biBJUEM6OlJlY2VpdmVyTmFtZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXI7Cit9CisKK2NsYXNzIFNl
bmRTdHJlYW1CdWZmZXIgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8Y29uc3QgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJj47CisKKyAgICBzdGF0aWMgSVBD
OjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhT
dHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZlcjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgU2VuZFN0cmVhbUJ1ZmZlcihjb25zdCBJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIHN0cmVhbSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhz
dHJlYW0pCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgVGVz
dFdpdGhTdHJlYW1CdWZmZXIKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVz
c2FnZXNSZXBsaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdmYTJhZDdkNTA2
MzAwZjNjY2IzOTBmMTk3MjU5ZDkwZTY5M2YzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1Jl
cGxpZXMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIg
eworCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyCit9IC8vIG5hbWVzcGFj
ZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44Mzk4ODU1YWQ1NmU5NTE5OTdjOWQyYWIzZjg4ODA5NGM4ODkyMzI2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVh
bU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAq
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbS5oIgorCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAi
SGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Zv
aWQgVGVzdFdpdGhTdHJlYW06OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVh
bTo6U2VuZFN0cmluZzo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNz
YWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0
aFN0cmVhbTo6c2VuZFN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJp
bmdTeW5jaHJvbml6ZWQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkPihkZWNvZGVyLCB0
aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFS
QU0oY29ubmVjdGlvbik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGJmZWJhYjIz
NzJjMWY2NjA1YzU1ODk0NTkzOGJmMWU0ZTdhYWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKQEAg
LTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
TWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMu
aCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisKK25hbWVzcGFj
ZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0geworCitzdGF0aWMgaW5saW5l
IElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJ
UEM6OlJlY2VpdmVyTmFtZTo6VGVzdFdpdGhTdHJlYW07Cit9CisKK2NsYXNzIFNlbmRTdHJpbmcg
eworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5n
Jj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZzsgfQorICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgU2VuZFN0cmluZyhjb25zdCBT
dHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKwor
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOworfTsKKworY2xhc3MgU2VuZFN0cmluZ1N5bmNocm9uaXplZCB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsKKworICAgIHN0
YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkOyB9CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxpbnQ2
NF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGludDY0X3Q+Owor
ICAgIGV4cGxpY2l0IFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQoY29uc3QgU3RyaW5nJiB1cmwpCisg
ICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1
bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVu
dHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0
cmVhbU1lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYzVhMDc4ZGUw
MWVjMTQzMGY4OTRmMjBjYjljMmY5MTU1ZTdjYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVz
LmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCitu
YW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtIHsKKworCit9IC8v
IG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CmluZGV4IDdmNDA4YmM0NjEwYzEwNTQ5MWQ1YjA2NDFmOGI3MGYzYWY5MWIwNDMuLmJiMWUy
MGQ3NTNkZTUyMTdiYjAyNzU1OGRkMWFkOTgzN2Q3OTdlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQ0
LDggKzE0NCwxMyBAQCBQbGF0Zm9ybS9JUEMvRW5jb2Rlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9y
bS9JUEMvSlNJUENCaW5kaW5nLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVj
ZWl2ZXJNYXAuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuY3BwIEBu
by11bmlmeQorUGxhdGZvcm0vSVBDL0Rlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5jcHAgQG5vLXVu
aWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9J
UEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ29u
bmVjdGlvblByb2Nlc3Nvci5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNw
cCBAbm8tdW5pZnkKIAogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIEBu
by11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmgKaW5kZXggYzMzMDc4MjViMjAwODZkZWQ0Yzg2YzY0ODhjZTVkZDU3ZWMwYzM1OC4u
ODk1MjA4YzNiYzIyNmQ2ZmIxMjg2MWRhNDM3Y2RhMzgxZjQ4ZDYzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNp
bmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
cXVlc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcAppbmRleCAzMDFkMGVkODMwZGJlZDkwOGNiYjI3ODg2ZjA0YThmZWVhOWZkODllLi4y
M2FiMTBkNjNhNGY0YTNmZDIwY2VkNGQ3MzAxNzNmNDc1ZGM3ZjVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0Fy
ZWFQcm94eS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiSGFu
ZGxlTWVzc2FnZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVhYmE5NmYzNjU3NmQy
OGE5MjMzMTIyMmRjYTY3NTJjZWRjOTI0MzYuLjlkNDhkMjFlMmY2MGM5MTFkNTliMTgzYTNmYzRj
ODVmYWFkMWZkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTMyNyw2ICsxMzI3LDE5IEBACiAJCTdBRkJEMzY3MjFFNTFCQUIwMDVE
QkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzY1MjFFNTFCQUIwMDVEQkFD
QiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCAqLzsgfTsKIAkJN0FGQkQz
NkYyMUU1NDZGODAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAv
KiBQZXJzaXN0ZW5jeVV0aWxzLmggKi87IH07CiAJCTdCMURCMjY2MjU2NjhDRTEwMDBFMjZCQyAv
KiBBcnJheVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0IxREIyNjUyNTY2OENFMDAwMEUyNkJDIC8qIEFycmF5UmVmZXJlbmNlLmggKi87
IH07CisJCTdCNEM5OTRBMjU4QjlFQTYwMDI1QTZGNCAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0Qzk5
NDkyNThCOUVBNjAwMjVBNkY0IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi87IH07CisJ
CTdCNzMxMUU1MjVBRjEyMzUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFFNDI1QUYx
MjM1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovOyB9OworCQk3QjczMTFF
NzI1QUYxMzlFMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTFFNjI1QUYxMzlEMDAz
QjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi87IH07CisJCTdCNzMxMjBFMjVD
MUY1NjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIwQzI1QzFGNTYzMDAzQjI3
OTYgLyogU3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvci5oICovOyB9OworCQk3QjczMTIwRjI1QzFG
NTYzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIwRDI1QzFGNTYzMDAzQjI3
OTYgLyogU3RyZWFtQ29ubmVjdGlvblByb2Nlc3Nvci5jcHAgKi87IH07CisJCTdCNzMxMjExMjVD
MzAzQUUwMDNCMjc5NiAvKiBNZXNzYWdlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIxMDI1QzMwM0FFMDAzQjI3OTYgLyogTWVzc2Fn
ZUZpbHRlci5oICovOyB9OworCQk3QjczMTIxNDI1QzMwM0NFMDAzQjI3OTYgLyogRGVzdGluYXRp
b25NZXNzYWdlRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCNzMxMjEyMjVDMzAzQ0QwMDNCMjc5NiAvKiBEZXN0aW5hdGlvbk1lc3NhZ2VG
aWx0ZXIuY3BwICovOyB9OworCQk3QjczMTIxNTI1QzMwM0NFMDAzQjI3OTYgLyogRGVzdGluYXRp
b25NZXNzYWdlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjczMTIxMzI1QzMwM0NEMDAzQjI3OTYgLyogRGVzdGluYXRpb25NZXNzYWdlRmls
dGVyLmggKi87IH07CisJCTdCNzMxMjE3MjVDMzBBOEUwMDNCMjc5NiAvKiBTZW1hcGhvcmVIYW5k
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMx
MjE2MjVDMzBBOEQwMDNCMjc5NiAvKiBTZW1hcGhvcmVIYW5kbGUuaCAqLzsgfTsKKwkJN0I3MzEy
MUMyNUM0MTkyQzAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjE4MjVDNDE5MkMwMDNC
Mjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggKi87IH07CisJCTdCNzMxMjFEMjVDNDE5
MkMwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIxOTI1QzQxOTJDMDAzQjI3OTYgLyog
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oICovOyB9OworCQk3QjczMTIyMDI1QzQxOTQwMDAzQjI3
OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIxQjI1QzQxOTJDMDAzQjI3OTYgLyogU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5jcHAgKi87IH07CisJCTdCNzMxMjIxMjVDNDE5NDAwMDNCMjc5NiAv
KiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjFBMjVDNDE5MkMwMDNCMjc5NiAvKiBTdHJlYW1DbGll
bnRDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNB
MDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1
Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QzFCQTMzRTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRB
MEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTQ1MTYsNyArNDUyOSwy
MCBAQAogCQk3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQZXJzaXN0ZW5jeVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QjFEQjI2NTI1NjY4Q0UwMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJyYXlSZWZlcmVuY2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I0Qzk5NDkyNThCOUVBNjAwMjVBNkY0IC8qIFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMUU0MjVBRjEyMzUwMDNCMjc5NiAvKiBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEx
RTYyNUFGMTM5RDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjBDMjVDMUY1NjMwMDNCMjc5NiAv
KiBTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I3MzEyMEQyNUMxRjU2MzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Qcm9j
ZXNzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29u
bmVjdGlvblByb2Nlc3Nvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMx
MjEwMjVDMzAzQUUwMDNCMjc5NiAvKiBNZXNzYWdlRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0I3MzEyMTIyNUMzMDNDRDAwM0IyNzk2IC8qIERlc3RpbmF0aW9uTWVzc2FnZUZpbHRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXN0aW5hdGlvbk1l
c3NhZ2VGaWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIxMzI1
QzMwM0NEMDAzQjI3OTYgLyogRGVzdGluYXRpb25NZXNzYWdlRmlsdGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIxNjI1QzMwQThEMDAzQjI3OTYgLyogU2VtYXBo
b3JlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbWFwaG9yZUhh
bmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIxODI1QzQxOTJDMDAz
QjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCNzMxMjE5MjVDNDE5MkMwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMUEyNUM0MTkyQzAw
M0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjFCMjVDNDE5MkMwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qjkw
NDE2NzI1NEFGRTE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg5Myw2ICs2OTE5LDggQEAKIAkJCQkxQUM3
NTM3RTE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUJDMDMyRDlE
MTBGNDM3RDEwMDU4QzE1QSAvKiBEZWNvZGVyLmNwcCAqLywKIAkJCQlCQzAzMkQ5RTEwRjQzN0Qx
MDA1OEMxNUEgLyogRGVjb2Rlci5oICovLAorCQkJCTdCNzMxMjEyMjVDMzAzQ0QwMDNCMjc5NiAv
KiBEZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuY3BwICovLAorCQkJCTdCNzMxMjEzMjVDMzAzQ0Qw
MDNCMjc5NiAvKiBEZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuaCAqLywKIAkJCQlCQzAzMkQ5RjEw
RjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5jcHAgKi8sCiAJCQkJQkMwMzJEQTAxMEY0MzdEMTAw
NThDMTVBIC8qIEVuY29kZXIuaCAqLywKIAkJCQk5QkQ4QUI0OTI1ODIwRTUyMDA1Mzg2RjggLyog
Rm9udFJlZmVyZW5jZS5oICovLApAQCAtNjkwMiwxNiArNjkzMCwyNyBAQAogCQkJCTlCRjVFQzYz
MjU0MTBFOTkwMDk4NEU3NyAvKiBKU0lQQ0JpbmRpbmcuY3BwICovLAogCQkJCTlCNDc5MDhFMjUz
MTUxQ0MwMEVDMTFBQiAvKiBKU0lQQ0JpbmRpbmcuaCAqLywKIAkJCQk5QjQ3OTA4QzI1MzE0RDgz
MDBFQzExQUIgLyogTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmggKi8sCisJCQkJN0I3MzEy
MTAyNUMzMDNBRTAwM0IyNzk2IC8qIE1lc3NhZ2VGaWx0ZXIuaCAqLywKIAkJCQkxQUM0QzgyODE2
Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZsYWdzLmggKi8sCiAJCQkJMUEzRUVEMTExNjFBNTNE
NjAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlci5oICovLAogCQkJCTFBM0VFRDBDMTYxQTUzNTMw
MEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuY3BwICovLAogCQkJCTFBM0VFRDBEMTYxQTUz
NTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCAqLywKIAkJCQkxQUFCMDM3NzE4NUE3
QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5jcHAgKi8sCiAJCQkJMUFBQjAzNzgxODVBN0M2
QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuaCAqLywKKwkJCQk3QjczMTIxNjI1QzMwQThEMDAz
QjI3OTYgLyogU2VtYXBob3JlSGFuZGxlLmggKi8sCiAJCQkJMkRDMTgwMDFEOTBEREQxNUZDNjk5
MUE5IC8qIFNoYXJlZEJ1ZmZlckNvcHkuY3BwICovLAogCQkJCTVDQzVEQjkxMjE0ODhFMTYwMDZD
QjhBOCAvKiBTaGFyZWRCdWZmZXJDb3B5LmggKi8sCiAJCQkJMkRDMTg1NUVEQkZCODUwQkEwQjZE
MDZEIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwICovLAogCQkJCTJEQzE4ODFBQ0JD
QUI1RDU3QzVDNkVGMCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggKi8sCisJCQkJN0I3
MzEyMUEyNUM0MTkyQzAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwICovLAor
CQkJCTdCNzMxMjE4MjVDNDE5MkMwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgg
Ki8sCisJCQkJN0I3MzExRTYyNUFGMTM5RDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIuY3BwICovLAorCQkJCTdCNzMxMUU0MjVBRjEyMzUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmggKi8sCisJCQkJN0I0Qzk5NDkyNThCOUVBNjAwMjVBNkY0IC8qIFN0cmVhbUNv
bm5lY3Rpb25FbmNvZGVyLmggKi8sCisJCQkJN0I3MzEyMEQyNUMxRjU2MzAwM0IyNzk2IC8qIFN0
cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3IuY3BwICovLAorCQkJCTdCNzMxMjBDMjVDMUY1NjMwMDNC
Mjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yLmggKi8sCisJCQkJN0I3MzEyMUIyNUM0
MTkyQzAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTdCNzMx
MjE5MjVDNDE5MkMwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi8sCiAJCQkJ
MUFFMDBENjkxODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5jcHAgKi8sCiAJCQkJ
MUFFMDBENkExODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oICovLAogCQkJKTsK
QEAgLTExNTY0LDYgKzExNjAzLDcgQEAKIAkJCQkxQUM3NTM4MDE4M0JFNTBGMDA3MkNCMTUgLyog
RGF0YVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwMzZBRTkyM0E5NzA4NzAwMDBC
MDZBIC8qIERlYnVnZ2FibGVJbmZvRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEQTYx
MEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjE1
MjVDMzAzQ0UwMDNCMjc5NiAvKiBEZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3Mjk3RjlGMUMxN0JCRUEwMTVGMDczNSAvKiBEZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwQzU2RkQyMjlGMURFQTAwQkQzM0U3IC8qIERl
dmljZU1hbmFnZW1lbnRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBQURBOEYyMjk4
QzIxMDAwRTM2QjBDIC8qIERldmljZU1hbmFnZW1lbnRTUEkuaCBpbiBIZWFkZXJzICovLApAQCAt
MTE2OTIsNiArMTE3MzIsNyBAQAogCQkJCUExNTc5OUI3MjU4NDQzMzIwMDUyODIzNiAvKiBNZWRp
YVRyYWNrUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMz
RUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI0NzkwOEQyNTMxNEQ4
MzAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJN0I3MzEyMTEyNUMzMDNBRTAwM0IyNzk2IC8qIE1lc3NhZ2VGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQzRDODI5MTZCODc2QTkwMDY5RENDRCAvKiBNZXNzYWdlRmxhZ3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBM0VFRDEyMTYxQTUzRDYwMEFFQjRGNSAvKiBNZXNzYWdlUmVj
ZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0VFRDBGMTYxQTUzNTQwMEFFQjRGNSAvKiBN
ZXNzYWdlUmVjZWl2ZXJNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMTE3MzcsNiArMTE3NzgsNyBA
QAogCQkJCTgzOTkwMjAzMUJFOUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODNENDU0RDcxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzkxNDk2NTFCRUE4Mzg1MDBEMkQ5NTMgLyogTmV0d29y
a0xvYWRQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDdGQzhBMDI1QjgzMzFDMDA1
NDk1RkMgLyogTmV0d29ya0xvYWRTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNzk1
NTZBMTYyODc2RjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE3Q0YwRTQxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0MjZFRDFDMjNGODA5MDBENDExODMgLyog
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtMTE5
MTEsNiArMTE5NTMsNyBAQAogCQkJCUUxOEU2OTBDMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVt
U2hpbVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMThFNjkxODE2OUI2NjdCMDA5QjY2NzAg
LyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBBQjhG
MzIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJN0I3MzEyMTcyNUMzMEE4RTAwM0IyNzk2IC8qIFNlbWFwaG9yZUhhbmRsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NUExOTU0QTQyQjAwQzQ4RkZBIC8qIFNlc3Np
b25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDkxOTZCMzQ1RDAwQjlBRDQ0IC8q
IFNlc3Npb25TdGF0ZUNvZGluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTk1MCw2ICsxMTk5Mywx
MSBAQAogCQkJCTkzNkIwNTk4MjMwMzkwOTcwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM2OEVFREYyMzAzQTlFRDAwQkRCMTFBIC8qIFN0b3JhZ2VN
YW5hZ2VyU2V0TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NUY0RTA2MjMwQjJFOTUw
MDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJN0I3MzEyMUMyNUM0MTkyQzAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTdCNzMxMUU1MjVBRjEyMzUwMDNCMjc5NiAvKiBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjRDOTk0QTI1OEI5RUE2MDAyNUE2
RjQgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMx
MjBFMjVDMUY1NjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uUHJvY2Vzc29yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QjczMTIxRDI1QzQxOTJDMDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENkMxODMyN0MxMjAwMDg3REQ3IC8q
IFN0cmluZ1JlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk2QkQ4NUQxNTAxOUJDMzAw
NzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODYy
MkIzNTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMjEwMCw3ICsxMjE0OCw2IEBACiAJCQkJOTNBODhCMzMxQkM2RTlDRDAw
QUJBNUMyIC8qIFdlYkhpdFRlc3RSZXN1bHREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDRE
RkVCMjFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTMyNjExNjEyMTQwNTRGNDAwMDgwNkU3IC8qIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ3RkM4QTAyNUI4MzMxQzAwNTQ5NUZDIC8qIE5ldHdv
cmtMb2FkU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTQxMjk5NDFDNjQyOEJCMDA1
OUU3MTQgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTA1MjM3NDFDNzNEMzhCMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzM0U4MzU1MjNBMDdDMDYwMERFRjI4OSAvKiBXZWJJ
REJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM2NTQsNiArMTM3MDEsNyBAQAogCQkJCTJE
OTJBNzdEMjEyQjZBNzEwMEY0OTNGRCAvKiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEOTJBNzdGMjEyQjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQ5REFBMzhDMjRDQkExQTgwMDc5M0Q3NSAvKiBEZWZhdWx0V2ViQnJvd3NlckNoZWNr
cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjE0MjVDMzAzQ0UwMDNCMjc5NiAvKiBEZXN0
aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQwQzU2RkUyMjlG
MURFQTAwQkQzM0U3IC8qIERldmljZU1hbmFnZW1lbnRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFBQjdENjE5MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjQyMjk5MTJERDAyOTIwMENBQUUyQyAv
KiBEcmF3aW5nQXJlYU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzNzc2
LDYgKzEzODI0LDEwIEBACiAJCQkJOTNENkI3ODIyNTRDQ0NGNDAwNThERDNBIC8qIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
MzM0REVEMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzY4RUVERTIzMDNBOTAyMDBCREIxMUEgLyogU3RvcmFn
ZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I3MzEy
MjEyNUM0MTk0MDAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJN0I3MzExRTcyNUFGMTM5RTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I3MzEyMEYyNUMxRjU2MzAwM0IyNzk2IC8q
IFN0cmVhbUNvbm5lY3Rpb25Qcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I3MzEy
MjAyNUM0MTk0MDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkQ5MkE3ODMyMTJCNkE3MTAwRjQ5M0ZEIC8qIFN0cmluZ1JlZmVyZW5jZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc1MTIxMjZBMjgyMDA2Rjg4NzggLyogVW5pZmll
ZFNvdXJjZTEtbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc1MjIxMjZBMjgyMDA2Rjg4
NzggLyogVW5pZmllZFNvdXJjZTEuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCAxN2RmMmRiZDZmMTdhM2U2ZjYyMzk2MWFl
ZTIzMmFjZmViMTIxNWEzLi43YWY4NGQ1MzNjOTEzZjJmY2E5NjcyNzM0ZWRjMmUwNWI5MDRiYjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTQ4LDQ2
ICs0OCw1MSBAQCBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGF0dHJpYnV0ZXMpKTsKIH0KIAorc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdFN0cmVhbVNpemUgPSAxIDw8IDE0OworCiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCiAgICAgOiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZShhdHRycykKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKSwgZGVmYXVsdFN0cmVhbVNpemUpCiB7Ci0gICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAm
IG1lc3NhZ2VSZWNlaXZlck1hcCA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCkubWVzc2FnZVJlY2VpdmVyTWFwKCk7CisgICAgYXV0byYgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNz
Q29ubmVjdGlvbigpOworCisgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNl
aXZlck1hcCA9IGdwdVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VSZWNlaXZlck1hcCgpOwogICAg
IG1lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwotICAgIHNlbmQoTWVzc2FnZXM6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJz
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciksIDApOworICAgIGdwdVByb2Nlc3NDb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIG1fc3RyZWFtQ29ubmVjdGlvbi5zdHJlYW1CdWZmZXIoKSksIDApOwogfQogCiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eSgpCiB7Ci0gICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAmIG1lc3NhZ2VSZWNlaXZlck1hcCA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubWVz
c2FnZVJlY2VpdmVyTWFwKCk7CisgICAgYXV0byYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyTWFwJiBtZXNzYWdlUmVjZWl2ZXJNYXAgPSBncHVQcm9jZXNzQ29u
bmVjdGlvbi5tZXNzYWdlUmVjZWl2ZXJNYXAoKTsKICAgICBtZXNzYWdlUmVjZWl2ZXJNYXAucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpSZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wobV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpLCAwKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVsZWFzZUdyYXBo
aWNzQ29udGV4dEdMKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCk7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgcGxhdGZvcm1Td2FwQ2hhaW4oKS5yZWN5Y2xlQnVmZmVyKCk7CiAj
ZW5kaWYKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICZXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KTsKLX0KLQotdWludDY0X3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAotewotICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOwotfQotCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogeworICAgIGlmIChtX2Rp
ZExvc2VDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVzaGFwZSh3aWR0aCwgaGVpZ2h0KSkpCisgICAgICAg
IHdhc0xvc3QoKTsKICAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRoOwogICAgIG1fY3VycmVudEhl
aWdodCA9IGhlaWdodDsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UmVzaGFwZSh3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNw
bGF5KCkKIHsKKyAgICBpZiAobV9kaWRMb3NlQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlclNlbmRSaWdo
dDsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBh
cmVGb3JEaXNwbGF5KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UHJlcGFy
ZUZvckRpc3BsYXk6OlJlcGx5KGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheSgpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlByZXBhcmVGb3JEaXNwbGF5OjpSZXBs
eShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSk7CisgICAgaWYgKCFzZW5kUmVzdWx0KSB7CisgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBhdXRvIGRpc3BsYXlC
dWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVm
ZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CiAgICAgaWYgKGRpc3BsYXlCdWZm
ZXIpIHsKICAgICAgICAgLy8gQ2xhaW0gaW4gdGhlIFdlYlByb2Nlc3Mgb3duZXJzaGlwIG9mIHRo
ZSBJT1N1cmZhY2UgY29uc3RydWN0ZWQgYnkgdGhlIEdQVVByb2Nlc3Mgc28gdGhhdCBKZXRzYW0g
a25vd3Mgd2hpY2ggcHJvY2Vzc2VzIHRvIGtpbGwuCkBAIC05OCwxOSArMTAzLDMxIEBAIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkoKQogICAgICAg
ICBzYy5wcmVzZW50KHsgV1RGTW92ZShkaXNwbGF5QnVmZmVyKSwgbnVsbHB0ciB9KTsKICAgICB9
CiAjZWxzZQotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQ
cmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UHJlcGFyZUZvckRpc3BsYXkoKSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpQcmVwYXJlRm9yRGlzcGxheTo6UmVwbHkoKSk7CisgICAgaWYgKCFz
ZW5kUmVzdWx0KSB7CisgICAgICAgIHdhc0xvc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICNlbmRpZgogICAgIG1hcmtMYXllckNvbXBvc2l0ZWQoKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjplbnN1cmVFeHRlbnNpb25FbmFibGVkKGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBpZiAobV9kaWRMb3NlQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpFbnN1cmVFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbikpOworICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgd2FzTG9zdCgpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Om5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKG1fZGlkTG9zZUNvbnRleHQp
CisgICAgICAgIHJldHVybjsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Tm90aWZ5TWFya0NvbnRleHRDaGFuZ2VkKCkpOworICAg
IGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgd2FzTG9zdCgpOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnNpbXVsYXRlQ29udGV4dENoYW5nZWQoKQpAQCAtMTM1LDE5
ICsxNTIsMjEgQEAgUmVmUHRyPEltYWdlRGF0YT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKFN0cmlu
ZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoSVBDOjpTZW1hcGhv
cmVIYW5kbGUmJiBzZW1hcGhvcmVIYW5kbGUsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMs
IFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCiB7CiAgICAgaWYgKG1fZGlkSW5pdGlhbGl6
ZSkgewogICAgICAgICAvLyBJbml0aWFsaXphdGlvbiB0aW1lZCBvdXQgYmVmb3JlLCBzbyBsb3Nl
IHRoZSBjb250ZXh0IG5vdy4KICAgICAgICAgd2FzTG9zdCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGluaXRpYWxpemUoYXZhaWxhYmxlRXh0ZW5zaW9ucywgcmVxdWVzdGVkRXh0ZW5z
aW9ucyk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLnNldFdha2VVcEhhbmRsZShXVEZNb3ZlKHNl
bWFwaG9yZUhhbmRsZSkpOworICAgIGluaXRpYWxpemUoV1RGTW92ZShhdmFpbGFibGVFeHRlbnNp
b25zKSwgV1RGTW92ZShyZXF1ZXN0ZWRFeHRlbnNpb25zKSk7CiAgICAgbV9kaWRJbml0aWFsaXpl
ID0gdHJ1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNMb3N0
KCkKIHsKKyAgICBtX2RpZExvc2VDb250ZXh0ID0gdHJ1ZTsKICAgICBmb3IgKGF1dG8qIGNsaWVu
dCA6IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpKQogICAgICAgICBjbGllbnQtPmZvcmNlQ29udGV4
dExvc3QoKTsKIH0KQEAgLTE2Niw3ICsxODUsNiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OndhaXRVbnRpbEluaXRpYWxpemVkKCkKICAgICBpZiAoY29ubmVjdGlvbi0+d2Fp
dEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Oldhc0NyZWF0ZWQ+KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9z
LCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZl
cykpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBUaW1lZCBvdXQsIHNvIHJlcG9ydCBpbml0aWFs
aXplZCB3aXRoIGR1bW15IGRhdGEuIFdlIHNob3VsZCBsb3NlIHRoZSBjb250ZXh0LgotICAgIHdh
c0NyZWF0ZWQoIiIsICIiKTsKICAgICAvLyBGSVhNRTogTmVlZCB0byBtYXJrIHRoZSBjb250ZXh0
IGFzIGxvc3QsIGJ1dCBpdCdzIG5vdCBzYWZlIHRvIGZvcmNlIGxvc3QgaW4gdGhpcyBjYWxsIHN0
YWNrLgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IGE1
YTZmN2ZlYzIwMDU5YzczODU0YzA2YWI1OTU0ZThiZjVhN2M5OGEuLjRlMzkxODk0OTIzMGFmZmIy
ZmFiM2ZjYzgyNjIzZDg1ZWJkMGRhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCkBAIC0yOSwxMSArMjksMTEgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAi
U2VtYXBob3JlSGFuZGxlLmgiCisjaW5jbHVkZSAiU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotCiAjaW5jbHVkZSA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eUJhc2UuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDcsMTggKzQ3LDEz
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgaW4gR1BV
IHByb2Nlc3MuCiAvLyBUaGUgaW1wbGVtZW50YXRpb24gaXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkg
cnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wuCiBjbGFzcyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5IGZpbmFsCi0gICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2Vu
ZGVyCi0gICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgOiBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eT4KICAgICAsIHB1YmxpYyBXZWJDb3JlOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJik7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKSBm
aW5hbDsKIAotICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCi0gICAgSVBDOjpD
b25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwotICAgIHVp
bnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7Ci0KICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIApAQCAtNzMsNiAr
NjgsMTggQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZURhdGE+IHBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkgZmluYWw7CiAgICAgdm9pZCBwYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6SW1hZ2VCdWZmZXIqKSBmaW5hbDsKIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgYXV0byBzZW5kKFQmJiBtZXNzYWdlLCBTZWNvbmRzIHRp
bWVvdXQgPSAxMF9zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi5z
ZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCB0aW1l
b3V0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIGF1dG8gc2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIFNlY29uZHMgdGltZW91
dCA9IDEwX3MpCisgICAgeworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9uLnNlbmRT
eW5jKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBXVEZN
b3ZlKHJlcGx5KSwgdGltZW91dCk7CisgICAgfQorCiAgICAgLy8gRnVuY3Rpb25zIHdpdGggYSBn
ZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdw
dXAtd2ViZ2wgc2NyaXB0LgogICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpIGZp
bmFsOwogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOwpA
QCAtMzc0LDE0ICszODEsMTggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgd2FpdFVudGlsSW5pdGlh
bGl6ZWQoKSBmaW5hbDsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMg
ZGVmYXVsdFNlbmRUaW1lb3V0ID0gMTBfczsKKwogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2Vp
dmVkLgotICAgIHZvaWQgd2FzQ3JlYXRlZChTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBT
dHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICB2b2lkIHdhc0NyZWF0ZWQoSVBDOjpT
ZW1hcGhvcmVIYW5kbGUmJiwgU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYg
cmVxdWVzdGVkRXh0ZW5zaW9ucyk7CiAgICAgdm9pZCB3YXNMb3N0KCk7CiAgICAgdm9pZCB3YXND
aGFuZ2VkKCk7CiAKICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpOwogICAgIGJvb2wgbV9kaWRJbml0aWFs
aXplIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGlkTG9zZUNvbnRleHQgeyBmYWxzZSB9OwogICAg
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciB7IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIElQQzo6
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBtX3N0cmVhbUNvbm5lY3Rpb247CiB9OwogCiAvLyBUaGUg
R0NHTCB0eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlz
IHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNWYyYjMyYjJiYzEw
MTBlZjhlY2QwYWY1Nzc3YWJkNGZhMDhhM2M5MC4uOTZjYTIyY2NkNTM5MzI3ZjNkZDcyZjcyNWJh
NjkwZWExOTdhOTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIHZvaWQgV2FzQ3JlYXRlZChTdHJpbmcgYXZh
aWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lk
IFdhc0NyZWF0ZWQoSVBDOjpTZW1hcGhvcmVIYW5kbGUgc3RyZWFtV2FrZVVwSGFuZGxlLCBTdHJp
bmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKICAg
ICB2b2lkIFdhc0xvc3QoKQogICAgIHZvaWQgV2FzQ2hhbmdlZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVy
YXRlZC5jcHAKaW5kZXggODcxNWI0NDc1NDQzODE4ZjI2YWZlNmZiZmI1NDc2ODJlOTk3OTJiYy4u
NWEyMzdlNWQ0OTRkNzhkNzQ0MTYwNmE0ZWFhZTY0OTBlZWE2OTRiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5l
cmF0ZWQuY3BwCkBAIC0zMiw0MDcgKzMyLDY4NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNr
KCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2V0RmFp
bE5leHRHUFVTdGF0dXNDaGVjaygpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTZXRGYWlsTmV4dEdQVVN0YXR1
c0NoZWNrKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkK
KyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN5bnRoZXNpemVHTEVycm9y
KGVycm9yKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRM
b3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogfQogCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1v
dmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok1v
dmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6Ok1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdDo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TW92ZUVycm9yc1RvU3lu
dGhldGljRXJyb3JMaXN0OjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7
CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9
CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmFjdGl2ZVRleHR1cmUoR0NHTGVudW0gdGV4dHVyZSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlVGV4dHVyZSh0ZXh0dXJlKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4
dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QWN0aXZlVGV4dHVyZSh0ZXh0dXJlKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjphdHRhY2hTaGFkZXIo
UGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QXR0YWNoU2hhZGVyKHBy
b2dyYW0sIHNoYWRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAo
IW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFk
ZXIpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIEdDR0x1
aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRBdHRyaWJMb2NhdGlvbihhcmcwLCBpbmRleCwgbmFt
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJpbmRBdHRyaWJMb2NhdGlvbihhcmcwLCBpbmRleCwgbmFtZSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMSkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEJ1ZmZl
cih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kQnVmZmVyKHRhcmdldCwgYXJnMSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgUGxhdGZvcm1HTE9iamVjdCBh
cmcxKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5k
RnJhbWVidWZmZXIodGFyZ2V0LCBhcmcxKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZEZyYW1lYnVmZmVy
KHRhcmdldCwgYXJnMSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgYXJnMSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6QmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIGFyZzEpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgYXJnMSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmluZFRleHR1cmUoR0NHTGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybUdMT2JqZWN0IGFyZzEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJpbmRUZXh0dXJlKHRhcmdldCwgYXJnMSksIGRlZmF1bHRTZW5kVGltZW91dCk7
CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRDb2xvcihHQ0dM
Y2xhbXBmIHJlZCwgR0NHTGNsYW1wZiBncmVlbiwgR0NHTGNsYW1wZiBibHVlLCBHQ0dMY2xhbXBm
IGFscGhhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
bGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRD
b2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAg
ICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRFcXVhdGlvbihHQ0dMZW51
bSBtb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
bGVuZEVxdWF0aW9uKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCbGVuZEVxdWF0aW9uKG1vZGUpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAg
ICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQ0dMZW51bSBtb2RlUkdCLCBHQ0dMZW51bSBtb2Rl
QWxwaGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJs
ZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
bGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpibGVuZEZ1bmMo
R0NHTGVudW0gc2ZhY3RvciwgR0NHTGVudW0gZGZhY3RvcikKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpCbGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3RvciksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmxlbmRGdW5j
U2VwYXJhdGUoR0NHTGVudW0gc3JjUkdCLCBHQ0dMZW51bSBkc3RSR0IsIEdDR0xlbnVtIHNyY0Fs
cGhhLCBHQ0dMZW51bSBkc3RBbHBoYSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6QmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhh
LCBkc3RBbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1f
ZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0
UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiBHQ0dM
ZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdDR0xlbnVtIHRhcmdldCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNoZWNrRnJhbWVi
dWZmZXJTdGF0dXModGFyZ2V0KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
aGVja0ZyYW1lYnVmZmVyU3RhdHVzOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1czo6UmVwbHkocmV0dXJu
VmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjbGVhcihHQ0dMYml0ZmllbGQg
bWFzaykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xl
YXIobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyKG1hc2spLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAg
fQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQ29sb3IoR0NH
TGNsYW1wZiByZWQsIEdDR0xjbGFtcGYgZ3JlZW4sIEdDR0xjbGFtcGYgYmx1ZSwgR0NHTGNsYW1w
ZiBhbHBoYSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q2xlYXJDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFy
Q29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAg
ICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyRGVwdGgoR0NHTGNsYW1w
ZiBkZXB0aCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q2xlYXJEZXB0aChkZXB0aCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBp
ZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyRGVwdGgoZGVwdGgpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNsZWFyU3RlbmNpbChHQ0dMaW50IHMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkNsZWFyU3RlbmNpbChzKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJTdGVu
Y2lsKHMpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvbG9yTWFzayhHQ0dMYm9vbGVhbiByZWQsIEdDR0xib29sZWFuIGdyZWVu
LCBHQ0dMYm9vbGVhbiBibHVlLCBHQ0dMYm9vbGVhbiBhbHBoYSkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29sb3JNYXNrKHN0YXRpY19jYXN0PGJvb2w+
KHJlZCksIHN0YXRpY19jYXN0PGJvb2w+KGdyZWVuKSwgc3RhdGljX2Nhc3Q8Ym9vbD4oYmx1ZSks
IHN0YXRpY19jYXN0PGJvb2w+KGFscGhhKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbG9yTWFzayhzdGF0
aWNfY2FzdDxib29sPihyZWQpLCBzdGF0aWNfY2FzdDxib29sPihncmVlbiksIHN0YXRpY19jYXN0
PGJvb2w+KGJsdWUpLCBzdGF0aWNfY2FzdDxib29sPihhbHBoYSkpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvbXBpbGVTaGFk
ZXIoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb21waWxlU2hhZGVyKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21w
aWxlU2hhZGVyKGFyZzApLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4SW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9y
ZGVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3Nl
Q29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlciksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleFN1Yklt
YWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdD
R0xpbnQgeW9mZnNldCwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NH
THNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
eCwgeSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUg
PSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVCdWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVC
dWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZUJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZUJ1ZmZl
cjo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAo
IXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiBy
ZXR1cm5WYWx1ZTsKIH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUg
PSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVGcmFtZWJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNy
ZWF0ZUZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpDcmVhdGVGcmFtZWJ1ZmZlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkNyZWF0ZUZyYW1lYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVByb2dyYW0oKQogewogICAgIHVpbnQz
Ml90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3JlYXRlUHJvZ3JhbSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNyZWF0ZVByb2dyYW06OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNyZWF0ZVByb2dyYW0oKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDcmVhdGVQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCiB7CiAgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXIoKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVSZW5kZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRM
b3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVJlbmRlcmJ1ZmZlcjo6UmVwbHkocmV0
dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsK
IH0KIAogUGxhdGZvcm1HTE9iamVjdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVh
dGVTaGFkZXIoR0NHTGVudW0gYXJnMCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVNoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVT
aGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVNoYWRlcihhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVT
aGFkZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y3JlYXRlVGV4dHVyZSgpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUg
PSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVUZXh0dXJlKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRl
VGV4dHVyZTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3Jl
YXRlVGV4dHVyZSgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRl
eHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAg
aWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1
cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y3VsbEZhY2UoR0NHTGVudW0gbW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q3VsbEZhY2UobW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkN1bGxGYWNlKG1v
ZGUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZUJ1ZmZlcihhcmcwKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4
dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlQnVmZmVyKGFyZzApLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZUZyYW1lYnVmZmVy
KFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6RGVsZXRlRnJhbWVidWZmZXIoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRl
bGV0ZUZyYW1lYnVmZmVyKGFyZzApLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAo
IXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVj
dCBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpE
ZWxldGVQcm9ncmFtKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVQcm9ncmFtKGFyZzApLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAg
ICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVJlbmRlcmJ1ZmZlcihh
cmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3Nl
Q29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6RGVsZXRlUmVuZGVyYnVmZmVyKGFyZzApLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0
ZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNoYWRlcihhcmcwKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
RGVsZXRlU2hhZGVyKGFyZzApLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm1HTE9iamVjdCBh
cmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxl
dGVUZXh0dXJlKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUZXh0dXJlKGFyZzApLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmRlcHRoRnVuYyhHQ0dMZW51bSBmdW5jKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEZXB0aEZ1bmMoZnVuYyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoRnVu
YyhmdW5jKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkZXB0aE1hc2soR0NHTGJvb2xlYW4gZmxhZykKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0YXRpY19jYXN0PGJv
b2w+KGZsYWcpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9k
aWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhNYXNrKHN0YXRpY19jYXN0PGJvb2w+KGZs
YWcpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAg
ICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpkZXB0aFJhbmdlKEdDR0xjbGFtcGYgek5lYXIsIEdDR0xjbGFtcGYgekZhcikK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVwdGhSYW5n
ZSh6TmVhciwgekZhciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAo
IW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAg
ICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmRldGFjaFNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIFBsYXRmb3JtR0xPYmplY3Qg
YXJnMSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGV0
YWNoU2hhZGVyKGFyZzAsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZXRhY2hTaGFkZXIoYXJnMCwg
YXJnMSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAg
ICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6ZGlzYWJsZShHQ0dMZW51bSBjYXApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRpc2FibGUoY2FwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlz
YWJsZShjYXApLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQ0dMdWludCBpbmRleCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KGluZGV4KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVz
dWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQgZmly
c3QsIEdDR0xzaXplaSBjb3VudCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0VsZW1lbnRzKEdDR0xl
bnVtIG1vZGUsIEdDR0xzaXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZz
ZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdF
bGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250
ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjplbmFibGUoR0NHTGVudW0gY2FwKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmFibGUoY2FwKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RW5hYmxlKGNhcCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0NH
THVpbnQgaW5kZXgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoaW5kZXgpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmZpbmlzaCgpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZpbmlzaCgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpG
aW5pc2goKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpmbHVzaCgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkZsdXNoKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkZsdXNoKCksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBH
Q0dMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgYXJnMykKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGFyZzMpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQs
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgYXJnMyksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAg
IGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXh0YXJnZXQsIFBs
YXRmb3JtR0xPYmplY3QgYXJnMywgR0NHTGludCBsZXZlbCkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBh
dHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVsKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVi
dWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIGFyZzMsIGxldmVs
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojpmcm9udEZhY2UoR0NHTGVudW0gbW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJvbnRGYWNlKG1vZGUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpG
cm9udEZhY2UobW9kZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2VuZXJhdGVNaXBtYXAoR0NHTGVudW0gdGFyZ2V0KQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZW5lcmF0ZU1pcG1h
cCh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZW5lcmF0ZU1pcG1hcCh0YXJnZXQpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogfQogCiBib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omdl
dEFjdGl2ZUF0dHJpYihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBB
Y3RpdmVJbmZvJiBhcmcyKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWIo
cHJvZ3JhbSwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFj
dGl2ZUF0dHJpYjo6UmVwbHkocmV0dXJuVmFsdWUsIGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6R2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVBdHRyaWI6OlJlcGx5KHJldHVyblZhbHVlLCBhcmcy
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIGJv
b2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9y
bUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQogewog
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4KSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtOjpSZXBseShy
ZXR1cm5WYWx1ZSwgYXJnMiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlm
b3JtKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRBY3RpdmVVbmlmb3JtOjpSZXBseShyZXR1cm5WYWx1ZSwgYXJnMiksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07
Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBdHRy
aWJMb2NhdGlvbihhcmcwLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRBdHRyaWJMb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAg
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb24oYXJnMCwgbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0QXR0cmliTG9jYXRpb246OlJlcGx5KHJldHVyblZhbHVlKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIEdDR0xp
bnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0QnVmZmVyUGFyYW1ldGVyaShHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUg
PSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpH
ZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyUGFyYW1ldGVyaTo6
UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1
cm5WYWx1ZTsKIH0KIAogU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFN0
cmluZyhHQ0dMZW51bSBuYW1lKQogewogICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZyhu
YW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmc6OlJlcGx5
KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAg
IGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
U3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN0cmluZyhuYW1lKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTdHJpbmc6OlJlcGx5KHJldHVy
blZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RmxvYXR2KEdDR0xlbnVt
IHBuYW1lLCBHQ0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIElQQzo6QXJyYXlSZWZl
cmVuY2U8ZmxvYXQ+IHZhbHVlUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHYocG5hbWUsIHZhbHVl
LmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZsb2F0djo6
UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsK
LSAgICBpZiAoc2VuZFJlc3VsdCkKLSAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVw
bHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0KSk7Ci0gICAgCisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RmxvYXR2KHBuYW1lLCB2YWx1
ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRGbG9hdHY6
OlJlcGx5KHZhbHVlUmVwbHkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXpl
ICogc2l6ZW9mKGZsb2F0KSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0SW50ZWdlcnYoR0NHTGVudW0gcG5hbWUsIEdDR0xTcGFu
PEdDR0xpbnQ+IHZhbHVlKQogewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gdmFs
dWVSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2Vydjo6UmVwbHkodmFsdWVS
ZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKLSAgICBpZiAoc2Vu
ZFJlc3VsdCkKLSAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2
YWx1ZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKLSAgICAKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUuYnVmU2l6
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcnY6OlJlcGx5
KHZhbHVlUmVwbHkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1
bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
bWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6
ZW9mKGludDMyX3QpKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogR0NHTGludDY0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEludGVnZXI2NChHQ0dMZW51bSBwbmFtZSkKIHsKICAg
ICBpbnQ2NF90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0KHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NChwbmFtZSksIE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0OjpSZXBseShyZXR1cm5WYWx1ZSksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xpbnQ2ND4ocmV0
dXJuVmFsdWUpOwogfQogCiBHQ0dMaW50NjQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0SW50ZWdlcjY0aShHQ0dMZW51bSBwbmFtZSwgR0NHTHVpbnQgaW5kZXgpCiB7CiAgICAgaW50
NjRfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldEludGVnZXI2NGkocG5hbWUsIGluZGV4KSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpOjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRJbnRlZ2VyNjRpKHBuYW1lLCBpbmRleCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50ZWdlcjY0aTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
Q0dMaW50NjQ+KHJldHVyblZhbHVlKTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpnZXRQcm9ncmFtaShQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0xlbnVt
IHBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9ncmFtaShwcm9ncmFtLCBw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UHJvZ3JhbWk6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFByb2dyYW1pKHBy
b2dyYW0sIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRQcm9n
cmFtaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRCb29sZWFudihHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGJvb2xlYW4+IHZhbHVlKQog
ewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8Ym9vbD4gdmFsdWVSZXBseTsKLSAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dEJvb2xlYW52KHBuYW1lLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRCb29sZWFudjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKLSAgICBpZiAoc2VuZFJlc3VsdCkKLSAgICAgICAgbWVt
Y3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9m
KGJvb2wpKTsKLSAgICAKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRCb29sZWFudihwbmFtZSwgdmFsdWUuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0Qm9vbGVhbnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVl
UmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGJvb2wpKTsKKyAgICAgICAgfQor
ICAgIH0KIH0KIAogR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJy
b3IoKQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250
ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RXJyb3IoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRFcnJvcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGVudW0gYXR0YWNobWVudCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAg
aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodGFy
Z2V0LCBhdHRhY2htZW50LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExv
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpOjpSZXBseShyZXR1
cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkK
KyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwog
fQogCiBTdHJpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0UHJvZ3JhbUluZm9M
b2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0cmluZyByZXR1cm5WYWx1ZSA9IHsg
fTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFBy
b2dyYW1JbmZvTG9nKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFByb2dyYW1JbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRQcm9ncmFtSW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRQcm9ncmFtSW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKEdDR0xlbnVt
IHRhcmdldCwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsg
fTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJuVmFs
dWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh0
YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFNoYWRlcmkoUGxhdGZvcm1HTE9iamVjdCBhcmcwLCBHQ0dMZW51
bSBwbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaShhcmcwLCBw
bmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyaTo6UmVw
bHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5W
YWx1ZTsKIH0KIAogU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNoYWRl
ckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0cmluZyByZXR1cm5WYWx1
ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkdldFNoYWRlckluZm9Mb2coYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6R2V0U2hhZGVySW5mb0xvZzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAg
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6R2V0U2hhZGVySW5mb0xvZyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRTaGFkZXJJbmZvTG9nOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCkBAIC00NDAsMTA0OSAr
NzIwLDE4MDEgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRTaGFkZXJQ
cmVjaXNpb25Gb3JtYXQoR0NHTGVudW0gc2hhZGVyVHlwZSwKIHsKICAgICBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3QsIDI+IHJhbmdlUmVwbHk7CiAgICAgaW50MzJfdCBwcmVjaXNpb25SZXBs
eSA9IHsgfTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBw
cmVjaXNpb25UeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQ6OlJlcGx5KHJhbmdlUmVwbHksIHByZWNpc2lvblJlcGx5KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwotICAgIGlmIChzZW5kUmVzdWx0KSB7
Ci0gICAgICAgIG1lbWNweShyYW5nZS5kYXRhLCByYW5nZVJlcGx5LmRhdGEoKSwgcmFuZ2UuYnVm
U2l6ZSAqIHNpemVvZihpbnQzMl90KSk7Ci0gICAgICAgIGlmIChwcmVjaXNpb24pCi0gICAgICAg
ICAgICAqcHJlY2lzaW9uID0gcHJlY2lzaW9uUmVwbHk7CisgICAgaWYgKCFtX2RpZExvc2VDb250
ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KHNoYWRlclR5cGUs
IHByZWNpc2lvblR5cGUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNo
YWRlclByZWNpc2lvbkZvcm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJlY2lzaW9uUmVwbHkpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAg
ICB3YXNMb3N0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KHJhbmdlLmRh
dGEsIHJhbmdlUmVwbHkuZGF0YSgpLCByYW5nZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsK
KyAgICAgICAgICAgIGlmIChwcmVjaXNpb24pCisgICAgICAgICAgICAgICAgKnByZWNpc2lvbiA9
IHByZWNpc2lvblJlcGx5OworICAgICAgICB9CiAgICAgfQogfQogCiBTdHJpbmcgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtR0xPYmplY3QgYXJn
MCkKIHsKICAgICBTdHJpbmcgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJTb3VyY2UoYXJnMCksIE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlOjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAo
IW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTaGFkZXJTb3VyY2UoYXJnMCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyU291cmNlOjpSZXBs
eShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCiBHQ0dMZmxvYXQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VGV4
UGFyYW1ldGVyZihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGZsb2F0
IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6R2V0VGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmOjpSZXBseShyZXR1cm5WYWx1
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5h
bWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmY6
OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
ZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0
dXJuVmFsdWU7CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0
VGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVtIHBuYW1lKQogewogICAgIGlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmk6OlJlcGx5KHJldHVy
blZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRleFBhcmFtZXRlcmkodGFyZ2V0
LCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VGV4UGFyYW1l
dGVyaTo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpn
ZXRVbmlmb3JtZnYoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMaW50IGxvY2F0aW9uLCBH
Q0dMU3BhbjxHQ0dMZmxvYXQ+IHZhbHVlKQogewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+IHZhbHVlUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24s
IHZhbHVlLmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVu
aWZvcm1mdjo6UmVwbHkodmFsdWVSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAxMF9zKTsKLSAgICBpZiAoc2VuZFJlc3VsdCkKLSAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEs
IHZhbHVlUmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0KSk7Ci0gICAg
CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWZ2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtZnY6OlJlcGx5KHZhbHVlUmVwbHkpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVl
UmVwbHkuZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGZsb2F0KSk7CisgICAgICAgIH0K
KyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0VW5pZm9y
bWl2KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48
R0NHTGludD4gdmFsdWUpCiB7CiAgICAgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiB2YWx1
ZVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5i
dWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtaXY6
OlJlcGx5KHZhbHVlUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
Ci0gICAgaWYgKHNlbmRSZXN1bHQpCi0gICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJl
cGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7Ci0gICAgCisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybWl2KHByb2dy
YW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpHZXRVbmlmb3JtaXY6OlJlcGx5KHZhbHVlUmVwbHkpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEsIHZhbHVlUmVwbHku
ZGF0YSgpLCB2YWx1ZS5idWZTaXplICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAgICAgfQorICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRVbmlmb3JtdWl2
KFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48R0NH
THVpbnQ+IHZhbHVlKQogewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+IHZhbHVl
UmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5i
dWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2
OjpSZXBseSh2YWx1ZVJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OwotICAgIGlmIChzZW5kUmVzdWx0KQotICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSwgdmFsdWVS
ZXBseS5kYXRhKCksIHZhbHVlLmJ1ZlNpemUgKiBzaXplb2YodWludDMyX3QpKTsKLSAgICAKKyAg
ICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtdWl2KHBy
b2dyYW0sIGxvY2F0aW9uLCB2YWx1ZS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRVbmlmb3JtdWl2OjpSZXBseSh2YWx1ZVJlcGx5KSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhLCB2YWx1ZVJl
cGx5LmRhdGEoKSwgdmFsdWUuYnVmU2l6ZSAqIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICB9
CisgICAgfQogfQogCiBHQ0dMaW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFVu
aWZvcm1Mb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IGFyZzAsIGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxvY2F0aW9uKGFyZzAsIG5hbWUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1Mb2NhdGlvbjo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUxv
Y2F0aW9uKGFyZzAsIG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFVuaWZvcm1Mb2NhdGlvbjo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAg
fQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTHNpemVpcHRyIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQ0dMdWludCBpbmRleCwg
R0NHTGVudW0gcG5hbWUpCiB7CiAgICAgdWludDY0X3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAg
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQoaW5kZXgsIHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRWZXJ0ZXhBdHRyaWJPZmZzZXQ6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldChpbmRleCwgcG5hbWUpLCBNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFZlcnRleEF0dHJpYk9mZnNldDo6UmVwbHko
cmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1
bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMc2l6ZWlwdHI+KHJldHVyblZhbHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpoaW50KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0gbW9kZSkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SGludCh0YXJnZXQsIG1v
ZGUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VD
b250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpIaW50KHRhcmdldCwgbW9kZSksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzQnVm
ZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9
OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNCdWZm
ZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNCdWZmZXI6OlJl
cGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyKGFyZzAp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzQnVmZmVyOjpSZXBseShyZXR1
cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkK
KyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdD
R0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmlzRW5hYmxlZChHQ0dMZW51bSBjYXApCiB7CiAgICAgYm9vbCByZXR1
cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OklzRW5hYmxlZChjYXApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OklzRW5hYmxlZDo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
SXNFbmFibGVkKGNhcCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNFbmFi
bGVkOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIEdDR0xib29sZWFu
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzRnJhbWVidWZmZXIoUGxhdGZvcm1HTE9i
amVjdCBhcmcwKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc0ZyYW1lYnVmZmVyKGFyZzApLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXI6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzRnJhbWVidWZmZXIoYXJnMCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNGcmFtZWJ1ZmZlcjo6UmVwbHko
cmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1
bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiBHQ0dMYm9vbGVhbiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojppc1Byb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewog
ICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1Byb2dyYW0oYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6SXNQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpJc1Byb2dyYW0oYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SXNQcm9ncmFtOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9
CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzUmVuZGVyYnVm
ZmVyKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9
OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNSZW5k
ZXJidWZmZXIoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNSZW5k
ZXJidWZmZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
UmVuZGVyYnVmZmVyKGFyZzApLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
UmVuZGVyYnVmZmVyOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5WYWx1ZSk7CiB9CiAKIEdD
R0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2hhZGVyKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTaGFkZXIoYXJnMCksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNTaGFkZXI6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9k
aWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hhZGVyKGFyZzApLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2hhZGVyOjpSZXBseShyZXR1cm5WYWx1ZSksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihy
ZXR1cm5WYWx1ZSk7CiB9CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmlzVGV4dHVyZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OklzVGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1RleHR1cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Oklz
VGV4dHVyZShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1RleHR1
cmU6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpsaW5lV2lkdGgoR0NHTGZsb2F0IGFyZzApCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmVXaWR0aChhcmcwKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4
dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6TGluZVdpZHRoKGFyZzApLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAg
ICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmxpbmtQcm9ncmFtKFBsYXRmb3Jt
R0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6TGlua1Byb2dyYW0oYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkxpbmtQcm9ncmFtKGFyZzAp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBpeGVsU3RvcmVpKEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhlbFN0b3JlaShwbmFt
ZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQaXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnBvbHlnb25PZmZzZXQoR0NHTGZsb2F0IGZhY3RvciwgR0NHTGZsb2F0IHVuaXRzKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb2x5Z29uT2Zmc2V0KGZh
Y3RvciwgdW5pdHMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFt
X2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb2x5Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0KQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdl
KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnNhbXBsZUNvdmVyYWdlKEdDR0xjbGFtcGYgdmFsdWUsIEdDR0xib29sZWFuIGludmVy
dCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxl
Q292ZXJhZ2UodmFsdWUsIHN0YXRpY19jYXN0PGJvb2w+KGludmVydCkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgc3RhdGljX2Nhc3Q8Ym9vbD4oaW52ZXJ0KSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
c2Npc3NvcihHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpT
Y2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTY2lzc29yKHgsIHks
IHdpZHRoLCBoZWlnaHQpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnNoYWRlclNvdXJjZShQbGF0Zm9ybUdMT2JqZWN0IGFyZzAs
IGNvbnN0IFN0cmluZyYgYXJnMSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6U2hhZGVyU291cmNlKGFyZzAsIGFyZzEpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTaGFk
ZXJTb3VyY2UoYXJnMCwgYXJnMSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICgh
c2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmMoR0NHTGVudW0gZnVuYywgR0NH
TGludCByZWYsIEdDR0x1aW50IG1hc2spCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlN0ZW5jaWxGdW5jKGZ1bmMsIHJlZiwgbWFzayksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbEZ1bmNTZXBhcmF0
ZShHQ0dMZW51bSBmYWNlLCBHQ0dMZW51bSBmdW5jLCBHQ0dMaW50IHJlZiwgR0NHTHVpbnQgbWFz
aykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNp
bEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVu
Y2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE1hc2so
R0NHTHVpbnQgbWFzaykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6U3RlbmNpbE1hc2sobWFzayksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlN0ZW5jaWxNYXNrKG1hc2sp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAg
ICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0NHTGVudW0gZmFjZSwgR0NHTHVpbnQgbWFzaykK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1h
c2tTZXBhcmF0ZShmYWNlLCBtYXNrKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U3RlbmNpbE1hc2tTZXBhcmF0
ZShmYWNlLCBtYXNrKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVz
dWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpzdGVuY2lsT3AoR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZh
aWwsIEdDR0xlbnVtIHpwYXNzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpTdGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
U3RlbmNpbE9wKGZhaWwsIHpmYWlsLCB6cGFzcyksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAg
ICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3RlbmNpbE9wU2VwYXJhdGUoR0NH
TGVudW0gZmFjZSwgR0NHTGVudW0gZmFpbCwgR0NHTGVudW0gemZhaWwsIEdDR0xlbnVtIHpwYXNz
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVuY2ls
T3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTdGVu
Y2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleFBhcmFtZXRl
cmYoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTGZsb2F0IHBhcmFtKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0ZXJm
KHRhcmdldCwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyZih0YXJn
ZXQsIHBuYW1lLCBwYXJhbSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2Vu
ZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4UGFyYW1ldGVyaShHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4
dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybTFmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4KQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWYobG9jYXRpb24sIHgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtMWYobG9jYXRpb24sIHgpLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAg
fQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0xZnYoR0NH
TGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWZ2KGxvY2F0aW9uLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4o
di5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xZnYobG9jYXRpb24s
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQq
Pih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtMWkoR0NHTGludCBsb2NhdGlvbiwg
R0NHTGludCB4KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtMWkobG9jYXRpb24sIHgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMWkobG9jYXRp
b24sIHgpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0xaXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGludD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybTFpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAg
ICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp1bmlmb3JtMmYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
MmYobG9jYXRpb24sIHgsIHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMmYobG9jYXRpb24sIHgs
IHkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnVuaWZvcm0yZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NH
TGZsb2F0PiB2KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpVbmlmb3JtMmZ2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlVuaWZvcm0yZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9z
dCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlm
b3JtMmkoR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHkpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaShsb2NhdGlvbiwg
eCwgeSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5p
Zm9ybTJpdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiB2KQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtMml2KGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3Jt
Mml2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgaW50MzJfdCo+KHYuZGF0YSksIHYuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZvcm0zZihH
Q0dMaW50IGxvY2F0aW9uLCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xmbG9hdCB6KQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2Yo
bG9jYXRpb24sIHgsIHksIHopLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM2YobG9jYXRpb24sIHgs
IHksIHopLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnVuaWZvcm0zZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3Qg
R0NHTGZsb2F0PiB2KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpVbmlmb3JtM2Z2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0zZnYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2Fz
TG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1
bmlmb3JtM2koR0NHTGludCBsb2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQg
eikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9y
bTNpKGxvY2F0aW9uLCB4LCB5LCB6KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTNpKGxvY2F0aW9u
LCB4LCB5LCB6KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtM2l2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IHYpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0zaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm0zaXYobG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4odi5kYXRhKSwgdi5idWZTaXpl
KSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAg
ICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6dW5pZm9ybTRmKEdDR0xpbnQgbG9jYXRpb24sIEdDR0xmbG9hdCB4LCBHQ0dMZmxv
YXQgeSwgR0NHTGZsb2F0IHosIEdDR0xmbG9hdCB3KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnVuaWZv
cm00ZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2KQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGZ2KGxv
Y2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4odi5kYXRhKSwgdi5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm00ZnYo
bG9jYXRpb24sIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZmxvYXQqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0K
IAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1bmlmb3JtNGkoR0NHTGludCBs
b2NhdGlvbiwgR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xpbnQgeiwgR0NHTGludCB3KQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGkobG9j
YXRpb24sIHgsIHksIHosIHcpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNGkobG9jYXRpb24sIHgs
IHksIHosIHcpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnVuaWZvcm00aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gdikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VW5pZm9ybTRpdihsb2NhdGlvbiwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQz
Ml90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2LmRhdGEpLCB2LmJ1ZlNpemUp
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp1bmlmb3JtTWF0cml4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiB2YWx1ZSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlv
biwgc3RhdGljX2Nhc3Q8Ym9vbD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHN0YXRpY19j
YXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1NYXRyaXgzZnYoR0NHTGludCBsb2NhdGlvbiwgR0NHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMZmxvYXQ+IHZhbHVlKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4
dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Ym9v
bD4odHJhbnNwb3NlKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdD4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KHZhbHVlLmRhdGEpLCB2YWx1ZS5idWZTaXplKSksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDRmdihHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMYm9vbGVhbiB0cmFuc3Bvc2UsIEdDR0xT
cGFuPGNvbnN0IEdDR0xmbG9hdD4gdmFsdWUpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHN0YXRpY19jYXN0
PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZmxvYXQqPih2YWx1ZS5kYXRhKSwgdmFsdWUuYnVmU2l6ZSkpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7Cisg
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFu
c3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGZsb2F0Kj4odmFsdWUuZGF0YSksIHZhbHVlLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAg
IH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp1c2VQcm9ncmFtKFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VXNlUHJvZ3JhbShhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VXNlUHJvZ3JhbShh
cmcwKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAg
ICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWYWxpZGF0ZVByb2dyYW0o
YXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZhbGlkYXRlUHJvZ3JhbShhcmcwKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhB
dHRyaWIxZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjFmKGluZGV4LCB4KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VmVydGV4QXR0cmliMWYoaW5kZXgsIHgpLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAg
fQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjFm
dihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAxPiB2YWx1ZXMpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
YjFmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMT4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAg
ICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliMWZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAx
PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVm
U2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwg
R0NHTGZsb2F0IHkpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OlZlcnRleEF0dHJpYjJmKGluZGV4LCB4LCB5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0
cmliMmYoaW5kZXgsIHgsIHkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYjJmdihHQ0dMdWludCBpbmRleCwg
R0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCAyPiB2YWx1ZXMpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjJmdihpbmRleCwgSVBDOjpB
cnJheVJlZmVyZW5jZTxmbG9hdCwgMj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZh
bHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmli
MmZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0LCAyPihyZWludGVycHJldF9jYXN0
PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRl
eEF0dHJpYjNmKEdDR0x1aW50IGluZGV4LCBHQ0dMZmxvYXQgeCwgR0NHTGZsb2F0IHksIEdDR0xm
bG9hdCB6KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpW
ZXJ0ZXhBdHRyaWIzZihpbmRleCwgeCwgeSwgeiksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
YjNmKGluZGV4LCB4LCB5LCB6KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
ZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWIzZnYoR0NHTHVpbnQgaW5kZXgs
IEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdCwgMz4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIElQQzo6
QXJyYXlSZWZlcmVuY2U8ZmxvYXQsIDM+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPih2
YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJp
YjNmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgMz4ocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9z
dCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0
ZXhBdHRyaWI0ZihHQ0dMdWludCBpbmRleCwgR0NHTGZsb2F0IHgsIEdDR0xmbG9hdCB5LCBHQ0dM
ZmxvYXQgeiwgR0NHTGZsb2F0IHcpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYjRmKGluZGV4LCB4LCB5LCB6LCB3KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAg
ICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliNGYoaW5kZXgsIHgsIHksIHosIHcpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJp
YjRmdihHQ0dMdWludCBpbmRleCwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0LCA0PiB2YWx1ZXMp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYjRmdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9hdCwgND4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VmVydGV4QXR0cmliNGZ2KGluZGV4LCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0
LCA0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMu
YnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xp
bnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0NHTHNpemVp
IHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUs
IHN0YXRpY19jYXN0PGJvb2w+KG5vcm1hbGl6ZWQpLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwg
c2l6ZSwgdHlwZSwgc3RhdGljX2Nhc3Q8Ym9vbD4obm9ybWFsaXplZCksIHN0cmlkZSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZpZXdwb3J0KEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWln
aHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VD
b250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2Fz
TG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpi
dWZmZXJEYXRhKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpcHRyIGFyZzEsIEdDR0xlbnVtIHVz
YWdlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZm
ZXJEYXRhMCh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcmcxKSwgdXNhZ2UpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7
CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpCdWZmZXJEYXRhMCh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihhcmcx
KSwgdXNhZ2UpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmJ1ZmZlckRhdGEoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gZGF0YSwgR0NHTGVudW0gdXNhZ2UpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlckRhdGExKHRhcmdldCwgSVBDOjpBcnJheVJl
ZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRh
dGEpLCBkYXRhLmJ1ZlNpemUpLCB1c2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJ1ZmZlckRhdGExKHRh
cmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpLCB1c2FnZSksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YnVmZmVy
U3ViRGF0YShHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6QnVmZmVyU3ViRGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZz
ZXQpLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCdWZm
ZXJTdWJEYXRhKHRhcmdldCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cmVhZG5QaXhlbHMoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3BhbjxHQ0dMdm9pZD4gZGF0YSkKIHsKICAgICBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQ4X3Q+IGRhdGFSZXBseTsKLSAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMCh4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEuYnVmU2l6ZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwOjpSZXBseShkYXRhUmVwbHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Ci0gICAgaWYgKHNlbmRSZXN1
bHQpCi0gICAgICAgIG1lbWNweShkYXRhLmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRhdGEuYnVm
U2l6ZSAqIHNpemVvZih1aW50OF90KSk7Ci0gICAgCisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVhZG5QaXhlbHMwKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgZGF0YS5idWZTaXplKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZWFkblBpeGVsczA6OlJlcGx5KGRhdGFSZXBseSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkoZGF0YS5kYXRhLCBkYXRhUmVwbHkuZGF0YSgpLCBk
YXRhLmJ1ZlNpemUgKiBzaXplb2YodWludDhfdCkpOworICAgICAgICB9CisgICAgfQogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRuUGl4ZWxzKEdDR0xpbnQgeCwg
R0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZv
cm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlYWRuUGl4ZWxzMSh4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkg
eworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6UmVhZG5QaXhlbHMxKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlw
ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQog
fQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNp
emVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTJEMCh0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3Jt
YXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAg
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpUZXhJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzLmRhdGEpLCBwaXhlbHMuYnVm
U2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBH
Q0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMaW50
cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRl
eHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG9mZnNldCkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1
bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnRleFN1YkltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50
IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQs
IHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSks
IHBpeGVscy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBp
ZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQwKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIHhv
ZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTJEMSh0YXJnZXQs
IGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChH
Q0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
Q0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6
ZWkgaW1hZ2VTaXplLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdm9pZD4gZGF0YSkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3NlZFRleEltYWdlMkQw
KHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGlt
YWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29tcHJlc3NlZFRleEltYWdlMkQwKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAg
ICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xpbnQgYm9yZGVyLCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRy
IG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29tcHJlc3NlZFRleEltYWdlMkQxKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNl
dCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VD
b250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0NH
TGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9m
ZnNldCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xzaXplaSBpbWFnZVNpemUsIEdDR0xTcGFuPGNvbnN0IEdDR0x2b2lkPiBkYXRhKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRDAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMCh0YXJnZXQsIGxldmVsLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
LmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZTJEMSh0
YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIGlt
YWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDR0xlbnVtIG1vZGUsIEdDR0xpbnQg
Zmlyc3QsIEdDR0xzaXplaSBjb3VudCwgR0NHTHNpemVpIHByaW1jb3VudCkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RHJhd0FycmF5c0luc3RhbmNlZCht
b2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdBcnJheXNJ
bnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7Cisg
ICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdFbGVtZW50
c0luc3RhbmNlZChHQ0dMZW51bSBtb2RlLCBHQ0dMc2l6ZWkgY291bnQsIEdDR0xlbnVtIHR5cGUs
IEdDR0xpbnRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWQobW9k
ZSwgY291bnQsIHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBwcmltY291bnQp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250
ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpEcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBwcmltY291bnQpLCBkZWZhdWx0U2VuZFRp
bWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7
CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnZlcnRleEF0
dHJpYkRpdmlzb3IoR0NHTHVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3Io
aW5kZXgsIGRpdmlzb3IpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4
LCBkaXZpc29yKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogUGxhdGZvcm1HTE9iamVjdCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGVWZXJ0ZXhBcnJheSgpCiB7CiAgICAg
dWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheSgpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVZlcnRleEFycmF5OjpSZXBseShyZXR1cm5W
YWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAg
ICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRlbGV0ZVZlcnRleEFycmF5KFBs
YXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RGVsZXRlVmVydGV4QXJyYXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZVZlcnRleEFycmF5KGFyZzApLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNl
bmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiBHQ0dMYm9vbGVh
biBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojppc1ZlcnRleEFycmF5KFBsYXRmb3JtR0xP
YmplY3QgYXJnMCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheShhcmcwKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5OjpSZXBseShy
ZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBp
ZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5KGFyZzAp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzVmVydGV4QXJyYXk6OlJlcGx5
KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVz
dWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpiaW5kVmVydGV4QXJyYXkoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJy
YXkoYXJnMCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRWZXJ0ZXhBcnJheShhcmcwKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9z
dCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5
QnVmZmVyU3ViRGF0YShHQ0dMZW51bSByZWFkVGFyZ2V0LCBHQ0dMZW51bSB3cml0ZVRhcmdldCwg
R0NHTGludHB0ciByZWFkT2Zmc2V0LCBHQ0dMaW50cHRyIHdyaXRlT2Zmc2V0LCBHQ0dMc2l6ZWlw
dHIgYXJnNCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q29weUJ1ZmZlclN1YkRhdGEocmVhZFRhcmdldCwgd3JpdGVUYXJnZXQsIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihyZWFkT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHdyaXRlT2Zmc2V0KSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzQpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weUJ1ZmZlclN1
YkRhdGEocmVhZFRhcmdldCwgd3JpdGVUYXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWFk
T2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHdyaXRlT2Zmc2V0KSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KGFyZzQpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludHB0ciBvZmZzZXQsIEdDR0xTcGFuPEdDR0x2b2lkPiBkYXRhKQogewogICAgIElQQzo6
QXJyYXlSZWZlcmVuY2U8dWludDhfdD4gZGF0YVJlcGx5OwotICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3Vi
RGF0YSh0YXJnZXQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBkYXRhLmJ1ZlNpemUp
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEJ1ZmZlclN1YkRhdGE6OlJl
cGx5KGRhdGFSZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKLSAg
ICBpZiAoc2VuZFJlc3VsdCkKLSAgICAgICAgbWVtY3B5KGRhdGEuZGF0YSwgZGF0YVJlcGx5LmRh
dGEoKSwgZGF0YS5idWZTaXplICogc2l6ZW9mKHVpbnQ4X3QpKTsKLSAgICAKKyAgICBpZiAoIW1f
ZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRCdWZmZXJTdWJEYXRhKHRhcmdldCwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCksIGRhdGEuYnVmU2l6ZSksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QnVmZmVyU3ViRGF0YTo6UmVwbHkoZGF0YVJlcGx5
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1lbWNweShkYXRh
LmRhdGEsIGRhdGFSZXBseS5kYXRhKCksIGRhdGEuYnVmU2l6ZSAqIHNpemVvZih1aW50OF90KSk7
CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6YmxpdEZyYW1lYnVmZmVyKEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpbnQg
c3JjWDEsIEdDR0xpbnQgc3JjWTEsIEdDR0xpbnQgZHN0WDAsIEdDR0xpbnQgZHN0WTAsIEdDR0xp
bnQgZHN0WDEsIEdDR0xpbnQgZHN0WTEsIEdDR0xiaXRmaWVsZCBtYXNrLCBHQ0dMZW51bSBmaWx0
ZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRG
cmFtZWJ1ZmZlcihzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RY
MSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlcihz
cmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1h
c2ssIGZpbHRlciksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bSBhdHRhY2htZW50LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xpbnQgbGF5ZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwg
dGV4dHVyZSwgbGV2ZWwsIGxheWVyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RnJhbWVidWZmZXJUZXh0dXJl
TGF5ZXIodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0dXJlLCBsZXZlbCwgbGF5ZXIpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Omlu
dmFsaWRhdGVGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0xTcGFuPGNvbnN0IEdDR0xl
bnVtPiBhdHRhY2htZW50cykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6SW52YWxpZGF0ZUZyYW1lYnVmZmVyKHRhcmdldCwgSVBDOjpBcnJheVJlZmVyZW5j
ZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGF0dGFjaG1lbnRz
LmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVG
cmFtZWJ1ZmZlcih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMu
YnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQp
CisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQs
IEdDR0xTcGFuPGNvbnN0IEdDR0xlbnVtPiBhdHRhY2htZW50cywgR0NHTGludCB4LCBHQ0dMaW50
IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRh
cmdldCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50MzJfdCo+KGF0dGFjaG1lbnRzLmRhdGEpLCBhdHRhY2htZW50cy5idWZTaXplKSwgeCwg
eSwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBp
ZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkludmFsaWRhdGVTdWJGcmFtZWJ1ZmZl
cih0YXJnZXQsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDMyX3QqPihhdHRhY2htZW50cy5kYXRhKSwgYXR0YWNobWVudHMuYnVmU2l6ZSks
IHgsIHksIHdpZHRoLCBoZWlnaHQpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAo
IXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRCdWZmZXIoR0NHTGVudW0gc3JjKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZWFkQnVmZmVyKHNy
YyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlJlYWRCdWZmZXIoc3JjKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0K
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGUoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMc2l6ZWkgc2FtcGxlcywgR0NHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUo
dGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4
U3RvcmFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTHNpemVpIGxldmVscywgR0NHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4U3RvcmFnZTJEKHRhcmdl
dCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlRleFN0b3JhZ2UyRCh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnRleFN0b3JhZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBsZXZlbHMs
IEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWln
aHQsIEdDR0xzaXplaSBkZXB0aCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6VGV4U3RvcmFnZTNEKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdG9yYWdlM0QodGFyZ2V0
LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4
SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJuYWxm
b3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRlcHRo
LCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMdm9pZD4gcGl4ZWxzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVs
cy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4SW1hZ2UzRDAodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIs
IGZvcm1hdCwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90PihyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMuZGF0YSksIHBpeGVscy5idWZTaXplKSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgaW50ZXJu
YWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTHNpemVpIGRl
cHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
aW50cHRyIG9mZnNldCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VGV4SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2Rp
ZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhJbWFnZTNEMSh0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAg
ICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dGV4U3ViSW1hZ2UzRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xpbnQgeG9mZnNldCwgR0NHTGludCB5b2Zmc2V0
LCBHQ0dMaW50IHpvZmZzZXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
THNpemVpIGRlcHRoLCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0x2b2lkPiBwaXhlbHMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QwKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4
ZWxzLmRhdGEpLCBwaXhlbHMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpUZXhTdWJJbWFnZTNE
MCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscy5kYXRhKSwgcGl4ZWxzLmJ1ZlNpemUp
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAg
ICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Ojp0ZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NHTHNpemVp
IHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQs
IHR5cGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VGV4
U3ViSW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lk
dGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9m
ZnNldCkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNvcHlUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwg
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleFN1
YkltYWdlM0QodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgeCwgeSwg
d2lkdGgsIGhlaWdodCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAo
IW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwg
bGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAg
ICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTHNpemVpIGRlcHRoLCBHQ0dMaW50IGJvcmRlciwgR0NHTHNpemVpIGltYWdlU2l6ZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhJbWFnZTNEMCh0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXpl
LCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQ4X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEuZGF0YSksIGRhdGEuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVz
c2VkVGV4SW1hZ2UzRDAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50OF90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAg
ICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwgR0NHTGludCBib3JkZXIsIEdDR0xzaXplaSBpbWFn
ZVNpemUsIEdDR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4
SW1hZ2UzRDEodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBib3JkZXIsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAg
ICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGludCB4b2Zmc2V0LCBHQ0dMaW50IHlvZmZzZXQsIEdDR0xpbnQgem9mZnNldCwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMc2l6ZWkgZGVwdGgsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTHNpemVpIGltYWdlU2l6ZSwgR0NHTFNwYW48Y29uc3QgR0NHTHZvaWQ+IGRh
dGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlS
ZWZlcmVuY2U8dWludDhfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5k
YXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEMCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVp
Z2h0LCBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDhf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZT
aXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAg
ICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Y29tcHJlc3NlZFRleFN1YkltYWdlM0QoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMaW50IHhvZmZzZXQsIEdDR0xpbnQgeW9mZnNldCwgR0NHTGludCB6b2Zm
c2V0LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xzaXplaSBkZXB0aCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMc2l6ZWkgaW1hZ2VTaXplLCBHQ0dMaW50cHRyIG9mZnNldCkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29tcHJlc3Nl
ZFRleFN1YkltYWdlM0QxKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG9mZnNldCkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRDEo
dGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGZvcm1hdCwgaW1hZ2VTaXplLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIEdDR0xpbnQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Z2V0RnJhZ0RhdGFMb2NhdGlvbihQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0RnJhZ0RhdGFM
b2NhdGlvbihwcm9ncmFtLCBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRGcmFnRGF0YUxvY2F0aW9uOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRGcmFnRGF0YUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEZyYWdEYXRhTG9jYXRpb246OlJlcGx5KHJldHVy
blZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aShHQ0dMaW50
IGxvY2F0aW9uLCBHQ0dMdWludCB2MCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybTF1aShsb2NhdGlvbiwgdjApLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpV
bmlmb3JtMXVpKGxvY2F0aW9uLCB2MCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aShHQ0dMaW50IGxvY2F0aW9u
LCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlVuaWZvcm0ydWkobG9jYXRpb24sIHYwLCB2MSksIGRlZmF1bHRTZW5kVGltZW91dCk7
CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9
CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTN1aShHQ0dM
aW50IGxvY2F0aW9uLCBHQ0dMdWludCB2MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtM3VpKGxv
Y2F0aW9uLCB2MCwgdjEsIHYyKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTN1aShsb2NhdGlvbiwg
djAsIHYxLCB2MiksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTR1aShHQ0dMaW50IGxvY2F0aW9uLCBHQ0dMdWludCB2
MCwgR0NHTHVpbnQgdjEsIEdDR0x1aW50IHYyLCBHQ0dMdWludCB2MykKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybTR1aShsb2NhdGlvbiwgdjAs
IHYxLCB2MiwgdjMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFt
X2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtNHVpKGxvY2F0aW9uLCB2MCwgdjEs
IHYyLCB2MyksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkK
KyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6dW5pZm9ybTF1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29u
c3QgR0NHTHVpbnQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQz
Ml90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5i
dWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0xdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTJ1aXYoR0NHTGludCBsb2NhdGlv
biwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5
UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0
YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsK
KyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0ydWl2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybTN1aXYo
R0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+IGRhdGEpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVuaWZvcm0zdWl2KGxvY2F0
aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm0zdWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAg
IHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6dW5pZm9ybTR1aXYoR0NHTGludCBsb2NhdGlvbiwgR0NHTFNwYW48Y29uc3QgR0NHTHVpbnQ+
IGRhdGEpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlVu
aWZvcm00dWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OlVuaWZvcm00dWl2KGxvY2F0aW9uLCBJUEM6OkFycmF5UmVmZXJlbmNlPHVp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YS5kYXRhKSwgZGF0
YS5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDJ4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdD
R0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4
MngzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlS
ZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEp
LCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0
aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZs
b2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZT
aXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAg
ICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJpeDN4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29s
ZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewotICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3gyZnYo
bG9jYXRpb24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVu
Y2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRh
LmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9k
aWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBz
dGF0aWNfY2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0Pihy
ZWludGVycHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dW5pZm9ybU1hdHJpeDJ4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRy
YW5zcG9zZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4Mng0ZnYobG9jYXRp
b24sIHN0YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8Zmxv
YXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNp
emUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3Nl
Q29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBzdGF0aWNf
Y2FzdDxib29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
dW5pZm9ybU1hdHJpeDR4MmZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9z
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRpb24sIHN0
YXRpY19jYXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4
dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxi
b29sPih0cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9j
YXN0PGNvbnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9y
bU1hdHJpeDN4NGZ2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIHN0YXRpY19j
YXN0PGJvb2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgewor
ICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0
cmFuc3Bvc2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGZsb2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dW5pZm9ybU1hdHJp
eDR4M2Z2KEdDR0xpbnQgbG9jYXRpb24sIEdDR0xib29sZWFuIHRyYW5zcG9zZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGZsb2F0PiBkYXRhKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpVbmlmb3JtTWF0cml4NHgzZnYobG9jYXRpb24sIHN0YXRpY19jYXN0PGJv
b2w+KHRyYW5zcG9zZSksIElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZmxvYXQqPihkYXRhLmRhdGEpLCBkYXRhLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxib29sPih0cmFuc3Bv
c2UpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGZsb2F0PihyZWludGVycHJldF9jYXN0PGNvbnN0IGZs
b2F0Kj4oZGF0YS5kYXRhKSwgZGF0YS5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpKEdD
R0x1aW50IGluZGV4LCBHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTGludCB6LCBHQ0dMaW50IHcp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0
dHJpYkk0aShpbmRleCwgeCwgeSwgeiwgdyksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0
aShpbmRleCwgeCwgeSwgeiwgdyksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICgh
c2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmliSTRpdihHQ0dMdWludCBpbmRl
eCwgR0NHTFNwYW48Y29uc3QgR0NHTGludCwgND4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpWZXJ0ZXhBdHRyaWJJNGl2KGluZGV4LCBJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJf
dCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4
QXR0cmliSTRpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90LCA0PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6dmVydGV4QXR0cmliSTR1aShHQ0dMdWludCBpbmRleCwgR0NHTHVpbnQgeCwgR0NHTHVp
bnQgeSwgR0NHTHVpbnQgeiwgR0NHTHVpbnQgdykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTR1aShpbmRleCwgeCwgeSwgeiwgdyks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRl
eHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkk0dWkoaW5kZXgsIHgsIHksIHosIHcpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMdWlu
dCwgND4gdmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpWZXJ0ZXhBdHRyaWJJNHVpdihpbmRleCwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dCwgND4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFs
dWVzLmJ1ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICgh
bV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VmVydGV4QXR0cmliSTR1aXYoaW5kZXgsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3QsIDQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDMyX3QqPih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dmVydGV4QXR0cmli
SVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NH
THNpemVpIHN0cmlkZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYklQb2ludGVyKGluZGV4LCBzaXpl
LCB0eXBlLCBzdHJpZGUsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpKSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAg
ICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6VmVydGV4QXR0cmliSVBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIHN0cmlkZSwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG9mZnNldCkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAg
ICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdSYW5nZUVsZW1lbnRzKEdDR0xl
bnVtIG1vZGUsIEdDR0x1aW50IHN0YXJ0LCBHQ0dMdWludCBlbmQsIEdDR0xzaXplaSBjb3VudCwg
R0NHTGVudW0gdHlwZSwgR0NHTGludHB0ciBvZmZzZXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBl
bmQsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAg
ICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAg
ICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZHJhd0J1ZmZlcnMoR0NHTFNwYW48
Y29uc3QgR0NHTGVudW0+IGJ1ZnMpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzKElQQzo6QXJyYXlSZWZlcmVuY2U8dWludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBidWZzLmJ1ZlNpemUp
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6RHJhd0J1ZmZlcnMoSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJf
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZnMuZGF0YSksIGJ1ZnMuYnVm
U2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyaXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdi
dWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IHZhbHVlcykKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdi
dWZmZXIsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBpbnQzMl90Kj4odmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpDbGVhckJ1ZmZlcml2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPih2YWx1ZXMuZGF0YSksIHZh
bHVlcy5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJ1aXYoR0NHTGVudW0gYnVmZmVyLCBHQ0dM
aW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0x1aW50PiB2YWx1ZXMpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsZWFyQnVmZmVydWl2KGJ1
ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTx1aW50MzJfdD4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1ZlNpemUpKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4
dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVmZmVyLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPHVpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4o
dmFsdWVzLmRhdGEpLCB2YWx1ZXMuYnVmU2l6ZSkpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAg
ICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQog
CiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNsZWFyQnVmZmVyZnYoR0NHTGVu
dW0gYnVmZmVyLCBHQ0dMaW50IGRyYXdidWZmZXIsIEdDR0xTcGFuPGNvbnN0IEdDR0xmbG9hdD4g
dmFsdWVzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
bGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgSVBDOjpBcnJheVJlZmVyZW5jZTxmbG9h
dD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBmbG9hdCo+KHZhbHVlcy5kYXRhKSwgdmFsdWVzLmJ1
ZlNpemUpKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRM
b3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xlYXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIs
IElQQzo6QXJyYXlSZWZlcmVuY2U8ZmxvYXQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQq
Pih2YWx1ZXMuZGF0YSksIHZhbHVlcy5idWZTaXplKSksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y2xlYXJCdWZmZXJmaShHQ0dM
ZW51bSBidWZmZXIsIEdDR0xpbnQgZHJhd2J1ZmZlciwgR0NHTGZsb2F0IGRlcHRoLCBHQ0dMaW50
IHN0ZW5jaWwpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OkNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkNsZWFyQnVmZmVyZmkoYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNp
bCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAg
ICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlUXVlcnkoKQogewogICAgIHVpbnQzMl90IHJldHVy
blZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
cmVhdGVRdWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlUXVlcnkoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVR
dWVyeTo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVRdWVyeShQbGF0Zm9ybUdMT2JqZWN0IHF1ZXJ5KQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVRdWVyeShxdWVyeSksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkRlbGV0ZVF1ZXJ5KHF1ZXJ5KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogR0NHTGJv
b2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNRdWVyeShQbGF0Zm9ybUdMT2Jq
ZWN0IHF1ZXJ5KQogewogICAgIGJvb2wgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5KHF1ZXJ5KSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5KHF1ZXJ5KSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1F1ZXJ5OjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFuPihyZXR1cm5W
YWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6YmVnaW5RdWVy
eShHQ0dMZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgcXVlcnkpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luUXVlcnkodGFyZ2V0LCBxdWVy
eSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkJlZ2luUXVlcnkodGFyZ2V0LCBxdWVyeSksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3Qo
KTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZW5kUXVl
cnkoR0NHTGVudW0gdGFyZ2V0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpFbmRRdWVyeSh0YXJnZXQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpFbmRRdWVyeSh0YXJn
ZXQpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiBQbGF0Zm9ybUdMT2JqZWN0IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0g
cG5hbWUpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeSh0YXJnZXQsIHBuYW1l
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeTo6UmVwbHkocmV0
dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnkodGFyZ2V0LCBwbmFt
ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnk6OlJlcGx5KHJl
dHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0
KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7
CiB9CiAKIEdDR0x1aW50IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFF1ZXJ5T2Jq
ZWN0dWkoUGxhdGZvcm1HTE9iamVjdCBxdWVyeSwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgdWlu
dDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRRdWVyeU9iamVjdHVpKHF1ZXJ5LCBwbmFtZSksIE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFt
X2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0UXVlcnlPYmplY3R1aShxdWVyeSwg
cG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFF1ZXJ5T2JqZWN0
dWk6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiB9CiAKIFBsYXRmb3JtR0xPYmplY3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlU2FtcGxlcigpCiB7CiAgICAgdWludDMyX3QgcmV0dXJuVmFsdWUgPSB7
IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVh
dGVTYW1wbGVyKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlU2Ft
cGxlcjo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
MTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRl
U2FtcGxlcigpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVNhbXBs
ZXI6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZGVs
ZXRlU2FtcGxlcihQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVNhbXBsZXIoc2FtcGxlciksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkRlbGV0ZVNhbXBsZXIoc2FtcGxlciksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9
CiAKIEdDR0xib29sZWFuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzU2FtcGxlcihQ
bGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIpCiB7CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IHsgfTsK
LSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2FtcGxl
cihzYW1wbGVyKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXI6
OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3Mp
OworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU2FtcGxlcihz
YW1wbGVyKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1NhbXBsZXI6OlJl
cGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0NHTGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpiaW5kU2FtcGxlcihHQ0dMdWludCB1bml0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IHNhbXBsZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkJpbmRTYW1wbGVyKHVuaXQsIHNhbXBsZXIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpCaW5kU2FtcGxl
cih1bml0LCBzYW1wbGVyKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpzYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0
IHNhbXBsZXIsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMaW50IHBhcmFtKQogewotICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVy
LCBwbmFtZSwgcGFyYW0pLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpTYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVy
LCBwbmFtZSwgcGFyYW0pLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRS
ZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OnNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3JtR0xPYmplY3Qg
c2FtcGxlciwgR0NHTGVudW0gcG5hbWUsIEdDR0xmbG9hdCBwYXJhbSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxl
ciwgcG5hbWUsIHBhcmFtKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxl
ciwgcG5hbWUsIHBhcmFtKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogR0NHTGZsb2F0IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNhbXBsZXJQYXJhbWV0ZXJmKFBsYXRmb3Jt
R0xPYmplY3Qgc2FtcGxlciwgR0NHTGVudW0gcG5hbWUpCiB7CiAgICAgZmxvYXQgcmV0dXJuVmFs
dWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpHZXRTYW1wbGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6R2V0U2FtcGxlclBhcmFtZXRlcmY6OlJlcGx5KHJldHVyblZhbHVl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRM
b3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJmKHNhbXBsZXIs
IHBuYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFy
YW1ldGVyZjo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAg
ICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJl
dHVybiByZXR1cm5WYWx1ZTsKIH0KIAogR0NHTGludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRTYW1wbGVyUGFyYW1ldGVyaShQbGF0Zm9ybUdMT2JqZWN0IHNhbXBsZXIsIEdDR0xl
bnVtIHBuYW1lKQogewogICAgIGludDMyX3QgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVy
aShzYW1wbGVyLCBwbmFtZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
U2FtcGxlclBhcmFtZXRlcmk6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OkdldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXIsIHBuYW1lKSwgTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTYW1wbGVyUGFyYW1ldGVyaTo6UmVwbHkocmV0dXJu
VmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisg
ICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0K
IAogR0NHTHN5bmMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6ZmVuY2VTeW5jKEdDR0xl
bnVtIGNvbmRpdGlvbiwgR0NHTGJpdGZpZWxkIGZsYWdzKQogewogICAgIHVpbnQ2NF90IHJldHVy
blZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6RmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkZlbmNlU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7Cisg
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6RmVuY2VTeW5jKGNvbmRpdGlvbiwgZmxhZ3MpLCBNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkZlbmNlU3luYzo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNM
b3N0KCk7CisgICAgfQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEdDR0xzeW5jPihzdGF0
aWNfY2FzdDxpbnRwdHJfdD4ocmV0dXJuVmFsdWUpKTsKIH0KIAogR0NHTGJvb2xlYW4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aXNTeW5jKEdDR0xzeW5jIGFyZzApCiB7CiAgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OklzU3luYyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4oYXJnMCkpKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJ
c1N5bmM6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OklzU3lu
YyhzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYXJnMCkp
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1N5bmM6OlJlcGx5KHJldHVy
blZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0NH
TGJvb2xlYW4+KHJldHVyblZhbHVlKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpkZWxldGVTeW5jKEdDR0xzeW5jIGFyZzApCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0
ZVN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFy
ZzApKSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAg
ICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIEdDR0xlbnVtIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmNsaWVudFdhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVs
ZCBmbGFncywgR0NHTHVpbnQ2NCB0aW1lb3V0KQogewogICAgIHVpbnQzMl90IHJldHVyblZhbHVl
ID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q2xpZW50V2FpdFN5bmMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGFyZzApKSwgZmxhZ3MsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0aW1lb3V0KSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50V2FpdFN5bmM6OlJlcGx5KHJl
dHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlm
ICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5jKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdz
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odGltZW91dCkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OkNsaWVudFdhaXRTeW5jOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xv
c3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OndhaXRTeW5jKEdDR0xzeW5jIGFyZzAsIEdDR0xiaXRmaWVs
ZCBmbGFncywgR0NHTGludDY0IHRpbWVvdXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVy
cHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih0
aW1lb3V0KSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlk
TG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OldhaXRTeW5jKHN0YXRpY19jYXN0PHVpbnQ2NF90Pihy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIGZsYWdzLCBzdGF0aWNfY2FzdDxpbnQ2
NF90Pih0aW1lb3V0KSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIEdDR0xpbnQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0U3luY2koR0NHTHN5bmMgYXJnMCwgR0NHTGVudW0g
cG5hbWUpCiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpKHN0YXRpY19jYXN0PHVp
bnQ2NF90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihhcmcwKSksIHBuYW1lKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRTeW5jaTo6UmVwbHkocmV0dXJuVmFsdWUp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExv
c2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U3luY2koc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFyZzApKSwgcG5hbWUpLCBNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFN5bmNpOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdh
c0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCiBQbGF0Zm9ybUdM
T2JqZWN0IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKCkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNr
KCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVHJhbnNmb3JtRmVl
ZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNyZWF0
ZVRyYW5zZm9ybUZlZWRiYWNrKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Q3JlYXRlVHJhbnNmb3JtRmVlZGJhY2s6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9iamVj
dCBpZCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6RGVs
ZXRlVHJhbnNmb3JtRmVlZGJhY2soaWQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVUcmFuc2Zvcm1G
ZWVkYmFjayhpZCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIEdDR0xib29sZWFuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmlzVHJhbnNmb3JtRmVlZGJhY2soUGxhdGZvcm1HTE9i
amVjdCBpZCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1GZWVkYmFjayhpZCks
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1GZWVkYmFjazo6
UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7
CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zvcm1G
ZWVkYmFjayhpZCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SXNUcmFuc2Zv
cm1GZWVkYmFjazo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAg
ICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxHQ0dMYm9vbGVhbj4ocmV0dXJuVmFsdWUpOwogfQogCiB2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dM
ZW51bSB0YXJnZXQsIFBsYXRmb3JtR0xPYmplY3QgaWQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0YXJnZXQsIGlk
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29u
dGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6QmluZFRyYW5zZm9ybUZlZWRiYWNrKHRhcmdldCwgaWQpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5UcmFuc2Zvcm1GZWVk
YmFjayhwcmltaXRpdmVNb2RlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAg
IGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmVnaW5UcmFuc2Zvcm1GZWVkYmFj
ayhwcmltaXRpdmVNb2RlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjplbmRUcmFuc2Zvcm1GZWVkYmFjaygpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkVuZFRyYW5zZm9ybUZlZWRiYWNr
KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNv
bnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OkVuZFRyYW5zZm9ybUZlZWRiYWNrKCksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6dHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5ncyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB2YXJ5aW5ncywgR0NHTGVudW0gYnVmZmVyTW9kZSkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhw
cm9ncmFtLCB2YXJ5aW5ncywgYnVmZmVyTW9kZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ3MocHJvZ3JhbSwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIEdDR0x1aW50
IGluZGV4LCBBY3RpdmVJbmZvJiBhcmcyKQogewotICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0s
IGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1G
ZWVkYmFja1Zhcnlpbmc6OlJlcGx5KGFyZzIpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKHByb2dyYW0sIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmc6OlJlcGx5KGFy
ZzIpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0K
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZXN1bWVUcmFuc2Zvcm1G
ZWVkYmFjaygpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OlJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlc3VtZVRyYW5zZm9y
bUZlZWRiYWNrKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6YmluZEJ1ZmZlckJhc2UoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpbmRleCwgUGxhdGZvcm1HTE9iamVjdCBidWZmZXIpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1
ZmZlciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkJpbmRCdWZmZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZl
ciksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAg
ICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6YmluZEJ1ZmZlclJhbmdlKEdDR0xlbnVtIHRhcmdldCwgR0NHTHVpbnQgaW5kZXgs
IFBsYXRmb3JtR0xPYmplY3QgYnVmZmVyLCBHQ0dMaW50cHRyIG9mZnNldCwgR0NHTHNpemVpcHRy
IGFyZzQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkJp
bmRCdWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4LCBidWZmZXIsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihvZmZzZXQpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJnNCkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpC
aW5kQnVmZmVyUmFuZ2UodGFyZ2V0LCBpbmRleCwgYnVmZmVyLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZzQpKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOwor
ICAgIH0KIH0KIAogVmVjdG9yPEdDR0x1aW50PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpnZXRVbmlmb3JtSW5kaWNlcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB1bmlmb3JtTmFtZXMpCiB7CiAgICAgVmVjdG9yPHVpbnQzMl90PiByZXR1cm5W
YWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0sIHVuaWZvcm1OYW1lcyksIE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5pZm9ybUluZGljZXM6OlJlcGx5KHJldHVyblZh
bHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOworICAgIGlmICghbV9k
aWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0s
IHVuaWZvcm1OYW1lcyksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0VW5p
Zm9ybUluZGljZXM6OlJlcGx5KHJldHVyblZhbHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAg
ICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKIFZlY3RvcjxHQ0dMaW50PiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRBY3RpdmVVbmlmb3JtcyhQbGF0Zm9ybUdMT2JqZWN0IHByb2dy
YW0sIGNvbnN0IFZlY3RvcjxHQ0dMdWludD4mIHVuaWZvcm1JbmRpY2VzLCBHQ0dMZW51bSBwbmFt
ZSkKIHsKICAgICBWZWN0b3I8aW50MzJfdD4gcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtcyhw
cm9ncmFtLCB1bmlmb3JtSW5kaWNlcywgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldEFjdGl2ZVVuaWZvcm1zOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQp
IHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3Jtcyhwcm9ncmFtLCB1bmlmb3JtSW5kaWNl
cywgcG5hbWUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEFjdGl2ZVVu
aWZvcm1zOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAg
IGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0
dXJuIHJldHVyblZhbHVlOwogfQogCiBHQ0dMdWludCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRVbmlmb3JtQmxvY2tJbmRleChQbGF0Zm9ybUdMT2JqZWN0IHByb2dyYW0sIGNvbnN0
IFN0cmluZyYgdW5pZm9ybUJsb2NrTmFtZSkKIHsKICAgICB1aW50MzJfdCByZXR1cm5WYWx1ZSA9
IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Okdl
dFVuaWZvcm1CbG9ja0luZGV4KHByb2dyYW0sIHVuaWZvcm1CbG9ja05hbWUpLCBNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFVuaWZvcm1CbG9ja0luZGV4OjpSZXBseShyZXR1
cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAo
IW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleChw
cm9ncmFtLCB1bmlmb3JtQmxvY2tOYW1lKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRVbmlmb3JtQmxvY2tJbmRleDo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogU3RyaW5nIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoUGxhdGZvcm1H
TE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1bmlmb3JtQmxvY2tJbmRleCkKIHsKICAgICBTdHJp
bmcgcmV0dXJuVmFsdWUgPSB7IH07Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIHVuaWZvcm1C
bG9ja0luZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVV
bmlmb3JtQmxvY2tOYW1lOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCAxMF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKHByb2dyYW0sIHVuaWZvcm1CbG9ja0luZGV4
KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxv
Y2tOYW1lOjpSZXBseShyZXR1cm5WYWx1ZSksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAg
IGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0
dXJuIHJldHVyblZhbHVlOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnVuaWZvcm1CbG9ja0JpbmRpbmcoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBHQ0dMdWludCB1
bmlmb3JtQmxvY2tJbmRleCwgR0NHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6VW5pZm9ybUJsb2NrQmluZGlu
Zyhwcm9ncmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmluZGluZyksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OlVuaWZvcm1CbG9ja0JpbmRpbmcocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgs
IHVuaWZvcm1CbG9ja0JpbmRpbmcpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAo
IXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1
aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwg
R0NHTFNwYW48R0NHTGludD4gcGFyYW1zKQogewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4gcGFyYW1zUmVwbHk7Ci0gICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdihwcm9n
cmFtLCB1bmlmb3JtQmxvY2tJbmRleCwgcG5hbWUsIHBhcmFtcy5idWZTaXplKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdjo6UmVwbHko
cGFyYW1zUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7Ci0gICAg
aWYgKHNlbmRSZXN1bHQpCi0gICAgICAgIG1lbWNweShwYXJhbXMuZGF0YSwgcGFyYW1zUmVwbHku
ZGF0YSgpLCBwYXJhbXMuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7Ci0gICAgCisgICAgaWYg
KCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2Nr
aXYocHJvZ3JhbSwgdW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMuYnVmU2l6ZSksIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0QWN0aXZlVW5pZm9ybUJsb2NraXY6
OlJlcGx5KHBhcmFtc1JlcGx5KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFz
ZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIG1lbWNweShwYXJhbXMuZGF0YSwgcGFyYW1zUmVwbHkuZGF0YSgpLCBwYXJhbXMuYnVm
U2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIEdDR0xpbnQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigp
CiB7CiAgICAgaW50MzJfdCByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSwg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCOjpSZXBseShyZXR1cm5WYWx1ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAx
MF9zKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQjo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0
KCk7CisgICAgfQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpibGl0RnJhbWVidWZmZXJBTkdMRShHQ0dMaW50IHNyY1gwLCBH
Q0dMaW50IHNyY1kwLCBHQ0dMaW50IHNyY1gxLCBHQ0dMaW50IHNyY1kxLCBHQ0dMaW50IGRzdFgw
LCBHQ0dMaW50IGRzdFkwLCBHQ0dMaW50IGRzdFgxLCBHQ0dMaW50IGRzdFkxLCBHQ0dMYml0Zmll
bGQgbWFzaywgR0NHTGVudW0gZmlsdGVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCbGl0RnJhbWVidWZmZXJBTkdMRShzcmNYMCwgc3JjWTAsIHNyY1gx
LCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsK
KyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkJsaXRGcmFtZWJ1ZmZlckFOR0xFKHNyY1gwLCBzcmNZMCwgc3JjWDEsIHNyY1kx
LCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywgZmlsdGVyKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpyZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHQ0dMZW51bSB0YXJnZXQsIEdDR0xzaXplaSBz
YW1wbGVzLCBHQ0dMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6
ZWkgaGVpZ2h0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSh0YXJnZXQsIHNhbXBsZXMsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlQU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIFBsYXRmb3JtR0xPYmpl
Y3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQog
ewogICAgIHVpbnQzMl90IHJldHVyblZhbHVlID0geyB9OwotICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlPRVMoKSwgTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJheU9FUzo6UmVwbHko
cmV0dXJuVmFsdWUpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAg
aWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q3JlYXRlVmVydGV4QXJyYXlP
RVMoKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDcmVhdGVWZXJ0ZXhBcnJh
eU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpk
ZWxldGVWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRlbGV0ZVZlcnRleEFycmF5T0VTKGFy
ZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VD
b250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpEZWxldGVWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9z
dCgpOworICAgIH0KIH0KIAogR0NHTGJvb2xlYW4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6aXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybUdMT2JqZWN0IGFyZzApCiB7CiAgICAgYm9vbCBy
ZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OklzVmVydGV4QXJyYXlPRVMoYXJnMCksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUzo6UmVwbHkocmV0dXJuVmFsdWUpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgMTBfcyk7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0
KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6SXNWZXJ0ZXhBcnJheU9FUyhhcmcwKSwgTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpJc1ZlcnRleEFycmF5T0VTOjpSZXBseShyZXR1cm5WYWx1ZSks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAg
ICAgIHdhc0xvc3QoKTsKKyAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDR0xib29sZWFu
PihyZXR1cm5WYWx1ZSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
YmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtR0xPYmplY3QgYXJnMCkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6QmluZFZlcnRleEFycmF5T0VTKGFyZzAp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250
ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpCaW5kVmVydGV4QXJyYXlPRVMoYXJnMCksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsK
KyAgICB9CiB9CiAKIFN0cmluZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogewogICAgIFN0
cmluZyByZXR1cm5WYWx1ZSA9IHsgfTsKLSAgICBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OkdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKSwgTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNl
QU5HTEU6OlJlcGx5KHJldHVyblZhbHVlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IDEwX3MpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldFRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShhcmcwKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEU6OlJlcGx5KHJldHVyblZh
bHVlKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAg
ICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6aW5zZXJ0RXZlbnRNYXJrZXJFWFQo
Y29uc3QgU3RyaW5nJiBhcmcwKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpJbnNlcnRFdmVudE1hcmtlckVYVChhcmcwKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6SW5z
ZXJ0RXZlbnRNYXJrZXJFWFQoYXJnMCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHVzaEdyb3VwTWFya2VyRVhUKGNvbnN0IFN0
cmluZyYgYXJnMCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6UHVzaEdyb3VwTWFya2VyRVhUKGFyZzApLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQdXNoR3JvdXBNYXJr
ZXJFWFQoYXJnMCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3Vs
dCkKKyAgICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cG9wR3JvdXBNYXJrZXJFWFQoKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpQb3BHcm91cE1hcmtlckVYVCgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7Cisg
ICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpQb3BHcm91cE1hcmtlckVYVCgpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAg
ICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmRyYXdCdWZmZXJzRVhUKEdDR0xTcGFu
PGNvbnN0IEdDR0xlbnVtPiBidWZzKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpEcmF3QnVmZmVyc0VYVChJUEM6OkFycmF5UmVmZXJlbmNlPHVpbnQzMl90
PihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmcy5kYXRhKSwgYnVmcy5idWZT
aXplKSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdCdWZmZXJzRVhUKElQQzo6QXJyYXlSZWZlcmVuY2U8
dWludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihidWZzLmRhdGEpLCBi
dWZzLmJ1ZlNpemUpKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVz
dWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9k
ZSwgR0NHTGludCBmaXJzdCwgR0NHTHNpemVpIGNvdW50LCBHQ0dMc2l6ZWkgcHJpbWNvdW50KQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpEcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAg
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291
bnQpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAg
ICAgICAgICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xz
aXplaSBjb3VudCwgR0NHTGVudW0gdHlwZSwgR0NHTHZvaWRwdHIgb2Zmc2V0LCBHQ0dMc2l6ZWkg
cHJpbWNvdW50KQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudCwgdHlwZSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCksIHByaW1jb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkRyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIGNvdW50LCB0eXBlLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4ob2Zmc2V0KSwgcHJpbWNvdW50KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgaWYg
KCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgIH0KIH0KIAogdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0NH
THVpbnQgaW5kZXgsIEdDR0x1aW50IGRpdmlzb3IpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2
aXNvciksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9z
ZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbmRleCwgZGl2
aXNvciksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAg
ICAgICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0SW50ZXJuYWxmb3JtYXRpdihHQ0dMZW51bSB0YXJnZXQsIEdDR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1z
KQogewogICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gcGFyYW1zUmVwbHk7Ci0gICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpHZXRJbnRlcm5hbGZvcm1hdGl2KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHBuYW1lLCBw
YXJhbXMuYnVmU2l6ZSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0SW50
ZXJuYWxmb3JtYXRpdjo6UmVwbHkocGFyYW1zUmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgMTBfcyk7Ci0gICAgaWYgKHNlbmRSZXN1bHQpCi0gICAgICAgIG1lbWNweShwYXJh
bXMuZGF0YSwgcGFyYW1zUmVwbHkuZGF0YSgpLCBwYXJhbXMuYnVmU2l6ZSAqIHNpemVvZihpbnQz
Ml90KSk7Ci0gICAgCisgICAgaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7CisgICAgICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
R2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFtZSwgcGFyYW1z
LmJ1ZlNpemUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkdldEludGVybmFs
Zm9ybWF0aXY6OlJlcGx5KHBhcmFtc1JlcGx5KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIG1lbWNweShwYXJhbXMuZGF0YSwgcGFyYW1zUmVwbHkuZGF0YSgpLCBw
YXJhbXMuYnVmU2l6ZSAqIHNpemVvZihpbnQzMl90KSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAK
IHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUo
R0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3QXJyYXlzQU5HTEUo
bW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGludDMyX3QqPihmaXJzdHMuZGF0YSksIGZpcnN0cy5idWZTaXplKSwgSVBDOjpBcnJheVJlZmVy
ZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihjb3VudHMuZGF0
YSksIGNvdW50cy5idWZTaXplKSwgZHJhd2NvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3
QXJyYXlzQU5HTEUobW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGludDMyX3QqPihmaXJzdHMuZGF0YSksIGZpcnN0cy5idWZTaXplKSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3Qq
Pihjb3VudHMuZGF0YSksIGNvdW50cy5idWZTaXplKSwgZHJhd2NvdW50KSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgd2FzTG9zdCgp
OworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0aURyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRShtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGZpcnN0cy5kYXRhKSwgZmlyc3RzLmJ1ZlNpemUp
LCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50
MzJfdCo+KGNvdW50cy5kYXRhKSwgY291bnRzLmJ1ZlNpemUpLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGluc3RhbmNlQ291bnRz
LmRhdGEpLCBpbnN0YW5jZUNvdW50cy5idWZTaXplKSwgZHJhd2NvdW50KSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6TXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihmaXJzdHMuZGF0YSks
IGZpcnN0cy5idWZTaXplKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJl
dF9jYXN0PGNvbnN0IGludDMyX3QqPihjb3VudHMuZGF0YSksIGNvdW50cy5idWZTaXplKSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3Qq
PihpbnN0YW5jZUNvdW50cy5kYXRhKSwgaW5zdGFuY2VDb3VudHMuYnVmU2l6ZSksIGRyYXdjb3Vu
dCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAg
ICAgICAgIHdhc0xvc3QoKTsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGludD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3RWxlbWVudHNBTkdMRShtb2RlLCBJ
UEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJf
dCo+KGNvdW50cy5kYXRhKSwgY291bnRzLmJ1ZlNpemUpLCB0eXBlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KG9mZnNldHMuZGF0
YSksIG9mZnNldHMuYnVmU2l6ZSksIGRyYXdjb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW1fZGlkTG9zZUNvbnRleHQpIHsKKyAgICAgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok11bHRpRHJh
d0VsZW1lbnRzQU5HTEUobW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihjb3VudHMuZGF0YSksIGNvdW50cy5idWZTaXplKSwg
dHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0
IGludDMyX3QqPihvZmZzZXRzLmRhdGEpLCBvZmZzZXRzLmJ1ZlNpemUpLCBkcmF3Y291bnQpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAg
ICB3YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3Vu
dHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgSVBD
OjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3Qq
Pihjb3VudHMuZGF0YSksIGNvdW50cy5idWZTaXplKSwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihvZmZzZXRzLmRhdGEp
LCBvZmZzZXRzLmJ1ZlNpemUpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGluc3RhbmNlQ291bnRzLmRhdGEpLCBpbnN0YW5jZUNv
dW50cy5idWZTaXplKSwgZHJhd2NvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIGlmICghbV9kaWRMb3NlQ29udGV4dCkgeworICAgICAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRShtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGNvdW50cy5kYXRhKSwgY291bnRzLmJ1ZlNpemUp
LCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgaW50MzJfdCo+KG9mZnNldHMuZGF0YSksIG9mZnNldHMuYnVmU2l6ZSksIElQQzo6QXJyYXlS
ZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oaW5zdGFu
Y2VDb3VudHMuZGF0YSksIGluc3RhbmNlQ291bnRzLmJ1ZlNpemUpLCBkcmF3Y291bnQpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgICAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgICAgICB3
YXNMb3N0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBH
Q0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaAppbmRl
eCBlNGNjY2YwZGM1N2VjODRlYTZlYzRkYTk4MzRjY2NjNGE1YTUxOTczLi44OThlMjBkMTc1NDRi
MjhhOTRjY2Y0NjM2OGQ0ZGUyZmY1ZTJjMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgog
I2luY2x1ZGUgIkxpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJNRE5TUmVn
aXN0ZXIuaCIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBjNjg0M2RmZWRhODcwMDA0ZTlkMzkyZGUxNTU4YmYwOTZkZjNmMDQ1Li44ZTk0M2RjYWQ3
OTdhZGZkODYzZjkzNDdkMzY5NWY0NzJkYjgxZTBhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDItMDEgIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBHUFUg
cHJvY2VzcyBJUEMgc2hvdWxkIHVzZSBzaGFyZWQgbWVtb3J5IGZvciBhc3luY2hyb25vdXMgbWVz
c2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
OTY0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIzNDA2NTE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZG9uZS1zZW1hcGhvcmUtbW92ZXMKKwor
ICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoKKworMjAyMC0xMi0wOCAgS2lt
bW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIEdQVSBw
cm9jZXNzIElQQyBzaG91bGQgYmUgZmFzdGVyIHRoYW4gY3VycmVudCBXZWJLaXQgSVBDCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZ2VuZXJh
dGUtZ3B1cC13ZWJnbCB0byBnZW5lcmF0ZSBzZW5kIGNhbGxzIGZvciBzZW5kaW5nIHN0cmVhbQor
ICAgICAgICBtZXNzYWdlcy4gU3RyZWFtIG1lc3NhZ2VzIGhhdmUgaW1wbGllZCBkZXN0aW5hdGlv
biwgc28gZGVzdGluYXRpb24gaWQKKyAgICAgICAgZG9lcyBub3QgbmVlZCB0byBiZSBwYXJ0IG9m
IHNlbmQgbWV0aG9kIGNhbGwuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2Vi
Z2w6CisKIDIwMjEtMDEtMjkgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4K
IAogICAgICAgICBbd2Via2l0cHldIFRocmVhZC5pc0FsaXZlIHdhcyByZW5hbWVkIHRvIFRocmVh
ZC5pc19hbGl2ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmds
IGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCmluZGV4IGYxNmI0MjIyOWNmMmY4
MjhjNjZjN2U3YjQxNzczYzJlYmU0NDMxMTQuLmVlNjNlZjJmNGZlYzYyMWRlNjI5NGE0MzNhZDFl
MTE4OTQzNjJhZTggMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTg5LDcgKzg5LDcg
QEAgY29udGV4dF9tZXNzYWdlc190ZW1wbGF0ZSA9ICgKICAgICB0ZW1wbGF0ZV9wcmVhbWJsZQog
ICAgICsgIiIiI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNz
YWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CittZXNzYWdl
cyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAg
IHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQg
ZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKQEAgLTU4NSwyMiArNTg1LDI2IEBAIGNsYXNzIHdl
YmtpdF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKICAgICAgICAgaW5fZXhwcnMgPSAiLCAi
LmpvaW4oW3N0cihpKSBmb3IgaSBpbiBzZWxmLmluX2V4cHJzXSkKICAgICAgICAgb3V0X2V4cHJz
ID0gIiwgIi5qb2luKHN0cihvKSBmb3IgbyBpbiBzZWxmLm91dF9leHBycykKICAgICAgICAgaXNf
YXN5bmMgPSBzZWxmLnJldHVybl90eXBlLmlzX3ZvaWQoKSBhbmQgbGVuKG91dF9leHBycykgPT0g
MAorICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0gWyAiaWYgKCFtX2RpZExvc2VDb250ZXh0KSB7
IiBdCiAgICAgICAgIGlmIGlzX2FzeW5jOgogICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9
IFsKLSAgICAgICAgICAgICAgICBmInNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsiLAorICAgICAgICAgICAgICAgIGYiICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4
cHJzfSksIGRlZmF1bHRTZW5kVGltZW91dCk7IiwKICAgICAgICAgICAgIF0KICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHNlbmRfcmVzdWx0ID0gIiIKLSAgICAgICAgICAgIGlmIHNlbGYucG9z
dF9jYWxsX3N0bXRzOiAKLSAgICAgICAgICAgICAgICBzZW5kX3Jlc3VsdCA9ICJhdXRvIHNlbmRS
ZXN1bHQgPSAiCi0gICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgPSBbCi0gICAg
ICAgICAgICAgICAgICAgICJpZiAoc2VuZFJlc3VsdCkiICsgKCIgeyIgaWYgbGVuKHNlbGYucG9z
dF9jYWxsX3N0bXRzKSA+IDEgZWxzZSAiIikKLSAgICAgICAgICAgICAgICBdICsgWyIgICAgIiAr
IHMgZm9yIHMgaW4gc2VsZi5wb3N0X2NhbGxfc3RtdHNdICsgWwotICAgICAgICAgICAgICAgICAg
ICAoIn0iIGlmIGxlbihzZWxmLnBvc3RfY2FsbF9zdG10cykgPiAxIGVsc2UgIiIpCi0gICAgICAg
ICAgICAgICAgXQogICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKLSAgICAgICAgICAg
ICAgICBmIntzZW5kX3Jlc3VsdH1zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OntzZWxmLm1zZ19uYW1lfSh7aW5fZXhwcnN9KSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjp7c2VsZi5tc2dfbmFtZX06OlJlcGx5KHtvdXRfZXhwcnN9KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIDEwX3MpOyIsCisgICAgICAgICAgICAgICAgZiIgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjp7c2VsZi5tc2dfbmFtZX0oe2luX2V4cHJzfSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6e3NlbGYubXNnX25hbWV9OjpSZXBseSh7b3V0X2V4cHJzfSksIGRlZmF1bHRT
ZW5kVGltZW91dCk7IgorICAgICAgICAgICAgXQorICAgICAgICBzZWxmLmNhbGxfc3RtdHMgKz0g
WworICAgICAgICAgICAgIiAgICBpZiAoIXNlbmRSZXN1bHQpIiwKKyAgICAgICAgICAgICIgICAg
ICAgIHdhc0xvc3QoKTsiLAorICAgICAgICBdCisgICAgICAgIGlmIHNlbGYucG9zdF9jYWxsX3N0
bXRzOgorICAgICAgICAgICAgc2VsZi5jYWxsX3N0bXRzICs9IFsKKyAgICAgICAgICAgICAgICAi
ICAgIGVsc2UgeyIKICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0
bXRzID0gWyAiICAgICIgKyBsIGZvciBsIGluIHNlbGYucG9zdF9jYWxsX3N0bXRzIF0KKyAgICAg
ICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFsgIiAgICB9IiBdCisgICAgICAgIHNlbGYu
cG9zdF9jYWxsX3N0bXRzICs9IFsgIn0iIF0KIAogCiAgICAgZGVmIHByb2Nlc3NfaW5fYXJncyhz
ZWxmLCBpbl9hcmdzOiBMaXN0W2NwcF9hcmddKToKQEAgLTYyMSw4ICs2MjUsOCBAQCBjbGFzcyB3
ZWJraXRfaXBjX2NwcF9wcm94eV9pbXBsKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5v
dXRfZXhwcnMgKz0gW2VdCiAgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2NhbGxfc3RtdHMgKz0g
WwogICAgICAgICAgICAgICAgICAgICAjZm10OiBvZmYKLSAgICAgICAgICAgICAgICAgICAgZiJp
ZiAoe28ubmFtZX0pIiwKLSAgICAgICAgICAgICAgICAgICAgZiIgICAgKntvLm5hbWV9ID0ge3dl
YmtpdF9pcGNfY29udmVydF9leHByKGUsIHZhbHVlX3R5cGUpfTsiCisgICAgICAgICAgICAgICAg
ICAgIGYiICAgIGlmICh7by5uYW1lfSkiLAorICAgICAgICAgICAgICAgICAgICBmIiAgICAgICAg
KntvLm5hbWV9ID0ge3dlYmtpdF9pcGNfY29udmVydF9leHByKGUsIHZhbHVlX3R5cGUpfTsiCiAg
ICAgICAgICAgICAgICAgICAgICNmbXQ6IG9uCiAgICAgICAgICAgICAgICAgXQogICAgICAgICAg
ICAgZWxpZiBvLnR5cGUuaXNfc3BhbigpOgpAQCAtNjM0LDcgKzYzOCw3IEBAIGNsYXNzIHdlYmtp
dF9pcGNfY3BwX3Byb3h5X2ltcGwob2JqZWN0KToKICAgICAgICAgICAgICAgICBpZiBvLnR5cGUu
aXNfZHluYW1pY19zcGFuKCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5fZXhwcnMgKz0g
W2NwcF9leHByKGdldF9jcHBfdHlwZSgic2l6ZV90IiksIGYie28ubmFtZX0uYnVmU2l6ZSIpXQog
ICAgICAgICAgICAgICAgIHNlbGYucG9zdF9jYWxsX3N0bXRzICs9IFsKLSAgICAgICAgICAgICAg
ICAgICAgZiJtZW1jcHkoe28ubmFtZX0uZGF0YSwge3YubmFtZX0uZGF0YSgpLCB7by5uYW1lfS5i
dWZTaXplICogc2l6ZW9mKHtzdHIod2Via2l0X2lwY190eXBlLmdldF9jb250YWluZWRfdHlwZSgp
KX0pKTsiCisgICAgICAgICAgICAgICAgICAgIGYiICAgIG1lbWNweSh7by5uYW1lfS5kYXRhLCB7
di5uYW1lfS5kYXRhKCksIHtvLm5hbWV9LmJ1ZlNpemUgKiBzaXplb2Yoe3N0cih3ZWJraXRfaXBj
X3R5cGUuZ2V0X2NvbnRhaW5lZF90eXBlKCkpfSkpOyIKICAgICAgICAgICAgICAgICBdCiAgICAg
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYub3V0X2V4cHJzICs9IFtjcHBfZXhw
cihvLnR5cGUsIG8ubmFtZSldCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419427</attachid>
            <date>2021-02-05 10:29:20 -0800</date>
            <delta_ts>2021-02-09 05:44:51 -0800</delta_ts>
            <desc>rebased to tot, not fully split</desc>
            <filename>bug-219641-20210205202918.patch</filename>
            <type>text/plain</type>
            <size>168292</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI1MGI3YjEyZWQ5ZWQ1ODE1
YTFhYmNkZjQyMWJiNTQ2MjllZTZiMzguLjk1YzcwNjc4ZWRjODg4OTljODM3Y2VkNDdkMjMxYWQ4
M2I2ZTRmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjI0IEBACisyMDIxLTAyLTA0ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiBjbGllbnQgY2FuIHNlbmQgbWVzc2FnZXMgYW5k
IHJlY2VpdmUgcmVwbGllcywgd2hlcmUKKyAgICAgICAgYXMgc2VydmljZSBjYW4gcmVjZWl2ZSBt
ZXNzYWdlcyBhbmQgc2VuZCByZXBsaWVzLgorCisgICAgICAgIE1lc3NhZ2VzIHJlY2VpdmVkIHRo
cm91Z2ggc2VydmVyIHN0cmVhbSBjb25uZWN0aW9ucyBjYW4gYmUgcHJvY2Vzc2VkIGJ5CisgICAg
ICAgIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVudGx5IGFzeW5j
aHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hyb25vdXMgbWVz
c2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQgdGhyb3VnaCBu
b3JtYWwgSVBDLgorCisgICAgICAgIEltcGxlbWVudGVkIGFzIGZvbGxvd3M6CisgICAgICAgIFNl
bmRlciBzaGFyZXMgdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSB3aXRoIHRoZSBkZXN0aW5hdGlvbiB3
aGVuIGNyZWF0aW5nCisgICAgICAgIHRoZSBkZXN0aW5hdGlvbi4KKworICAgICAgICBJZiB0aGUg
bWVzc2FnZSBmaXRzIHRvIHRoZSBzdHJlYW0gc2hhcmVkIG1lbW9yeSBhcmVhLCB3cml0ZSBpdCB0
aGVyZS4KKyAgICAgICAgT3RoZXJ3aXNlIHNlbmQgaXQgdmlhIG5vcm1hbCBJUEMgYXMgb3V0IG9m
IGxpbmUgbWVzc2FnZS4KKworICAgICAgICBNZXNzYWdlcyB0byB0aGUgZGVzdGluYXRpb24gYXJy
aXZlIGFzIGJlZm9yZSwgaW4gb3JkZXIuIEZvciBlYWNoIG91dCBvZiBsaW5lCisgICAgICAgIG1l
c3NhZ2UsIGFuIGVudHJ5IGlzIHB1c2hlZCB0byB0aGUgc3RyZWFtLiBSZWNlaXZlciB3aWxsIHN0
b3AgcHJvY2Vzc2luZyB0aGUKKyAgICAgICAgc3RyZWFtIGFuZCBwcm9jZXNzaW5nIHdpbGwgY29u
dGludWUgb25jZSB0aGUgb3V0LW9mLWxpbmUKKyAgICAgICAgbWVzc2FnZSBoYXMgYmVlbiBwcm9j
ZXNzZWQuCisKKyAgICAgICAgU2VuZGVyIGNhbiB3cml0ZSBtZXNzYWdlcyB0byB0aGUgc3RyZWFt
IHNpbXVsdGFuZW91cyB0byB0aGUgcmVjZWl2ZXIgcmVhZGluZworICAgICAgICB0aGUgbWVzc2Fn
ZXMuIFRoaXMgaXMgaW1wbGVtZW50ZWQgYXMgYSByaW5nIGJ1ZmZlciB3aXRoIGF0b21pYyBzZW5k
ZXIgYW5kIHJlY2VpdmVyCisgICAgICAgIHBvaW50ZXJzLgorCisgICAgICAgIFN0cmVhbSBjb25u
ZWN0aW9uIHByb2Nlc3NpbmcgaXMgaW1wbGVtZW50ZWQgYXMgYSBzaGFyZWQgc2VtYXBob3JlLiBU
aGlzIHNlbWFwaG9yZQorICAgICAgICBpcyBub3RpZmllZCBpZiB0aGUgcmVjZWl2ZXIgaXMgd2Fp
dGluZyBvbiBpdC4KKworICAgICAgICBQZXJmb3JtYW5jZSBpbXBhY3QgKGlNYWMgUHJvKToKKyAg
ICAgICAgICAgIC0gTW90aW9uTWFyayB0cmlhbmdsZXM6IDMwMCBwb2ludHMgLT4gNDAwMCBwb2lu
dHMKKyAgICAgICAgICAgICAgKH43MDAwIHBvaW50cyBuby1HUFVQKQorICAgICAgICAgICAgLSBX
ZWJHTCBzYW1wbGVzIEFxdWFyaXVtOiAxMDAwIGZpc2ggfjYwZnBzIC0+IDUwMDAgZmlzaCB+NjBm
cHMKKyAgICAgICAgICAgICAgKH41MDAwIGZpc2ggd2l0aCBuby1HUFVQKQorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgdGVzdGVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAg
IChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NvcGVkRGlzY29u
bmVjdDo6U2NvcGVkRGlzY29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlNjb3BlZERpc2Nvbm5lY3Q6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjb3BlZERpc2Nvbm5lY3Q6On5TY29wZWRE
aXNjb25uZWN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMU3RyZWFtV29ya1F1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlVW5pbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExv
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hD
b250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6cGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnNlbmQgY29uc3QpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hOjpwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjphZGRNZXNzYWdlRmlsdGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVt
b3ZlTWVzc2FnZUZpbHRlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JTeW5j
UmVwbHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdTeW5jUmVw
bHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb0ZpbHRlcik6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5jcHA6CisgICAgICAgIChJUEM6OkRlY29kZXI6OkRlY29kZXIpOgorICAgICAgICAoSVBDOjpt
X2J1ZmZlckRlYWxsb2NhdG9yKToKKyAgICAgICAgKElQQzo6bV9kZXN0aW5hdGlvbklEKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9E
ZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBDOjpEZXN0aW5hdGlvbk1l
c3NhZ2VGaWx0ZXI6OmFkZEZpbHRlcik6CisgICAgICAgIChJUEM6OkRlc3RpbmF0aW9uTWVzc2Fn
ZUZpbHRlcjo6cmVtb3ZlRmlsdGVyKToKKyAgICAgICAgKElQQzo6RGVzdGluYXRpb25NZXNzYWdl
RmlsdGVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rlc3Rp
bmF0aW9uTWVzc2FnZUZpbHRlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNz
YWdlLmg6CisgICAgICAgIChJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyk6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL01lc3NhZ2VGaWx0ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENv
bm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjpzZXRXYWtlVXBTZW1hcGhvcmUpOgorICAgICAgICAoSVBDOjpTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjp3YWtlVXBSZWNlaXZlcik6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChJUEM6OlN0cmVh
bUNsaWVudENvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246
OnRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSk6CisgICAgICAgIChJ
UEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUpOgorICAgICAgICAoSVBDOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpyZWxlYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpzaXplKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
Y2xhbXBlZExpbWl0IGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVNZW1vcnkpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVy
KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6CisgICAgICAgIChJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAgICAgICAoSVBDOjpT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9T
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDogQWRkZWQuCisgICAgICAgIChJUEM6OlN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWU6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUpOgorICAgICAg
ICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpkaXNwYXRjaCk6CisgICAgICAgIChJ
UEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OmFkZFN0cmVhbUNvbm5lY3Rpb24pOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpyZW1vdmVTdHJlYW1Db25uZWN0
aW9uKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6c3RvcCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcCk6CisgICAgICAg
IChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFNlbWFwaG9yZSk6CisgICAg
ICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFByb2Nlc3NpbmdUaHJl
YWQpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpwcm9jZXNzU3Ry
ZWFtcyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQu
aC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHA6IEFk
ZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbCk6CisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkaWRSZWNlaXZlTWVzc2FnZSk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6cmVsZWFzZSk6CisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjphbGlnbmVkU3Bhbik6CisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaXplKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1pdCBjb25zdCk6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpjb25uZWN0aW9uKToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OndyYXBPZmZzZXQgY29uc3QpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25PZmZzZXQgY29uc3Qp
OgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2hhcmVkU2VuZGVy
T2Zmc2V0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJl
ZFJlY2VpdmVyT2Zmc2V0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6c2VuZFN5bmNSZXBseSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b248UmVjZWl2ZXI+OjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnN0b3BSZWNlaXZpbmdNZXNzYWdlcyk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0
cmVhbU1lc3NhZ2VzKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNl
aXZlcj46OnByb2Nlc3NTZXRTdHJlYW1EZXN0aW5hdGlvbklEKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoU3RyZWFtTWVzc2FnZSk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaE91
dE9mU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0
Lmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvbW9kZWwucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGU6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcDoKKyAgICAgICAg
KElQQzo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoSVBDOjpyZWNlaXZlck5hbWUpOgorICAgICAg
ICAoSVBDOjppc1ZhbGlkTWVzc2FnZU5hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU3RyZWFtLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4u
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVz
c2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtQnVmZmVyTWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhT
dHJlYW1CdWZmZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjpuYW1lKToKKyAgICAgICAgKE1l
c3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVh
bUJ1ZmZlcik6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRT
dHJlYW1CdWZmZXI6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VGVzdFdpdGhTdHJlYW06OmRpZFJlY2VpdmVT
dHJlYW1NZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0
cmVhbU1lc3NhZ2VzLmg6IEFkZGVkLgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFt
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVh
bTo6U2VuZFN0cmluZzo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06
OlNlbmRTdHJpbmc6OlNlbmRTdHJpbmcpOgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3Ry
ZWFtOjpTZW5kU3RyaW5nOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpuYW1lKToKKyAgICAgICAgKE1l
c3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9uaXplZDo6U2VuZFN0cmlu
Z1N5bmNocm9uaXplZCk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRT
dHJpbmdTeW5jaHJvbml6ZWQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjptYXJrQ29udGV4dExvc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0
d29yay5oOgorCiAyMDIxLTAyLTA0ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBzaG91bGQgc3VwcG9y
dCBsb3NpbmcgdGhlIGNvbnRleHQgYW5kIHNob3VsZCBsb3NlIHRoZSBjb250ZXh0IG9uIHRpbWVv
dXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggODI3OGJjZTE0YzVmMWMyNGJlN2M5MDIyZDVmZDQwYjI0YzU4
ZWZlZi4uMDMzYjIxNzRjNzhjNThlMjFhOGQ5OGEyNTQ5NTkwZjI1YjhkYWJhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtMjkzLDcgKzI5Myw3IEBAIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5JiBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjphdWRpb1Nlc3Npb25Qcm94eSgpCiB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZSkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcC5lbnN1cmUoaWRlbnRpZmllciwgWyZdKCkgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcj4oUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y3JlYXRlKCp0aGlzLCBpZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3VtZURpc3BsYXlMaXN0U2VtYXBo
b3JlKSkpOworICAgICAgICByZXR1cm4gU2NvcGVkRGlzY29ubmVjdCB7IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmllciwgV1RGTW92ZShyZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZSkpIH07CiAgICAgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KQEAgLTMwNCwyMSArMzA0LDEzIEBAIHZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5n
QmFja2VuZElkZW50aWZpCiAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogfQogCi1H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcjo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+
JiYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZChXVEZNb3ZlKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpKQotewotfQotCi1HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcjo6flJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyKCkKLXsKLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQtPmRp
c2Nvbm5lY3QoKTsKLX0KLQogI2lmIEVOQUJMRShXRUJHTCkKLXZvaWQgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVh
bSkKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAu
ZW5zdXJlKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgWyZdKCkgewotICAgICAgICByZXR1
cm4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCAqdGhpcywgZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byBpbnN0YW5jZSA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoKnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgV1RGTW92ZShzdHJlYW0pKTsKKyAgICAgICAgaW5zdGFuY2UtPmluaXRpYWxpemUoV1RG
TW92ZShhdHRyaWJ1dGVzKSk7CisgICAgICAgIHJldHVybiBTY29wZWREaXNjb25uZWN0IHsgV1RG
TW92ZShpbnN0YW5jZSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwg
YWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggN2JhZGQzNzc2OWNmNTJmZDU0
MGI0ZmI3NzdkMDg4NzQ2NjA0ZjU0Zi4uYTlmNGE5NDljZWFiN2RiZWEwZmMwOWY1ZDEzYmE3MDQz
YTc1NzlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAog
I2lmIEVOQUJMRShXRUJHTCkKLSAgICB2b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKKyAgICB2b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRl
eHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwogI2VuZGlmCiAKQEAgLTE5MywyMCAr
MTkzLDQwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FsbG93c0Rpc3BsYXlDYXB0dXJlIHsgZmFs
c2UgfTsKICNlbmRpZgogCi0gICAgY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIg
ewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIGNsYXNzIFNjb3BlZERpc2Nvbm5lY3QgewogICAgIHB1YmxpYzoKLSAgICAgICAg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+
JiYpOwotICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoKTsKKyAgICAgICAg
U2NvcGVkRGlzY29ubmVjdCgpID0gZGVmYXVsdDsKKyAgICAgICAgZXhwbGljaXQgU2NvcGVkRGlz
Y29ubmVjdChSZWY8VD4mJiBvYmplY3QpCisgICAgICAgICAgICA6IG1fb2JqZWN0KFdURk1vdmUo
b2JqZWN0KSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIFNjb3BlZERpc2Nvbm5lY3Qo
U2NvcGVkRGlzY29ubmVjdCYmIG90aGVyKQorICAgICAgICAgICAgOiBtX29iamVjdChzdGQ6OmV4
Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCBudWxscHRyKSkKKyAgICAgICAgeworICAgICAgICB9Cisg
ICAgICAgIFNjb3BlZERpc2Nvbm5lY3QmIG9wZXJhdG9yPShTY29wZWREaXNjb25uZWN0JiYgb3Ro
ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzICE9ICZvdGhlcikgeworICAgICAg
ICAgICAgICAgIGlmIChtX29iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgbV9vYmplY3QtPmRp
c2Nvbm5lY3QoKTsKKyAgICAgICAgICAgICAgICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFuZ2Uob3Ro
ZXIubV9vYmplY3QsIG51bGxwdHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgICAgICB9CisgICAgICAgIH5TY29wZWREaXNjb25uZWN0KCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKG1fb2JqZWN0KQorICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5k
aXNjb25uZWN0KCk7CisgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CisgICAgICAgIFJl
ZlB0cjxUPiBtX29iamVjdDsKICAgICB9OwotCi0gICAgdXNpbmcgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcj4+OworICAgIHVzaW5nIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBT
Y29wZWREaXNjb25uZWN0PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKICNpZiBFTkFCTEUo
V0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBIYXNoTWFwPEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBIYXNo
TWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgU2NvcGVkRGlzY29ubmVjdDxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTD4+OwogICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwIG1fcmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNYXA7CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA5NTQ3MTBhMzQwZDJmNThkYTli
NWU5NTdjYmMzNGQ1ZTVhZmQ5ODkxLi4xYzJkYzc2M2I3NWMxMzhhMWE5NmRkOTgyNzkzYTVjMzVi
MTI4MWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQCBt
ZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdl
IHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSByZXN1bWVEaXNwbGF5TGlz
dFNlbWFwaG9yZSkKICAgICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAjaWYg
RU5BQkxFKFdFQkdMKQotICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6Okdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisg
ICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyIHN0cmVhbSkKICAgICB2b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJL
aXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpCiAjZW5kaWYKICAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5jcHAKaW5kZXggNzliMzQ1OTZmYmYyZDBkZmM5ODE4NjUxYmRjZmViNGIwYTBjODc1
ZC4uNTIzYmI1ZDRkZGU2OWNjMmY1MDMzYWUxOTNjZjQ3N2UxNTBjNGRkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwCkBAIC0zMSw1NSArMzEsNzcgQEAKICNpbmNsdWRlICJHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgotCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgeworCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorLy8gQ3VycmVudGx5IHdl
IGhhdmUgb25lIGdsb2JhbCBXZWJHTCBwcm9jZXNzaW5nIGluc3RhbmNlLgorc3RhdGljIElQQzo6
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1X
b3JrUXVldWUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU+IGluc3RhbmNlKCJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB3b3JrIHF1
ZXVlIik7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOworfQorCiAjaWYgIVBMQVRGT1JNKENP
Q09BKQotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcikKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJikKIHsKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNlbmRpZgog
Ci1SZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250
ZXh0KSkKLSAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCisgICAg
OiBtX3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMPjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVj
dGlvbigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29y
a1F1ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0g
ICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwotICAgIFN0cmluZyBleHRlbnNpb25zID0g
bV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOwotICAg
IFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRl
bnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwotICAgIHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgZXh0ZW5z
aW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQogewotICAgIGlmIChhdXRvKiBn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdl
dCgpKQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJN
YXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LnRvVUludDY0KCkpOworICAgIEFTU0VSVCghbV9zdHJlYW1Db25uZWN0aW9uKTsKKyAgICBBU1NF
UlQoIW1fY29udGV4dCk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKLSAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmdldCgpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgcmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbYXR0cmlidXRlcyA9
IFdURk1vdmUoYXR0cmlidXRlcyksIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlSW5pdGlhbGl6ZShXVEZN
b3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICB9KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0
UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAordm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6ZGlzY29ubmVjdCgpCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAgICAgIHJl
dHVybiAmZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOwotICAgIHJldHVy
biBudWxscHRyOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9zdHJlYW1D
b25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29y
a1F1ZXVlKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7Cisg
ICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpOworICAgIH0pOwor
fQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0aWFsaXplKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCit7CisgICAg
cGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIGlm
IChtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOworICAg
ICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29u
dGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9u
cyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5T
SU9OU19BTkdMRSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1X
b3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSwgZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRl
bnNpb25zKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFsc2UsIElQQzo6U2VtYXBob3JlIHsgfSwg
IiIsICIiKSk7CiB9CiAKLXVpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ojp3b3JrUXVldWVVbmluaXRpYWxpemUoKQogewotICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIG1fY29udGV4dCA9IG51bGxwdHI7CisgICAg
bV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKQEAgLTg4LDcgKzExMCw3IEBAIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
Oldhc0xvc3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVD
b250ZXh0KCkKQEAgLTk4LDcgKzEyMCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OnJlY3ljbGVDb250ZXh0KCkKIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0
Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6V2FzQ2hhbmdlZCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKaW5kZXggMDAxNTlhYzhiNTg2YThiNjJhM2RkYTNhNTcwMDRlODgzZTE1NmQwOC4uODUx
NzQ1YzlmZjk2MjYyZTlhYWNlM2Y1MDZjYTgyZDIxODg5OTM0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCR0wpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKLQorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC00OSwz
MSArNDgsMjEgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0KIC8vIEdQVSBwcm9jZXNzIHNpZGUg
aW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0Nv
bnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxz
IGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBp
cyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbC4KLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCi0gICAgOiBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAg
LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgeworY2xhc3MgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpD
bGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUo
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIH5SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCgpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKLSAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7
CisgICAgLy8gSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMPiB0ZW1wbGF0ZSBjb250cmFjdCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2b2lkIGRpZFJlY2Vp
dmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJUEM6OkRl
Y29kZXImKTsKIAogcHJvdGVjdGVkOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4pOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJy
aWRlcy4KLSAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QgZmluYWw7Ci0gICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dCBmaW5hbDsKLQotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KLSAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwog
CiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBk
aWRDb21wb3NpdGUoKSBmaW5hbDsKQEAgLTk1LDggKzg0LDE0IEBAIHByb3RlY3RlZDoKIAogI2lu
Y2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5P
TElOVAogCi0gICAgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRl
eHQ7Ci0gICAgV2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M7CisgICAgdm9pZCB3b3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1X
b3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYm
KSB7IH07CisgICAgdm9pZCB3b3JrUXVldWVVbmluaXRpYWxpemUoKTsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkgY29uc3QgeyByZXR1cm4gbV9z
dHJlYW1Db25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7IH0KKworICAgIFJlZlB0cjxJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PiBtX3N0cmVhbUNvbm5lY3Rp
b247CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRl
eHQ7CiAgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmlu
CmluZGV4IGQzMjhjZDFjY2Q2MjFiMDVhYzI4MzE4ZTYyNWE3YmE3MmRjYzRhMTcuLjJkNTM5ZTky
M2I3NGY4ODY3MDgxYjhmNGFjZWI5OWJmOWZhZjhjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIC8vIFRoaXMgZmlsZSBpcyBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgeworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQgUmVzaGFwZShpbnQzMl90
IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIFBy
ZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hy
b25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCA4ZTJkMWZjNjUx
ODYyODM5NWU5NzQxYzQ0ZTdhYzg1MWIwOGVmNjI3Li5hZTdhYjc2MjY3ZDNmZDBlZDVjY2ZjN2Y3
NjQ1YmU0OGQwYjFmMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBA
IC0zOSwxMCArMzksMTEgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgcHJpdmF0
ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CiBwdWJsaWM6
Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYSgpIGZpbmFsID0gZGVmYXVsdDsKIAogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMIG92ZXJyaWRlcy4KKyAgICB2b2lkIHBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJikgZmluYWw7CiAgICAgdm9pZCBw
cmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdo
dCYmKT4mJikgZmluYWw7CiAKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBD
aGFpbiBvdmVycmlkZXMuCkBAIC01NiwxNiArNTcsMjEgQEAgcHJpdmF0ZToKIAogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKQorUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKIHsKLSAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPihuZXcgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xDb2NvYShhdHRyaWJ1dGVzLCBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV1RGTW92ZShzdHJlYW0pKSk7CiB9CiAK
LVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGF0
dHJpYnV0ZXMsIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpjcmVhdGVGb3JHUFVQcm9jZXNzKGF0dHJpYnV0ZXMsIHRoaXMpKQorUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXImJiBzdHJlYW0pCisgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1v
dmUoc3RyZWFtKSkKIHsKIH0KIAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpw
bGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiYgYXR0cmlidXRlcykKK3sKKyAgICBtX2NvbnRleHQgPSBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhXVEZNb3ZlKGF0dHJpYnV0ZXMpLCB0aGlzKTsK
K30KKwogR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW46OkJ1ZmZlciBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hOjpyZWN5Y2xlQnVmZmVyKCkKIHsKICAgICByZXR1cm4gV1RG
TW92ZShtX2Rpc3BsYXlCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAppbmRleCBiN2JjYTdjNDg2OTU4
MDIyOTRiZjk0YWVmMDc0MGNmNzBlM2Y2MmFmLi42MjNhNTJhNDVhNGZhODVkYzEyZDQ4YTk1ZTU2
ZWM2Zjk2MmQ5ZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVT
RShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtSVENNb25pdG9yLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IDMyMDc2YWZkMDJh
ODk4YTFlMzlkZTI4M2UxMDJiODU5NDdmOGVkYzcuLjUzMzUwZjlmN2M4YzEyYmU2Mjc1OTk5Yzdl
YmZjM2M3ZTA5MWJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRl
ICJFbmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC03NSw2ICs3Niw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgewogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBUIHZhbHVlKQogICAgIHsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQpLCBhbGln
bm9mKFQpKTsKQEAgLTkxLDYgKzkzLDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19lbnVtX3Y8VD4+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPFQ+KFdURjo6ZW51bVRvVW5k
ZXJseWluZ1R5cGU8VD4odmFsdWUpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVycy5jcHAKaW5kZXggYjBhNDNkZTlkN2ExMzcyMTZhMTliZjdkMGJkNWUxOTEx
M2I1ZGE2OC4uYWVlODllNjI2OTZjNTYwZjBhMThiZmIxZDY3NjkxNjUwZTdmZjJhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTExMSw3ICsxMTIsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENvZGVy
PENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ1N0cmluZwogICAgIHJldHVybiB0
cnVlOwogfQogCi0KK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiB2b2lkIEFyZ3VtZW50Q29k
ZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewogICAgIC8vIFNwZWNpYWwgY2FzZSB0aGUgbnVsbCBzdHJpbmcuCkBAIC0xMzAsNiArMTMx
LDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgZWxzZQogICAgICAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcu
Y2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBhbGlnbm9mKFVDaGFyKSk7
CiB9Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxFbmNvZGVy
PihFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVy
PFN0cmluZz46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+CiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChE
ZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCAyMGViMTdhMGZkODI2MGQ0MGJlYzdmY2RhYWVh
MjNiYzVlODY1ZTA5Li5mODU2OTgwNzNkZDA0NWIyODE2ZTE2MTBjYTQ5OTZhNWQ0ZWU2YzI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTU1LDYg
KzU1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50Q29kZXIg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJyYXlSZWZlcmVu
Y2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50PjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQogICAgIHsKICAgICAgICAgaWYg
KCFFeHRlbnQpCkBAIC03NCw2ICs3NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBF
eHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVuCiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQs
IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4+IHsKICAgICB1c2luZyBBcnJheVJlZmVyZW5j
ZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+Owor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2Up
CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJl
ZmVyZW5jZS5zaXplKCkpOwpAQCAtMjY2LDYgKzI2OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6cGFpcjxULCBVPj4gewogCiB0
ZW1wbGF0ZTxzaXplX3QgaW5kZXgsIHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1cGxl
RW5jb2RlciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4m
IHR1cGxlKQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxzaXplb2YuLi4oRWxl
bWVudHMpIC0gaW5kZXg+KHR1cGxlKTsKQEAgLTI3NSw2ICsyNzgsNyBAQCBzdHJ1Y3QgVHVwbGVF
bmNvZGVyIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+CiBzdHJ1Y3QgVHVwbGVF
bmNvZGVyPDAsIEVsZW1lbnRzLi4uPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4K
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVu
dHMuLi4+JikKICAgICB7CiAgICAgfQpAQCAtMzM4LDYgKzM0Miw3IEBAIHN0cnVjdCBUdXBsZURl
Y29kZXI8MD4gewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+IHN0cnVjdCBB
cmd1bWVudENvZGVyPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+PiB7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4mIHR1cGxlKQogICAgIHsKICAgICAgICAgVHVw
bGVFbmNvZGVyPHNpemVvZi4uLihFbGVtZW50cyksIEVsZW1lbnRzLi4uPjo6ZW5jb2RlKGVuY29k
ZXIsIHR1cGxlKTsKQEAgLTM3NCw2ICszNzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBl
LCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6S2V5VmFsdQog
dGVtcGxhdGU8Ym9vbCBmaXhlZFNpemVFbGVtZW50cywgdHlwZW5hbWUgVCwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4g
c3RydWN0IFZlY3RvckFyZ3VtZW50Q29kZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2Fw
YWNpdHk+IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyPGZhbHNlLCBULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4m
IHZlY3RvcikKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHZlY3Rvci5zaXplKCkpOwpAQCAtNDExLDYgKzQxNyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qg
bWluCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PiBzdHJ1Y3QgVmVjdG9y
QXJndW1lbnRDb2Rlcjx0cnVlLCBULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBt
aW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mIHZlY3RvcikKICAgICB7CiAgICAg
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZlY3Rvci5zaXplKCkpOwpAQCAt
NzUzLDYgKzc2MCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Q1N0cmluZz4g
ewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTdHJpbmc+IHsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZShEZWNvZGVyJiwgU3RyaW5nJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gZGVj
b2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAK
aW5kZXggZDRjNTBkYzQyYzhlOWZlNDgwODQ0ZDVlNjlmNDkzNTAxMzZiNDc0NC4uOWE3MGFmNDQ5
ZjkwZDg1MTY2M2Y5YTUyZTJiOTg1Y2FkODMyMDIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRlIDxtZW1vcnk+CkBAIC0z
ODEsNiArMzgzLDI5IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVtb3ZlVGhyZWFkTWVzc2FnZVJlY2Vp
dmVyKFJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1CiAgICAgbV90aHJlYWRNZXNz
YWdlUmVjZWl2ZXJzLnJlbW92ZShrZXkpOwogfQogCit2b2lkIENvbm5lY3Rpb246OmFkZE1lc3Nh
Z2VGaWx0ZXIoTWVzc2FnZUZpbHRlciYgbWVzc2FnZUZpbHRlciwgUmVjZWl2ZXJOYW1lIHJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBhdXRvIG1lc3NhZ2VGaWx0
ZXJMb2NrZXIgPSBob2xkTG9jayhtX21lc3NhZ2VGaWx0ZXJzTG9jayk7CisgICAgbV9tZXNzYWdl
RmlsdGVycy5hZGRGaWx0ZXIobWVzc2FnZUZpbHRlciwgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4
KTsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IGluY29taW5nTWVzc2FnZXM7
CisKKyAgICBmb3IgKGF1dG8gaXQgPSBtX2luY29taW5nTWVzc2FnZXMuYmVnaW4oKSwgZW5kID0g
bV9pbmNvbWluZ01lc3NhZ2VzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNzYWdlID0gKml0OworICAgICAgICBpZiAobWVzc2Fn
ZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IHJlY2VpdmVyTmFtZSAmJiAobWVzc2FnZS0+ZGVz
dGluYXRpb25JRCgpID09IGRlc3RpbmF0aW9uSUQgfHwgIWRlc3RpbmF0aW9uSUQpKQorICAgICAg
ICAgICAgbWVzc2FnZUZpbHRlci5kaWRSZWNlaXZlTWVzc2FnZSgqdGhpcywgbWVzc2FnZSk7Cisg
ICAgICAgIGlmIChtZXNzYWdlKQorICAgICAgICAgICAgaW5jb21pbmdNZXNzYWdlcy5hcHBlbmQo
V1RGTW92ZShtZXNzYWdlKSk7CisgICAgfQorICAgIGluY29taW5nTWVzc2FnZXMuc3dhcChtX2lu
Y29taW5nTWVzc2FnZXMpOworfQorCit2b2lkIENvbm5lY3Rpb246OnJlbW92ZU1lc3NhZ2VGaWx0
ZXIoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sK
KyAgICBhdXRvIG1lc3NhZ2VGaWx0ZXJMb2NrZXIgPSBob2xkTG9jayhtX21lc3NhZ2VGaWx0ZXJz
TG9jayk7CisgICAgbV9tZXNzYWdlRmlsdGVycy5yZW1vdmVGaWx0ZXIocmVjZWl2ZXJOYW1lLCBk
ZXN0aW5hdGlvbklEKTsKK30KKwogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFRocmVhZE1lc3Nh
Z2VSZWNlaXZlck1lc3NhZ2UoVGhyZWFkTWVzc2FnZVJlY2VpdmVyJiB0aHJlYWRNZXNzYWdlUmVj
ZWl2ZXIsIERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmlzU3luY01lc3Nh
Z2UoKSkgewpAQCAtNjk0LDcgKzcxOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25u
ZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIE1lCiAjZW5k
aWYKIAogICAgIGRpZFJlY2VpdmVTeW5jUmVwbHkoc2VuZFN5bmNPcHRpb25zKTsKLQorICAgIEFT
U0VSVChmYWxzZSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTcxMiw3ICs3MzcsNiBA
QCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBseShzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4gZGVjb2RlcikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICAgICAgQVNTRVJUKCFwZW5kaW5nU3luY1JlcGx5LnJlcGx5RGVjb2Rlcik7Ci0KICAgICAgICAg
ICAgIHBlbmRpbmdTeW5jUmVwbHkucmVwbHlEZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKTsKICAg
ICAgICAgICAgIHBlbmRpbmdTeW5jUmVwbHkuZGlkUmVjZWl2ZVJlcGx5ID0gdHJ1ZTsKIApAQCAt
NzM4LDEwICs3NjIsOCBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAgfQogCiAgICAgYXV0byB0aHJl
YWRlZFJlY2VpdmVyS2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVz
c2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgbWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpKTsK
LSAgICBpZiAoIVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1hcDo6aXNWYWxpZEtleSh0aHJlYWRl
ZFJlY2VpdmVyS2V5KSB8fCAhVGhyZWFkTWVzc2FnZVJlY2VpdmVyTWFwOjppc1ZhbGlkS2V5KHRo
cmVhZGVkUmVjZWl2ZXJLZXkpKSB7Ci0gICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlTmFtZSA9IG1lc3NhZ2UtPm1l
c3NhZ2VOYW1lKCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNw
YXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShtZXNzYWdlTmFtZSk7Ci0gICAgICAgIH0pOwor
ICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwOjppc1ZhbGlkS2V5KHRocmVhZGVk
UmVjZWl2ZXJLZXkpIHx8ICFUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkodGhy
ZWFkZWRSZWNlaXZlcktleSkgfHwgIURlc3RpbmF0aW9uTWVzc2FnZUZpbHRlcjo6aXNWYWxpZE1l
c3NhZ2UoKm1lc3NhZ2UpKSB7CisgICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC03NTEsNiArNzczLDExIEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2Fn
ZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVzc2FnZSkKICAgICBpZiAoZGlzcGF0Y2hNZXNz
YWdlVG9UaHJlYWRSZWNlaXZlcihtZXNzYWdlKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8g
Tm90ZTogTWVzc2FnZSBmaWx0ZXIgbG9jayBpcyBoZWxkIGR1cmluZyBtZXNzYWdlIHJvdXRpbmcs
IHNvIHRoYXQgYWRkaW5nIGFuZCByZW1vdmluZyBtZXNzYWdlIGZpbHRlcnMKKyAgICAvLyBkb2Vz
IG5vdCBjYXVzZSBtZXNzYWdlIHJlb3JkZXJpbmcuCisgICAgYXV0byBtZXNzYWdlRmlsdGVyTG9j
a2VyID0gaG9sZExvY2sobV9tZXNzYWdlRmlsdGVyc0xvY2spOworICAgIGlmIChkaXNwYXRjaE1l
c3NhZ2VUb0ZpbHRlcihtZXNzYWdlKSkKKyAgICAgICAgcmV0dXJuOwogICAgIGlmIChtZXNzYWdl
LT5pc1N5bmNNZXNzYWdlKCkpIHsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2lu
Y29taW5nU3luY01lc3NhZ2VDYWxsYmFja011dGV4KTsKIApAQCAtOTYwLDcgKzk4NywxMyBAQCB2
b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKIAog
dm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdl
TmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAg
IGlmICghUnVuTG9vcDo6aXNNYWluKCkpIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2VOYW1lXSgpIG11dGFi
bGUgeworICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5pc1ZhbGlkKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9jbGllbnQuZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKHByb3RlY3RlZFRoaXMsIG1lc3NhZ2VOYW1lKTsKKyAgICAg
ICAgfSk7CisgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTExMDUsNiArMTEzOCwxMiBAQCBib29sIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZVRvVGhy
ZWFkUmVjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNzYQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorYm9vbCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb0ZpbHRlcihzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mIG1lc3NhZ2UpCit7CisgICAgbV9tZXNzYWdlRmlsdGVycy5k
aWRSZWNlaXZlTWVzc2FnZSgqdGhpcywgbWVzc2FnZSk7CisgICAgcmV0dXJuICFtZXNzYWdlOwor
fQorCiB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4gbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMTEx
Niw2ICsxMTU1LDkgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAgLy8gVGhlIG1lc3NhZ2UgbWlnaHQgaGF2ZSBh
bHJlYWR5IGJlZW4gZGlzcGF0Y2hlZCBmcm9tIHRoZSBJUEMgV29ya1F1ZXVlIHRvIHRoZSBtYWlu
IHRocmVhZCBieSB0aGUgdGltZSB0aGUKICAgICAvLyBjbGllbnQgcmVnaXN0ZXJzIGl0c2VsZiBh
cyBhIFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4gVG8gYWRkcmVzcyB0aGlzLCB3ZSBjaGVjayBh
Z2FpbiBmb3IgbWVzc2FnZXMgcmVjZWl2ZXJzCiAgICAgLy8gb25jZSB0aGUgbWVzc2FnZSBhcnJp
dmVzIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAvLyBGSVhNRTogVGhpcyBoYXMgYSBtZXNzYWdl
IG9yZGVyaW5nIGJ1ZyB3aGVyZSB0aGUgZWFybHkgbWVzc2FnZXMgZGlzcGF0Y2hlZCBoZXJlIHdv
dWxkIGFycml2ZQorICAgIC8vIGxhdGVyIHRoYW4gbGF0ZXIgbWVzc2FnZXMgdGhhdCBnZXQgZGlz
cGF0Y2hlZCBieSB0aGUgbWVzc2FnZSBwcm9jZXNzaW5nIHF1ZXVlLiBUaGlzIHNob3VsZCBiZSBm
aXhlZCBieSBtYWtpbmcgV29ya1F1ZXVlUmVjZWl2ZXIKKyAgICAvLyBhIG1lc3NhZ2UgZmlsdGVy
LgogICAgIGlmIChkaXNwYXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKG1lc3NhZ2UpKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApp
bmRleCA2MTAzYzhkODEwZDdjNzgyYWNmZGNjMzRhM2I2YTJiOGZkNjYxMDBlLi45M2I4MTA0MjNl
ZWI5MjNhYWMwYzZmNzgxZDc1MDc4NTgzMWNkNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oCkBAIC0yOSwxMCArMjksMTEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5oIgog
I2luY2x1ZGUgIkVuY29kZXIuaCIKLSNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMjI4LDYgKzIyOSwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJO
YW1lLCBUaHJlYWRNZXNzYWdlUmVjZWl2ZXIqLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7
CiAgICAgdm9pZCByZW1vdmVUaHJlYWRNZXNzYWdlUmVjZWl2ZXIoUmVjZWl2ZXJOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7CiAKKyAgICB2b2lkIGFkZE1lc3NhZ2VGaWx0ZXIoTWVz
c2FnZUZpbHRlciYsIFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDApOwor
ICAgIC8vIFRoZSByZW1vdmVkIG1lc3NhZ2UgZmlsdGVyIGlzIGd1YXJhbnRlZWQgdG8gbm90IHJl
Y2VpdmUgbWVzc2FnZXMgYWZ0ZXIgdGhlIGNhbGwgcmV0dXJucy4KKyAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VGaWx0ZXIoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCk7CisK
ICAgICBib29sIG9wZW4oKTsKICAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2b2lkIG1hcmtD
dXJyZW50bHlEaXNwYXRjaGVkTWVzc2FnZUFzSW52YWxpZCgpOwpAQCAtMzA3LDYgKzMxMiw4IEBA
IHB1YmxpYzoKICAgICBib29sIGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZygpIGNvbnN0
IHsgcmV0dXJuIG1faWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nOyB9CiAjZW5kaWYKIAor
ICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgorICAgIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUpOwogcHJpdmF0ZToKICAgICBDb25u
ZWN0aW9uKElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCYpOwogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIpOwpAQCAtMzIwLDYgKzMyNyw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZVRvV29ya1F1ZXVlUmVjZWl2ZXIoc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+Jik7CiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2VUb1RocmVhZFJlY2Vp
dmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYpOworICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdl
VG9GaWx0ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+Jik7CiAKICAgICAvLyBDYWxsZWQgb24g
dGhlIGNvbm5lY3Rpb24gd29yayBxdWV1ZS4KICAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3Nh
Z2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+KTsKQEAgLTM0MCw3ICszNDgsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPik7CiAg
ICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2UoRGVjb2RlciYpOwogICAgIHZvaWQgZGlzcGF0Y2hTeW5j
TWVzc2FnZShEZWNvZGVyJik7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShNZXNzYWdlTmFtZSk7CiAgICAgdm9pZCBkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKTsK
IAogICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYW55IHRocmVhZC4KQEAgLTM5Niw2ICs0MDMsOSBA
QCBwcml2YXRlOgogICAgIHVzaW5nIFRocmVhZE1lc3NhZ2VSZWNlaXZlck1hcCA9IEhhc2hNYXA8
c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90PiwgUmVmUHRyPFRocmVhZE1lc3NhZ2VSZWNlaXZl
cj4+OwogICAgIFRocmVhZE1lc3NhZ2VSZWNlaXZlck1hcCBtX3RocmVhZE1lc3NhZ2VSZWNlaXZl
cnM7CiAKKyAgICBMb2NrIG1fbWVzc2FnZUZpbHRlcnNMb2NrOworICAgIERlc3RpbmF0aW9uTWVz
c2FnZUZpbHRlciBtX21lc3NhZ2VGaWx0ZXJzOworCiAgICAgdW5zaWduZWQgbV9pblNlbmRTeW5j
Q291bnQ7CiAgICAgdW5zaWduZWQgbV9pbkRpc3BhdGNoTWVzc2FnZUNvdW50OwogICAgIHVuc2ln
bmVkIG1faW5EaXNwYXRjaE1lc3NhZ2VNYXJrZWREaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5Q291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IDgwYTBm
NzVjNzA1NzJiZjRjMjQ4NTI2ZmVkMmZlZmIwOTdjZGM4ZjkuLjRkZTA1MDk4YzQ2MzJhZDQ1ZjRl
ODUzZjY3ZTllZTNlNzcxMzZkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIu
Y3BwCkBAIC05MCw2ICs5MCwxNyBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1
ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIENvbnN0cnVjdFdpdGhvdXRIZWFkZQogICAgICAgICBt
YXJrSW52YWxpZCgpOwogfQogCitEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVh
bSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCisgICAgOiBtX2J1
ZmZlciB7IHN0cmVhbSB9CisgICAgLCBtX2J1ZmZlclBvcyB7IG1fYnVmZmVyIH0KKyAgICAsIG1f
YnVmZmVyRW5kIHsgbV9idWZmZXIgKyBzdHJlYW1TaXplIH0KKyAgICAsIG1fYnVmZmVyRGVhbGxv
Y2F0b3IoW10gKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfSkKKyAgICAsIG1fZGVzdGluYXRp
b25JRChkZXN0aW5hdGlvbklEKQoreworICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZU5hbWUpKQor
ICAgICAgICByZXR1cm47Cit9CisKIERlY29kZXI6On5EZWNvZGVyKCkKIHsKICAgICBBU1NFUlQo
bV9idWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IDY2OTg1YmMz
ODdkNzQzOTEzNzAxYjExN2I5MTgwMGI5YTI3NzFhYjguLmIzYzZhYzhhMmQ1YWNiYTJjMjE1Mjhk
ZmViMThjNjQxNWNlZGQyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAg
LTUxLDYgKzUxLDcgQEAgY2xhc3MgRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6
ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOwogICAgIGV4cGxpY2l0IERlY29kZXIoY29uc3Qg
dWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2Nh
dG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOworICAg
IERlY29kZXIoY29uc3QgdWludDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCk7CiAgICAgfkRlY29kZXIoKTsKIAogICAgIERlY29kZXIoY29uc3Qg
RGVjb2RlciYpID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVzdGluYXRpb25NZXNzYWdlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Rlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFiYmY4MjUxZjA1
NGE2N2ZhMDA1NThmOGYwYzVjNTM0MGE4NDY5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0Rlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5jcHAKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXN0
aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK3ZvaWQgRGVzdGlu
YXRpb25NZXNzYWdlRmlsdGVyOjphZGRGaWx0ZXIoTWVzc2FnZUZpbHRlciYgZmlsdGVyLCBSZWNl
aXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworCisgICAg
YXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5h
bWUpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBBU1NFUlQoIW1fZmlsdGVycy5jb250YWlucyhrZXkp
KTsKKyAgICBtX2ZpbHRlcnMuYWRkKGtleSwgJmZpbHRlcik7Cit9CisKK3ZvaWQgRGVzdGluYXRp
b25NZXNzYWdlRmlsdGVyOjpyZW1vdmVGaWx0ZXIoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWly
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAg
IEFTU0VSVChtX2ZpbHRlcnMuY29udGFpbnMoa2V5KSk7CisgICAgbV9maWx0ZXJzLnJlbW92ZShr
ZXkpOworfQorCit2b2lkIERlc3RpbmF0aW9uTWVzc2FnZUZpbHRlcjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiBtZXNz
YWdlKQoreworCisgICAgaWYgKG1fZmlsdGVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3Nh
Z2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIDApOworICAgIGlmIChhdXRvIGZpbHRlciA9IG1f
ZmlsdGVycy5nZXQoa2V5KSkKKyAgICAgICAgZmlsdGVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25u
ZWN0aW9uLCBtZXNzYWdlKTsKKyAgICBpZiAoIW1lc3NhZ2UpCisgICAgICAgIHJldHVybjsKKyAg
ICBrZXkuc2Vjb25kID0gbWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpOworICAgIGlmICgha2V5LnNl
Y29uZCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRvIGZpbHRlciA9IG1fZmlsdGVycy5n
ZXQoa2V5KSkKKyAgICAgICAgZmlsdGVyLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBt
ZXNzYWdlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVzdGluYXRpb25NZXNzYWdlRmlsdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
ZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OGYxMGUyZjg1YTE1NmUzNGJm
YTA2ZGQ2YzI5ZTAzZmI2MDhiY2NkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGVzdGluYXRpb25NZXNzYWdlRmlsdGVyLmgKQEAgLTAsMCArMSw1NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VGaWx0ZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3Bh
Y2UgSVBDIHsKKworZW51bSBjbGFzcyBSZWNlaXZlck5hbWUgOiB1aW50OF90OworCitjbGFzcyBE
ZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIgZmluYWwgOiBwdWJsaWMgTWVzc2FnZUZpbHRlciB7Citw
dWJsaWM6CisgICAgRGVzdGluYXRpb25NZXNzYWdlRmlsdGVyKCkgPSBkZWZhdWx0OworICAgIH5E
ZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIoKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkTWVzc2FnZShjb25zdCBEZWNvZGVyJiBtZXNzYWdlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEZpbHRlcnNNYXA6OmlzVmFsaWRLZXkoc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nh
c3Q8dWludDhfdD4obWVzc2FnZS5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCBtZXNzYWdlLmRlc3Rp
bmF0aW9uSUQoKSkpOworICAgIH0KKworICAgIC8vIEFkZHMgYSB3aWxkY2FyZCBmaWx0ZXIgaWYg
ZGVzdGluYXRpb25JRCA9PSAwLgorICAgIHZvaWQgYWRkRmlsdGVyKE1lc3NhZ2VGaWx0ZXImLCBS
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIHZvaWQgcmVtb3ZlRmls
dGVyKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisKKyAgICAvLyBNZXNz
YWdlRmlsdGVyIG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvbm5lY3Rp
b24mLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mKSBmaW5hbDsKK3ByaXZhdGU6CisgICAgdXNp
bmcgRmlsdGVyc01hcCA9IEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90PiwgTWVz
c2FnZUZpbHRlcio+OworICAgIEZpbHRlcnNNYXAgbV9maWx0ZXJzOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKaW5k
ZXggNDEyOWQ0ZTJiNDlkNWM4ZmM0MWEyZDY1NGFkY2Q4OWU4NmM2MzdmNi4uNTlkODM5NmU1ZDg4
ZGU4ZmVhMGRiMTc1YTI2YTAxNDQ3NGI0ZDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTY0LDYgKzE2NSwyOCBAQCB2b2lk
IGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBEZWNvZGVyJiBkZQogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihjb25uZWN0aW9uLCBX
VEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBm
dW5jdGlvbik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1l
IE1GPgordm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2UmIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rp
b24pCit7CisgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzeW5jUmVxdWVzdElEKSB8fCAhc3luY1JlcXVlc3RJRCkgeworICAgICAgICBkZWNv
ZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBPcHRpb25h
bDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+IGFyZ3Vt
ZW50czsKKyAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKKyAgICBpZiAoIWFyZ3VtZW50cykgewor
ICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBbc3luY1Jl
cXVlc3RJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYuLi4gYXJn
cykgbXV0YWJsZSB7CisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoc3luY1JlcXVl
c3RJRCwgYXJncy4uLik7CisgICAgfTsKKyAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZSgq
YXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24p
OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4KIHZv
aWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRl
Y29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlRmlsdGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9NZXNzYWdlRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RlOTYzNTY4MDQzMTRlNTA1ZDliOTJh
NWM2ZThkZDJjNDUxYjcyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL01lc3NhZ2VGaWx0ZXIuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBDb25uZWN0aW9uOworY2xh
c3MgRGVjb2RlcjsKKworY2xhc3MgTWVzc2FnZUZpbHRlciB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+TWVzc2FnZUZpbHRlcigpID0gZGVmYXVsdDsKKyAgICAvLyBGaWx0ZXIgY29uc3VtZXMgdGhl
IG1lc3NhZ2UgaWYgaXQgYWRvcHRzIHRoZSBkZWNvZGVyLgorICAgIC8vIENhbGxlZCB3aXRoIENv
bm5lY3Rpb24gbWVzc2FnZSBmaWx0ZXIgbG9jayBoZWxkLgorICAgIC8vIE1heSBiZSBjYWxsZWQg
ZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JikgPSAwOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0ZjVjZGYwMDhlNWE3ZjJkMmYx
MDJhMjM1YzNjMjI1MTczMzc2ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNsaWVudENv
bm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbUNsaWVudENvbm5lY3Rpb246
OlN0cmVhbUNsaWVudENvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IHNp
emUpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fYnVmZmVyKHNpemUp
Cit7CisgICAgLy8gUmVhZCBzdGFydHMgZnJvbSAwIHdpdGggbGltaXQgb2YgMCBhbmQgcmVhZGVy
IHNsZWVwaW5nLgorICAgIHNoYXJlZFNlbmRlck9mZnNldCgpLnN0b3JlKFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc3RkOjptZW1vcnlf
b3JkZXJfcmVsYXhlZCk7CisgICAgLy8gV3JpdGUgc3RhcnRzIGZyb20gMCB3aXRoIGEgbGltaXQg
b2YgdGhlIHdob2xlIGJ1ZmZlci4KKyAgICBzaGFyZWRSZWNlaXZlck9mZnNldCgpLnN0b3JlKDAs
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKK3sK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3dha2VVcFNlbWFwaG9yZSA9IFdURk1vdmUoc2Vt
YXBob3JlKTsKKyNlbmRpZgorICAgIHdha2VVcFJlY2VpdmVyKCk7Cit9CisKK3ZvaWQgU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIoKQoreworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIGlmIChtX3dha2VVcFNlbWFwaG9yZSkKKyAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUt
PnNpZ25hbCgpOworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzI1MmYwNjg1OTIx
OGFkMzAwNGI5ZGViNmE0ODczNDAxNWNkODBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMjQw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5j
bHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVk
ZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CituYW1lc3BhY2UgSVBDIHsKKworLy8gQSBtZXNzYWdlIHN0cmVhbSBpcyBh
IGhhbGYtZHVwbGV4IHR3by13YXkgc3RyZWFtIG9mIG1lc3NhZ2VzIHRvIGEgYmV0d2VlbiBhIHNl
bmRlciBhbmQgdGhlCisvLyBkZXN0aW5hdGlvbiByZWNlaXZlci4KKy8vCisvLyBTdHJlYW1DbGll
bnRDb25uZWN0aW9uIGNhbiBzZW5kIG1lc3NhZ2VzIGFuZCByZWNlaXZlIHN5bmNocm9ub3VzIHJl
cGxpZXMKKy8vIHRocm91Z2ggdGhpcyBtZXNzYWdlIHN0cmVhbSBvciB0aHJvdWdoIElQQzo6Q29u
bmVjdGlvbi4KKy8vCisvLyBUaGUgZGVzdGluYXRpb24gcmVjZWl2ZXIgd2lsbCByZWNlaXZlIG1l
c3NhZ2VzIGluIG9yZGVyIF9mb3IgdGhlIGRlc3RpbmF0aW9uIG1lc3NhZ2VzXy4KKy8vIFRoZSB3
aG9sZSBJUEM6OkNvbm5lY3Rpb24gbWVzc2FnZSBvcmRlciBpcyBub3QgcHJlc2VydmVkLgorCitj
bGFzcyBTdHJlYW1DbGllbnRDb25uZWN0aW9uIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTdHJlYW1DbGllbnRDb25uZWN0aW9uKTsKK3B1YmxpYzoKKyAgICBTdHJlYW1DbGllbnRD
b25uZWN0aW9uKENvbm5lY3Rpb24mLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisKKyAgICBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiBzdHJlYW1CdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAg
IHZvaWQgc2V0V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJ
ZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKKyAgICB1c2lu
ZyBTZW5kU3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMo
VCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIE9iamVjdElkZW50aWZpZXI8VT4gZGVz
dGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgU3Bh
biB7CisgICAgICAgIHVpbnQ4X3QqIGRhdGE7CisgICAgICAgIHNpemVfdCBzaXplOworICAgIH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VTaXplID0gU3RyZWFt
Q29ubmVjdGlvbkVuY29kZXI6Om1pbmltdW1NZXNzYWdlU2l6ZTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50ID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1l
c3NhZ2VBbGlnbm1lbnQ7CisgICAgYm9vbCB0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1vbm90b25pY1RpbWUgdGltZW91dCk7CisgICAgdm9pZCBz
ZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShTcGFuJiYpOworCisgICAgT3B0aW9uYWw8U3Bh
bj4gdHJ5QWNxdWlyZShNb25vdG9uaWNUaW1lIHRpbWVvdXQpOworICAgIGVudW0gY2xhc3MgV2Fr
ZVVwUmVjZWl2ZXIgOiBib29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcworICAgIH07Cisg
ICAgV2FrZVVwUmVjZWl2ZXIgcmVsZWFzZShzaXplX3Qgd3JpdGVTaXplKTsKKyAgICB2b2lkIHdh
a2VVcFJlY2VpdmVyKCk7CisKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsaW1pdCk7CisgICAgc2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0
KTsKKyAgICBzaXplX3QgY2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7
CisKKyAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci53cmFwT2Zmc2V0KG9mZnNldCk7IH0KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6
ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFs
aWdubWVudD4ob2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9CisgICAgQXRvbWljPHNpemVf
dD4mIHNoYXJlZFNlbmRlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9mZnNldCgp
OyB9CisgICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4g
bV9idWZmZXIucmVjZWl2ZXJPZmZzZXQoKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CisKKyAgICBDb25uZWN0aW9uJiBtX2Nvbm5l
Y3Rpb247CisgICAgdWludDY0X3QgbV9jdXJyZW50RGVzdGluYXRpb25JRCB7IDAgfTsKKworICAg
IHNpemVfdCBtX3NlbmRlck9mZnNldCB7IDAgfTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
IG1fYnVmZmVyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9wdGlvbmFsPFNlbWFwaG9yZT4g
bV93YWtlVXBTZW1hcGhvcmU7CisjZW5kaWYKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+Citib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2Us
IE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KQorewor
ICAgIHN0YXRpY19hc3NlcnQoIVQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKKyAgICBN
b25vdG9uaWNUaW1lIGFic29sdXRlVGltZW91dCA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGlt
ZW91dDsKKyAgICBpZiAoIXRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQoZGVzdGluYXRpb25J
RC50b1VJbnQ2NCgpLCBhYnNvbHV0ZVRpbWVvdXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGlmICghc3Bh
bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHsKKyAgICAgICAgU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIgbWVzc2FnZUVuY29kZXIgeyBUOjpuYW1lKCksIHNwYW4tPmRhdGEsIHNwYW4tPnNp
emUgfTsKKyAgICAgICAgaWYgKG1lc3NhZ2VFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCkp
IHsKKyAgICAgICAgICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShtZXNzYWdlRW5jb2Rl
ci5zaXplKCkpOworICAgICAgICAgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpXYWtlVXBSZWNlaXZlcjo6WWVzKQorICAgICAgICAgICAgICAgIHdha2VVcFJl
Y2VpdmVyKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpzcGFuKSk7CisgICAgaWYg
KCFtX2Nvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklEKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPgorU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1
bHQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vj
b25kcyB0aW1lb3V0KQoreworICAgIHN0YXRpY19hc3NlcnQoVDo6aXNTeW5jLCAiTWVzc2FnZSBp
cyBub3Qgc3luYyEiKTsKKyAgICBNb25vdG9uaWNUaW1lIGFic29sdXRlVGltZW91dCA9IE1vbm90
b25pY1RpbWU6Om5vdygpICsgdGltZW91dDsKKyAgICBpZiAoIXRyeVNlbmREZXN0aW5hdGlvbklE
SWZOZWVkZWQoZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBhYnNvbHV0ZVRpbWVvdXQpKQorICAg
ICAgICByZXR1cm4geyB9OworICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1l
b3V0KTsKKyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVybiB7IH07CisgICAgLy8gRklYTUU6
IGltcGxlbWVudCBzZW5kIHRocm91Z2ggc3RyZWFtLgorICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
cmVjZWl2ZSB0aHJvdWdoIHN0cmVhbS4KKyAgICBzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2Fn
ZShXVEZNb3ZlKCpzcGFuKSk7CisgICAgYXV0byByZXN1bHQgPSBtX2Nvbm5lY3Rpb24uc2VuZFN5
bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50
NjQoKSwgdGltZW91dCwgSVBDOjpTZW5kU3luY09wdGlvbjo6RGlzcGF0Y2hJblJlY2VpdmVPcmRl
cik7CisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKK30K
KworaW5saW5lIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5U2VuZERlc3RpbmF0aW9u
SURJZk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIGFic29sdXRl
VGltZW91dCkKK3sKKyAgICBpZiAoZGVzdGluYXRpb25JRCA9PSBtX2N1cnJlbnREZXN0aW5hdGlv
bklEKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKGFi
c29sdXRlVGltZW91dCk7CisgICAgaWYgKCFzcGFuKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZW5jb2RlciB7IE1lc3NhZ2VOYW1lOjpTZXRTdHJl
YW1EZXN0aW5hdGlvbklELCBzcGFuLT5kYXRhLCBzcGFuLT5zaXplIH07CisgICAgaWYgKCEoZW5j
b2RlciA8PCBkZXN0aW5hdGlvbklEKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
Ly8gU2l6ZSBvZiB0aGUgbWluaW11bSBhbGxvY2F0aW9uIGlzIGluY29ycmVjdC4gTGlrZWx5IGFu
IGFsaWdubWVudCBpc3N1ZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBhdXRv
IHdha2V1cFJlc3VsdCA9IHJlbGVhc2UoZW5jb2Rlci5zaXplKCkpOworICAgIGlmICh3YWtldXBS
ZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAg
ICAgICAgd2FrZVVwUmVjZWl2ZXIoKTsKKyAgICBtX2N1cnJlbnREZXN0aW5hdGlvbklEID0gZGVz
dGluYXRpb25JRDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIHZvaWQgU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmIHNwYW4p
Cit7CisgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZW5jb2RlciB7IE1lc3NhZ2VOYW1lOjpQ
cm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlLCBzcGFuLmRhdGEsIHNwYW4uc2l6ZSB9OworICAgIC8v
IE5vdCBub3RpZnlpbmcgb24gd2FrZSB1cCBzaW5jZSB0aGUgb3V0LW9mLXN0cmVhbSBtZXNzYWdl
IHdpbGwgZG8gdGhhdC4KKyAgICAodm9pZCkgcmVsZWFzZShlbmNvZGVyLnNpemUoKSk7Cit9Citp
bmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZShNb25vdG9uaWNUaW1lIHRpbWVvdXQpCit7CisgICAgZm9y
ICg7OykgeworICAgICAgICBzaXplX3Qgc2VuZGVyTGltaXQgPSBjbGFtcGVkTGltaXQoc2hhcmVk
UmVjZWl2ZXJPZmZzZXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpKTsKKyAgICAg
ICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlbmRlck9mZnNldCwgc2VuZGVyTGltaXQp
OworICAgICAgICBpZiAocmVzdWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNpemUpIHsKKyAgICAg
ICAgICAgIGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgICAgICAgICBpZiAo
bm93ID49IHRpbWVvdXQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgICAgICAgICBzaXplX3Qgb2xkU2VuZGVyTGltaXQgPSBzaGFyZWRSZWNlaXZlck9m
ZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhzZW5kZXJMaW1pdCwgU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcsIHN0ZDo6bWVtb3J5X29y
ZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICAgICAgaWYg
KHNlbmRlckxpbWl0ID09IG9sZFNlbmRlckxpbWl0KQorICAgICAgICAgICAgICAgIG1fYnVmZmVy
LnNlbmRlcldhaXRTZW1hcGhvcmUoKS53YWl0Rm9yKHRpbWVvdXQgLSBub3cpOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc2VuZGVyTGltaXQgPSBjbGFtcGVkTGltaXQob2xk
U2VuZGVyTGltaXQpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fc2Vu
ZGVyT2Zmc2V0LCBzZW5kZXJMaW1pdCk7CisgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAg
ICAgVGhyZWFkOjp5aWVsZCgpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlc3Vs
dC5zaXplID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK2lubGluZSBTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpXYWtlVXBSZWNlaXZlciBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpyZWxl
YXNlKHNpemVfdCBzaXplKQoreworICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCBtaW5pbXVtTWVz
c2FnZVNpemUpOworICAgIHNpemVfdCBleHBlY3RlZFJlY2VpdmVyTGltaXQgPSBtX3NlbmRlck9m
ZnNldDsKKyAgICBtX3NlbmRlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9zZW5k
ZXJPZmZzZXQpICsgc2l6ZSk7CisgICAgQVNTRVJUKG1fc2VuZGVyT2Zmc2V0IDwgZGF0YVNpemUo
KSk7CisgICAgLy8gSWYgdGhlIHJlY2VpdmVyIHdyb3RlIG92ZXIgdGhlIHNlbmRlck9mZnNldCB3
aXRoIHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgd2Uga25vdyBpdCBpcyBzbGVl
cGluZy4KKyAgICBzaXplX3QgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNlbmRlck9mZnNldCgpLmV4
Y2hhbmdlKG1fc2VuZGVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICBp
ZiAocmVjZWl2ZXJMaW1pdCAhPSBleHBlY3RlZFJlY2VpdmVyTGltaXQpCisgICAgICAgIHJldHVy
biBXYWtlVXBSZWNlaXZlcjo6WWVzOworICAgIHJldHVybiBXYWtlVXBSZWNlaXZlcjo6Tm87Cit9
CisKK2lubGluZSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OmFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAgICBB
U1NFUlQob2Zmc2V0IDwgZGF0YVNpemUoKSk7CisgICAgQVNTRVJUKGxpbWl0IDwgZGF0YVNpemUo
KSk7CisgICAgc2l6ZV90IGFsaWduZWQgPSBhbGlnbk9mZnNldChvZmZzZXQpOworICAgIHNpemVf
dCByZXN1bHRTaXplID0gMDsKKyAgICBpZiAob2Zmc2V0IDwgbGltaXQpIHsKKyAgICAgICAgaWYg
KGFsaWduZWQgPj0gb2Zmc2V0ICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgIHJlc3Vs
dFNpemUgPSBzaXplKGFsaWduZWQsIGxpbWl0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo
YWxpZ25lZCA+PSBvZmZzZXQgfHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVzdWx0
U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0KKyAgICByZXR1cm4geyBkYXRhKCkg
KyBhbGlnbmVkLCByZXN1bHRTaXplIH07Cit9CisKK2lubGluZSBzaXplX3QgU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6c2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgaWYg
KCFsaW1pdCkKKyAgICAgICAgcmV0dXJuIGRhdGFTaXplKCkgLSAxIC0gb2Zmc2V0OworICAgIGlm
IChsaW1pdCA8PSBvZmZzZXQpCisgICAgICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gb2Zmc2V0Owor
ICAgIHJldHVybiBsaW1pdCAtIG9mZnNldCAtIDE7Cit9CisKK2lubGluZSBzaXplX3QgU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29u
c3QKK3sKKyAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUoKSAtIDEpKTsKKyAg
ICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkgLSAxKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDU4MTk0OWJmNTY0MzI5NWFiNzZjY2NjNjMzZTBmNGNh
NGYxYjJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgRmZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIK
KworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgSVBDIHsK
Kworc3RhdGljIFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gY3JlYXRlTWVtb3J5KHNpemVfdCBz
aXplKQoreworICAgIGF1dG8gbWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9jYXRl
KHNpemUpOworICAgIGlmICghbWVtb3J5KQorICAgICAgICBDUkFTSCgpOworICAgIHJldHVybiBt
ZW1vcnkucmVsZWFzZU5vbk51bGwoKTsKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6ZSkKKyAgICA6IFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXIoY3JlYXRlTWVtb3J5KG1lbW9yeVNpemUpLCBtZW1vcnlTaXplKQoreworfQor
CisjaWYgUExBVEZPUk0oQ09DT0EpCitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiBtZW1vcnksIHNpemVfdCBt
ZW1vcnlTaXplLCBTZW1hcGhvcmUmJiBzZW5kZXJXYWl0U2VtYXBob3JlKQorICAgIDogbV9kYXRh
U2l6ZShtZW1vcnlTaXplIC0gaGVhZGVyU2l6ZSgpKQorICAgICwgbV9zaGFyZWRNZW1vcnkoV1RG
TW92ZShtZW1vcnkpKQorICAgICwgbV9zZW5kZXJXYWl0U2VtYXBob3JlKFdURk1vdmUoc2VuZGVy
V2FpdFNlbWFwaG9yZSkpCit7Cit9CisjZW5kaWYKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYgbWVtb3J5
LCBzaXplX3QgbWVtb3J5U2l6ZSkKKyAgICA6IG1fZGF0YVNpemUobWVtb3J5U2l6ZSAtIGhlYWRl
clNpemUoKSkKKyAgICAsIG1fc2hhcmVkTWVtb3J5KFdURk1vdmUobWVtb3J5KSkKK3sKK30KKwor
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyJiYgb3RoZXIpID0gZGVmYXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6flN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoKSA9IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rp
b25CdWZmZXImIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAg
IG1fZGF0YVNpemUgPSBvdGhlci5tX2RhdGFTaXplOworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9
IFdURk1vdmUob3RoZXIubV9zaGFyZWRNZW1vcnkpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
ICAgICBtX3NlbmRlcldhaXRTZW1hcGhvcmUgPSBXVEZNb3ZlKG90aGVyLm1fc2VuZGVyV2FpdFNl
bWFwaG9yZSk7CisjZW5kaWYKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorewor
ICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIGlmICghbV9zaGFy
ZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkV3JpdGUpKQorICAgICAgICBDUkFTSCgpOworICAgIFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBtX3NoYXJlZE1l
bW9yeS0+c2l6ZSgpIH07CisgICAgZW5jb2RlciA8PCBpcGNIYW5kbGU7CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgZW5jb2RlciA8PCBtX3NlbmRlcldhaXRTZW1hcGhvcmUuY3JlYXRlU2VuZFJp
Z2h0KCk7CisjZW5kaWYKK30KKworT3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0
aW9uYWw8V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gaXBjSGFuZGxlOworICAgIGRl
Y29kZXIgPj4gaXBjSGFuZGxlOworICAgIGlmICghaXBjSGFuZGxlKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9wdGlvbmFsPE1hY2hTZW5k
UmlnaHQ+IHNlbWFwaG9yZVNlbmRSaWdodDsKKyAgICBkZWNvZGVyID4+IHNlbWFwaG9yZVNlbmRS
aWdodDsKKyAgICBpZiAoIXNlbWFwaG9yZVNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyNlbmRpZgorICAgIGlmIChpcGNIYW5kbGUtPmRhdGFTaXplIDwgaGVhZGVyU2l6
ZSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gc2hhcmVkTWVtb3J5
ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUtPmhhbmRsZSwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CisgICAgaWYgKHNoYXJlZE1lbW9y
eS0+c2l6ZSgpIDwgaXBjSGFuZGxlLT5kYXRhU2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICByZXR1cm4gU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciB7IHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpLCBpcGNIYW5kbGUtPmRhdGFTaXpl
LCBTZW1hcGhvcmUgeyBXVEZNb3ZlKCpzZW1hcGhvcmVTZW5kUmlnaHQpIH0gfTsKKyNlbHNlCisg
ICAgcmV0dXJuIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgeyBzaGFyZWRNZW1vcnktPnJlbGVhc2VO
b25OdWxsKCksIGlwY0hhbmRsZS0+ZGF0YVNpemUgfTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDAxOWFkZTQ0ODM0NWEzMGI4MGI2NjlmODcxNjNhNTZlMGQ2NWI4OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25C
dWZmZXIuaApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUg
PHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNlbmRpZgorCituYW1lc3BhY2Ug
SVBDIHsKKworLy8gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBpcyBhIHNoYXJlZCAiYmktcGFydGl0
ZSIgY2lyY3VsYXIgYnVmZmVyIHN1cHBvcnRpbmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdl
cywgc3BlY2lmaWMgZGF0YSBhbGlnbm1lbnQgd2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUuCisv
LyBTdHJlYW1DbGllbnRDb25uZWN0aW9uIGFuZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHVzZSBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyIHRvIGNvbW11bmljYXRlLgorLy8KKy8vIFRoZSAiYmktcGFy
dGl0ZSIgaXMgaGVyZSB0byBtZWFuIHRoYXQgd3JpdGVzIGFuZCByZWFkcyB0byB0aGUgYnVmZmVy
IG11c3QgYmUKKy8vIGNvbnRpbnVvdXMuCisvLworLy8gVGhlIGNsaWVudCAoc2VuZGVyIG9yIHJl
Y2VpdmVyKSAiYWNxdWlyZXMiIHNvbWUgYW1vdW50IG9mIGJ1ZmZlciBkYXRhLiBJZiBidWZmZXIg
aGFzIG5vCisvLyBjYXBhY2l0eSwgYWNxdWlyZSByZXR1cm5zIHdpdGggemVybyBjYXBhY2l0eS4g
SWYgYnVmZmVyIGhhcyBhdCBsZWFzdCBhY3F1aXJlZAorLy8gY2FwYWNpdHksIGFsbCB0aGUgYXZh
aWxhYmxlIGNhcGFjaXR5IGlzIHJldHVybmVkLgorLy8KKy8vIFRoZSBjbGllbnQgInJlbGVhc2Vz
IiB0aGUgc29tZSBhbW91bnQgb2YgZGF0YSwgYXQgbGVhc3QgdGhlIGFtb3VudCBhY3F1aXJlZCBi
dXQgcG90ZW50aWFsbHkKKy8vIG1vcmUuCisvLworLy8gQm90aCBzZW5kZXIgYW5kIHJlY2VpdmVy
IG11c3QgYWNxdWlyZSBzYW1lIGFtb3VudCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhl
IGFjcXVpcmUgc2VxdWVuY2UuCisvLyBJZiBzZW5kZXIgYWNxdWlyZXMgWCBhbmQgdGhlbiBZIGFt
b3VudCwgcmVjZWl2ZXIgbXVzdCBkbyB0aGUgc2FtZS4KKy8vCisvLyBUaGUgY2lyY3VsYXIgYnVm
ZmVyIGhhcyBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRoZSBk
YXRhIGJldHdlZW4gW3NlbmRlck9mZnNldCwgcmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9m
ZnNldCA9PQorLy8gcmVjZWl2ZXJPZmZzZXQsIHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4KKy8v
ICogUmVjZWl2ZXIgb3ducyB0aGUgZGF0YSBiZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVy
T2Zmc2V0Wy4KKy8vICogVGhlIGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZh
bHVlcy4gVGhlIGxhc3QgdmFsdWUgaXMgcmVzZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRoYXQg
dGhlIGJ1ZmZlciBpcyBmdWxsLiBGSVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1l
bnRhdGlvbiBpZgorLy8gaXQgd291bGQgdXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9mIHRo
ZSBob2xlIGFzIHRoZSBpbmRpY2F0b3IuIFRoaXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWduZWRT
cGFuIGltcGxlbWVudGF0aW9uIHRvIHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgorLy8gKiBB
bGwgYXRvbWljIHZhcmlhYmxlIGxvYWRzIGFyZSB1bnRydXN0ZWQsIHNvIHRoZXkncmUgY2xhbXBl
ZC4gVmlvbGF0aW9ucyBhcmUgbm90IHJlcG9ydGVkLAorLy8gdGhvdWdoLgorLy8gU2VlIFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlLgorY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6
ZSk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYp
OworICAgIH5TdHJlYW1Db25uZWN0aW9uQnVmZmVyKCk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYgb3BlcmF0b3I9KFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisKKyAgICBzaXplX3Qg
d3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9m
ZnNldCA8PSBkYXRhU2l6ZSgpKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBkYXRhU2l6ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8c2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQ+CisgICAgc2l6ZV90IGFsaWduT2Zm
c2V0KHNpemVfdCBvZmZzZXQsIHNpemVfdCBhY3F1aXJlU2l6ZSkgY29uc3QKKyAgICB7CisgICAg
ICAgIG9mZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2Y8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0
KTsKKyAgICAgICAgaWYgKG9mZnNldCArIGFjcXVpcmVTaXplID49IGRhdGFTaXplKCkpCisgICAg
ICAgICAgICBvZmZzZXQgPSAwOworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAg
IEF0b21pYzxzaXplX3Q+JiBzZW5kZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZW5kZXJP
ZmZzZXQ7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgcmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBo
ZWFkZXIoKS5yZWNlaXZlck9mZnNldDsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBoZWFk
ZXJTaXplKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFT
aXplOyB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgU2VtYXBob3JlJiBzZW5kZXJXYWl0U2Vt
YXBob3JlKCkgeyByZXR1cm4gbV9zZW5kZXJXYWl0U2VtYXBob3JlOyB9CisjZW5kaWYKKworICAg
IC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpzZW5kZXJPZmZzZXQgd2hlbiByZWNlaXZl
ciBpcyBzbGVlcGluZywgZS5nLiBub3QgcnVubmluZy4KKyAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcgPSAxIDw8IDMxOworICAgIC8v
IFRhZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpyZWNlaXZlck9mZnNldCB3aGVuIHNlbmRlciBp
cyB3YWl0aW5nLCBlLmcuIHdhaXRpbmcgb24KKyAgICAvLyBhIHNlbWFwaG9yZS4KKyAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCByZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGluZ1RhZyA9IDEg
PDwgMzE7CisKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIE9w
dGlvbmFsPFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZh
dGU6CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihSZWY8
V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYsIHNpemVfdCBtZW1vcnlTaXplLCBTZW1hcGhvcmUmJiBz
ZW5kZXJXYWl0U2VtYXBob3JlKTsKKyNlbmRpZgorICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIo
UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYmLCBzaXplX3QgbWVtb3J5U2l6ZSk7CisKKyAgICBz
dHJ1Y3QgSGVhZGVyIHsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gcmVjZWl2ZXJPZmZzZXQ7Cisg
ICAgICAgIC8vIFBhZGRpbmcgc28gdGhhdCB0aGUgdmFyaWFibGVzIG1vc3RseSBhY2Nlc3NlZCBi
eSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGRvIG5vdCBzaGFyZSBhIGNhY2hlIGxpbmUuCisgICAgICAg
IC8vIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBhdm9pZCBjYWNoZS1saW5lIGluZHVjZWQgcmVkdWN0
aW9uIG9mIHBhcmFsbGVsIGFjY2Vzcy4KKyAgICAgICAgdWludDY0X3QgY2FjaGVMaW5lUGFkZGlu
Z1syXTsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gc2VuZGVyT2Zmc2V0OworICAgIH07CisgICAg
SGVhZGVyJiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxIZWFkZXIq
PihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGhlYWRlclNpemUoKSB7IHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihzdGQ6Om1h
eF9hbGlnbl90KT4oc2l6ZW9mKEhlYWRlcikpOyB9CisKKyAgICBzaXplX3QgbV9kYXRhU2l6ZSB7
IDAgfTsKKyAgICBSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIFNlbWFwaG9yZSBtX3NlbmRlcldhaXRTZW1hcGhvcmU7Cisj
ZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1Db25uZWN0aW9uRW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MjMyZGVjZjZjNzkzYTQ1NzcxNjhl
OTdlZmI1MWFhZmIzMmZkZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisKK25hbWVzcGFjZSBJUEMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IHN0cnVj
dCBBcmd1bWVudENvZGVyOworCisvLyBJUEMgZW5jb2RlciB3aGljaDoKKy8vICAtIEVuY29kZXMg
dG8gYSBjYWxsZXIgYnVmZmVyIHdpdGggZml4ZWQgc2l6ZSwgZG9lcyBub3QgcmVzaXplLCBzdG9w
cyB3aGVuIHNpemUgcnVucyBvdXQKKy8vICAtIERvZXMgbm90IGluaXRpYWxpemUgYWxpZ25tZW50
IGdhcHMKKy8vCitjbGFzcyBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBmaW5hbCB7CitwdWJsaWM6
CisgICAgLy8gU3RyZWFtIG1lc3NhZ2UgbmVlZHMgdG8gYmUgYXQgbGVhc3Qgc2l6ZSBvZiBTdHJl
YW1TZXREZXN0aW5hdGlvbklEIG1lc3NhZ2UuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
bWluaW11bU1lc3NhZ2VTaXplID0gc2l6ZW9mKE1lc3NhZ2VOYW1lKSArIHNpemVvZih1aW50NjRf
dCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IGFsaWdu
b2YoTWVzc2FnZU5hbWUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lQQ0VuY29kZXIg
PSB0cnVlOworCisgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2Fn
ZU5hbWUsIHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbUNhcGFjaXR5KQorICAgICAgICA6
IG1fYnVmZmVyKHN0cmVhbSkKKyAgICAgICAgLCBtX2J1ZmZlckNhcGFjaXR5KHN0cmVhbUNhcGFj
aXR5KQorICAgIHsKKyAgICAgICAgKnRoaXMgPDwgbWVzc2FnZU5hbWU7CisgICAgfQorCisgICAg
flN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyKCkgPSBkZWZhdWx0OworCisgICAgYm9vbCBlbmNvZGVG
aXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBh
bGlnbm1lbnQpCisgICAgeworICAgICAgICBzaXplX3QgYnVmZmVyUG9pbnRlciA9IHN0YXRpY19j
YXN0PHNpemVfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9idWZmZXIgKyBtX2VuY29k
ZWRTaXplKSk7CisgICAgICAgIHNpemVfdCBuZXdCdWZmZXJQb2ludGVyID0gcm91bmRVcFRvTXVs
dGlwbGVPZihhbGlnbm1lbnQsIGJ1ZmZlclBvaW50ZXIpOworICAgICAgICBpZiAobmV3QnVmZmVy
UG9pbnRlciA8IGJ1ZmZlclBvaW50ZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGludHB0cl90IGFsaWduZWRTaXplID0gbV9lbmNvZGVkU2l6ZSArIChuZXdCdWZmZXJQb2lu
dGVyIC0gYnVmZmVyUG9pbnRlcik7CisgICAgICAgIGlmICghcmVzZXJ2ZShhbGlnbmVkU2l6ZSwg
c2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHVpbnQ4X3QqIGJ1ZmZl
ciA9IG1fYnVmZmVyICsgYWxpZ25lZFNpemU7CisgICAgICAgIG1lbWNweShidWZmZXIsIGRhdGEs
IHNpemUpOworICAgICAgICBtX2VuY29kZWRTaXplID0gYWxpZ25lZFNpemUgKyBzaXplOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiBvcGVyYXRvcjw8KFQmJiB0KQorICAgIHsKKyAgICAg
ICAgQXJndW1lbnRDb2RlcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5j
ZV90PFQ+Piwgdm9pZD46OmVuY29kZSgqdGhpcywgc3RkOjpmb3J3YXJkPFQ+KHQpKTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBBU1NF
UlQoaXNWYWxpZCgpKTsgcmV0dXJuIG1fZW5jb2RlZFNpemU7IH0KKyAgICBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlckNhcGFjaXR5OyB9CisgICAgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuIGlzVmFsaWQoKTsgfQorcHJpdmF0ZToKKyAgICBib29sIHJlc2VydmUo
c2l6ZV90IGFsaWduZWRTaXplLCBzaXplX3QgYWRkaXRpb25hbFNpemUpCisgICAgeworICAgICAg
ICBzaXplX3Qgc2l6ZSA9IGFsaWduZWRTaXplICsgYWRkaXRpb25hbFNpemU7CisgICAgICAgIGlm
IChzaXplIDwgYWxpZ25lZFNpemUgfHwgc2l6ZSA+IG1fYnVmZmVyQ2FwYWNpdHkpIHsKKyAgICAg
ICAgICAgIG1fYnVmZmVyQ2FwYWNpdHkgPSAwOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB1aW50OF90KiBtX2J1
ZmZlcjsKKyAgICBzaXplX3QgbV9idWZmZXJDYXBhY2l0eTsKKyAgICBzaXplX3QgbV9lbmNvZGVk
U2l6ZSB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNDkwYmMwMWE0OGU3NTZmZWE2ZGUyZjdlY2JkMjdmZDljNzI5Y2Q3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZS5jcHAKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgorCituYW1lc3Bh
Y2UgSVBDIHsKKworU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZShjb25zdCBjaGFyKiBuYW1lKQorICAgIDogbV9uYW1lKG5hbWUpCit7Cit9CisKK3Zv
aWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6ZGlzcGF0Y2goV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYgZnVuY3Rpb24pCit7CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgICAgIG1fZnVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAgICAg
IEFTU0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5v
dCBzdXBwb3J0ZWQuCisgICAgfQorICAgIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQoKTsKKworfQor
dm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjphZGRTdHJlYW1Db25uZWN0aW9uKFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uKQoreworICAgIHsKKyAgICAgICAgTG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX2Nvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9u
KTsKKyAgICAgICAgQVNTRVJUKCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcg
c2h1dGRvd24gbm90IHN1cHBvcnRlZC4KKyAgICB9CisgICAgd2FrZVVwUHJvY2Vzc2luZ1RocmVh
ZCgpOworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnJlbW92ZVN0cmVhbUNv
bm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24pCit7CisgICAg
QVNTRVJUKG1fcHJvY2Vzc2luZ1RocmVhZCk7CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24pOworICAg
ICAgICBBU1NFUlQoIW1fc2hvdWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0ZG93
biBub3Qgc3VwcG9ydGVkLgorICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3dha2VV
cFNlbWFwaG9yZS5zaWduYWwoKTsKKyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnN0b3AoKQoreworICAgIG1fc2hvdWxkUXVpdCA9IHRydWU7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgaWYgKCFtX3Byb2Nlc3NpbmdUaHJlYWQpCisgICAgICAgIHJldHVybjsK
KyAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsKKyAgICBtX3Byb2Nlc3NpbmdUaHJlYWQt
PndhaXRGb3JDb21wbGV0aW9uKCk7CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkID0gbnVsbHB0cjsK
KyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcCgpCit7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7Cisj
ZW5kaWYKK30KKworSVBDOjpTZW1hcGhvcmUmIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondh
a2VVcFNlbWFwaG9yZSgpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJuIG1fd2Fr
ZVVwU2VtYXBob3JlOworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCit9CisKK3ZvaWQg
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpCit7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKG1fcHJvY2Vzc2luZ1RocmVhZCkgeworICAgICAg
ICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gdGFzayA9IFt0aGlzXSgpIG11dGFibGUgeworICAgICAgICBmb3IgKDs7KSB7Cisg
ICAgICAgICAgICBwcm9jZXNzU3RyZWFtcygpOworICAgICAgICAgICAgaWYgKG1fc2hvdWxkUXVp
dCkgeworICAgICAgICAgICAgICAgIHByb2Nlc3NTdHJlYW1zKCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUud2Fp
dCgpOworICAgICAgICB9CisgICAgfTsKKyAgICBtX3Byb2Nlc3NpbmdUaHJlYWQgPSBUaHJlYWQ6
OmNyZWF0ZShtX25hbWUsIFdURk1vdmUodGFzayksIFRocmVhZFR5cGU6OkdyYXBoaWNzLCBUaHJl
YWQ6OlFPUzo6VXNlckludGVyYWN0aXZlKTsKKyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKCkKK3sKKyAgICBjb25zdGV4cHIgc2l6ZV90
IGRlZmF1bHRNZXNzYWdlTGltaXQgPSAxMDAwOworICAgIGJvb2wgaGFzTW9yZVRvUHJvY2VzcyA9
IGZhbHNlOworICAgIGRvIHsKKyAgICAgICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBm
dW5jdGlvbnM7CisgICAgICAgIEhhc2hTZXQ8UmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
Pj4gY29ubmVjdGlvbnM7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9sb2NrKTsKKyAgICAgICAgICAgIGZ1bmN0aW9ucy5zd2FwKG1fZnVuY3Rpb25zKTsK
KyAgICAgICAgICAgIGNvbm5lY3Rpb25zID0gbV9jb25uZWN0aW9uczsKKyAgICAgICAgfQorICAg
ICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogZnVuY3Rpb25zKQorICAgICAgICAgICAgV1RGTW92
ZShmdW5jdGlvbikoKTsKKworICAgICAgICBoYXNNb3JlVG9Qcm9jZXNzID0gZmFsc2U7CisgICAg
ICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IGNvbm5lY3Rpb25zKQorICAgICAgICAgICAgaGFz
TW9yZVRvUHJvY2VzcyB8PSBjb25uZWN0aW9uLT5kaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKGRlZmF1
bHRNZXNzYWdlTGltaXQpID09IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpIYXNNb3JlTWVz
c2FnZXM7CisgICAgfSB3aGlsZSAoaGFzTW9yZVRvUHJvY2Vzcyk7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xZjdiYTNmMzQwMjkwZjMwMjRjNWI4OWEwZWEzZjgzMDA5Y2Q4MjZjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Cisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisK
K25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlIGZpbmFs
IDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZShjb25zdCBjaGFyKik7CisgICAgflN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCBhZGRTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlJik7CisgICAgdm9pZCByZW1vdmVTdHJlYW1Db25uZWN0aW9uKFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlJik7CisKKyAgICB2b2lkIGRpc3BhdGNoKFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKTsKKworICAgIHZvaWQgd2FrZVVw
KCk7CisKKyAgICBTZW1hcGhvcmUmIHdha2VVcFNlbWFwaG9yZSgpOworcHJpdmF0ZToKKyAgICB2
b2lkIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQoKTsKKyAgICB2b2lkIHByb2Nlc3NTdHJlYW1zKCk7
CisKKyAgICBjb25zdCBjaGFyKiBjb25zdCBtX25hbWU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgU2VtYXBob3JlIG1fd2FrZVVwU2VtYXBob3JlOworI2VuZGlmCisgICAgUmVmUHRyPFRocmVh
ZD4gbV9wcm9jZXNzaW5nVGhyZWFkOworCisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9zaG91bGRR
dWl0IHsgZmFsc2UgfTsKKworICAgIExvY2sgbV9sb2NrOworICAgIERlcXVlPEZ1bmN0aW9uPHZv
aWQoKT4+IG1fZnVuY3Rpb25zOworICAgIEhhc2hTZXQ8UmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlPj4gbV9jb25uZWN0aW9uczsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFl
ZWM3ZWI4NzZjYzBmNzI4MTJiZGUyMzlkYzQxMGJkODIxYjdkYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCkBA
IC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCisKK25hbWVzcGFjZSBJUEMg
eworCitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVh
bSwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQorICAgIDogbV9jb25uZWN0
aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3dvcmtRdWV1ZSh3b3JrUXVldWUpCisgICAgLCBtX2J1
ZmZlcihXVEZNb3ZlKHN0cmVhbSkpCit7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNz
YWdlRmlsdGVyKCp0aGlzLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIG1fd29y
a1F1ZXVlLmFkZFN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOworfQorCit2b2lkIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSBy
ZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgbV9jb25uZWN0aW9u
LT5yZW1vdmVNZXNzYWdlRmlsdGVyKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAg
bV93b3JrUXVldWUucmVtb3ZlU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRpZFJlY2VpdmVNZXNzYWdlKENvbm5lY3Rpb24mLCBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mIG1lc3NhZ2UpCit7CisgICAgeworICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOworICAgICAgICBt
X291dE9mU3RyZWFtTWVzc2FnZXMuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAgIH0KKyAg
ICBtX3dvcmtRdWV1ZS53YWtlVXAoKTsKK30KKworT3B0aW9uYWw8U3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OlNwYW4+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUoKQor
eworICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkubG9hZChz
dGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICBpZiAocmVjZWl2ZXJMaW1pdCA9PSBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3Bh
bihtX3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0KTsKKyAgICBpZiAocmVzdWx0LnNpemUg
PCBtaW5pbXVtTWVzc2FnZVNpemUpIHsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNl
bmRlck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhyZWNlaXZlckxpbWl0LCBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6
bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAg
ICBBU1NFUlQoIShyZWNlaXZlckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVy
T2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKSk7CisgICAgICAgIHJlY2VpdmVyTGltaXQgPSBj
bGFtcGVkTGltaXQocmVjZWl2ZXJMaW1pdCk7CisgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFu
KG1fcmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworICAgIH0KKworICAgIGlmIChyZXN1
bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6cmVsZWFzZShzaXplX3QgcmVhZFNpemUpCit7CisgICAgQVNTRVJUKHJlYWRTaXplKTsK
KyAgICByZWFkU2l6ZSA9IHN0ZDo6bWF4KHJlYWRTaXplLCBtaW5pbXVtTWVzc2FnZVNpemUpOwor
ICAgIHNpemVfdCByZWNlaXZlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9yZWNl
aXZlck9mZnNldCkgKyByZWFkU2l6ZSk7CisgICAgc2l6ZV90IG9sZFJlY2VpdmVyT2Zmc2V0ID0g
c2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5leGNoYW5nZShyZWNlaXZlck9mZnNldCwgc3RkOjptZW1v
cnlfb3JkZXJfYWNxX3JlbCk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAvLyBJZiB0aGUg
c2VuZGVyIHdyb3RlIG92ZXIgcmVjZWl2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBzZW5kZXIgaXMg
d2FpdGluZy4KKyAgICBpZiAob2xkUmVjZWl2ZXJPZmZzZXQgIT0gbV9yZWNlaXZlck9mZnNldCkK
KyAgICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLnNpZ25hbCgpOworI2VuZGlm
CisKKyAgICBtX3JlY2VpdmVyT2Zmc2V0ID0gcmVjZWl2ZXJPZmZzZXQ7Cit9CisKK1N0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjphbGln
bmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgQVNTRVJUKG9mZnNl
dCA8IGRhdGFTaXplKCkpOworICAgIEFTU0VSVChsaW1pdCA8IGRhdGFTaXplKCkpOworICAgIHNp
emVfdCBhbGlnbmVkID0gYWxpZ25PZmZzZXQob2Zmc2V0KTsKKyAgICBzaXplX3QgcmVzdWx0U2l6
ZSA9IDA7CisgICAgaWYgKG9mZnNldCA8IGxpbWl0KSB7CisgICAgICAgIGlmIChvZmZzZXQgPD0g
YWxpZ25lZCAmJiBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6
ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfSBlbHNlIGlmIChvZmZzZXQgPiBsaW1pdCkgeworICAg
ICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgfHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAg
ICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0KKyAgICByZXR1cm4g
eyBkYXRhKCkgKyBhbGlnbmVkLCByZXN1bHRTaXplIH07Cit9CisKK3NpemVfdCBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7Cisg
ICAgaWYgKG9mZnNldCA8PSBsaW1pdCkKKyAgICAgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0Owor
ICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gb2Zmc2V0OworfQorCitzaXplX3QgU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0
Cit7CisgICAgQVNTRVJUKHVudHJ1c3RlZExpbWl0IDwgKGRhdGFTaXplKCkgLSAxKSk7CisgICAg
cmV0dXJuIHN0ZDo6bWluKHVudHJ1c3RlZExpbWl0LCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iM2U0Y2QyMzgzNjI5MmYxNmY0Yzk1M2Y1Y2RhMTU4OTNkODY0ZTVi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMjgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2lu
Y2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlRmlsdGVyLmgiCisjaW5jbHVkZSAi
TWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2lu
Y2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworY2xhc3Mg
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTsKKworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U+LCBwcm90ZWN0ZWQgTWVzc2FnZUZpbHRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UpOworcHVibGljOgorICAgIH5TdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZSgpIG92ZXJyaWRlID0gZGVmYXVsdDsKKworICAgIENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKworICAgIGVudW0gRGlzcGF0
Y2hSZXN1bHQgOiBib29sIHsKKyAgICAgICAgSGFzTm9NZXNzYWdlcywKKyAgICAgICAgSGFzTW9y
ZU1lc3NhZ2VzCisgICAgfTsKKyAgICB2aXJ0dWFsIERpc3BhdGNoUmVzdWx0IGRpc3BhdGNoU3Ry
ZWFtTWVzc2FnZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkgPSAwOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHZvaWQgc2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5j
UmVxdWVzdElELCBBcmd1bWVudHMmJi4uLik7CisKK3Byb3RlY3RlZDoKKyAgICBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZShJUEM6OkNvbm5lY3Rpb24mLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
JiYsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmKTsKKworICAgIHZvaWQgc3RhcnRSZWNlaXZp
bmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAg
ICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKTsKKworICAgIC8vIE1lc3NhZ2VGaWx0ZXIgb3ZlcnJpZGVzLgorICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiYgbWVzc2FnZSkgZmluYWw7CisKKyAgICBzdHJ1Y3QgU3BhbiB7CisgICAgICAgIHVpbnQ4X3Qq
IGRhdGE7CisgICAgICAgIHNpemVfdCBzaXplOworICAgIH07CisgICAgT3B0aW9uYWw8U3Bhbj4g
dHJ5QXF1aXJlKCk7CisKKyAgICB2b2lkIHJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKTsKKyAgICBz
dGF0aWMgY29uc3RleHByIHNpemVfdCBtaW5pbXVtTWVzc2FnZVNpemUgPSBTdHJlYW1Db25uZWN0
aW9uRW5jb2Rlcjo6bWluaW11bU1lc3NhZ2VTaXplOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWVzc2FnZUFs
aWdubWVudDsKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1p
dCk7CisgICAgc2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAgICBz
aXplX3QgY2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7CisgICAgc2l6
ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIud3Jh
cE9mZnNldChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9m
ZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRT
ZW5kZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQorICAgIEF0
b21pYzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnJl
Y2VpdmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZGF0YVNpemUoKTsgfQorCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOworICAgIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIG1fd29ya1F1ZXVlOworCisgICAg
c2l6ZV90IG1fcmVjZWl2ZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciBtX2J1ZmZlcjsKKworICAgIExvY2sgbV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jazsKKyAgICBE
ZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IG1fb3V0T2ZTdHJlYW1NZXNzYWdlczsKKwor
ICAgIGZyaWVuZCBjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOworfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6c2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLiBh
cmd1bWVudHMpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kaW5nIHRvIGJ1ZmZlci4K
KyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oSVBDOjpNZXNzYWdl
TmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CisgICAgKCplbmNvZGVyIDw8
IC4uLiA8PCBhcmd1bWVudHMpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShXVEZN
b3ZlKGVuY29kZXIpKTsKK30KKworLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbiByZXByZXNlbnRz
IHRoZSBjb25uZWN0aW9uIGJldHdlZW4gc3RyZWFtIHNlbmRlciBhbmQgcmVjZWl2ZXIsIGFzIHVz
ZWQgYnkgdGhlIHJlY2VpdmVyLgorLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbjoKKy8vICAqIEhv
bGRzIHRoZSBtZXNzYWdlcyB0b3dhcmRzIHRoZSByZWNlaXZlci4KKy8vICAqIFNlbmRzIHRoZSBy
ZXBsaWVzIGJhY2sgdG8gdGhlIHNlbmRlciB2aWEgdGhlIHN0cmVhbSBvciBub3JtYWwgQ29ubmVj
dGlvbiBmYWxsYmFjay4KKy8vCisvLyBSZWNlaXZlciB0ZW1wbGF0ZSBjb250cmFjdDoKKy8vICAg
dm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYs
IERlY29kZXImKTsKKy8vCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK2NsYXNzIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gY3Jl
YXRlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJl
YW1CdWZmZXIsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oY29ubmVj
dGlvbiwgV1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpKTsKKyAgICB9CisgICAgflN0
cmVhbVNlcnZlckNvbm5lY3Rpb24oKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHN0YXJ0
UmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOworICAgIC8vIFN0b3BzIHRoZSBtZXNzYWdlIHJlY2VpcHQuIE5vdGU6IGFscmVh
ZHkgcmVjZWl2ZWQgbWVzc2FnZXMgbWlnaHQgc3RpbGwgYmUgZGVsaXZlcmVkLgorICAgIHZvaWQg
c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCk7CisKKyAgICAvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSBvdmVycmlkZXMuCisgICAg
RGlzcGF0Y2hSZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0
KSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICAgICAgOiBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZShjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtR
dWV1ZSkKKyAgICB7CisgICAgfQorICAgIGJvb2wgcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9u
SUQoRGVjb2RlciYmLCBSZWZQdHI8UmVjZWl2ZXI+JiBjdXJyZW50UmVjZWl2ZXIpOworICAgIGJv
b2wgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiwgUmVjZWl2ZXImKTsKKyAgICBib29s
IGRpc3BhdGNoT3V0T2ZTdHJlYW1NZXNzYWdlKERlY29kZXImJik7CisgICAgTG9jayBtX3JlY2Vp
dmVyc0xvY2s7CisgICAgdXNpbmcgUmVjZWl2ZXJzTWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8dWlu
dDhfdCwgdWludDY0X3Q+LCBSZWY8UmVjZWl2ZXI+PjsKKyAgICBSZWNlaXZlcnNNYXAgbV9yZWNl
aXZlcnM7CisKKyAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEID0gMDsKK307CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
PFJlY2VpdmVyPjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYgcmVjZWl2ZXIsIFJl
Y2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAg
eworICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KHJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9yZWNlaXZlcnMuY29u
dGFpbnMoa2V5KSk7CisgICAgICAgIG1fcmVjZWl2ZXJzLmFkZChrZXksIG1ha2VSZWYocmVjZWl2
ZXIpKTsKKyAgICB9CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2
aW5nTWVzc2FnZXNJbXBsKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2Vp
dmVyPjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6
OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2Vp
dmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9y
ZWNlaXZlcnNMb2NrKTsKKyAgICBBU1NFUlQobV9yZWNlaXZlcnMuY29udGFpbnMoa2V5KSk7Cisg
ICAgbV9yZWNlaXZlcnMucmVtb3ZlKGtleSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2Vp
dmVyPgorU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OkRpc3BhdGNoUmVzdWx0IFN0cmVhbVNl
cnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBt
ZXNzYWdlTGltaXQpCit7CisgICAgUmVmUHRyPFJlY2VpdmVyPiBjdXJyZW50UmVjZWl2ZXI7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBXVEY6OmlzVmFsaWQoUmVjZWl2ZXJOYW1lKS4KKyAgICB1
aW50OF90IGN1cnJlbnRSZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihSZWNlaXZl
ck5hbWU6OkludmFsaWQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlTGlt
aXQ7ICsraSkgeworICAgICAgICBhdXRvIHNwYW4gPSB0cnlBcXVpcmUoKTsKKyAgICAgICAgaWYg
KCFzcGFuKQorICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2Vz
OworICAgICAgICBJUEM6OkRlY29kZXIgZGVjb2RlciB7IHNwYW4tPmRhdGEsIHNwYW4tPnNpemUs
IG1fY3VycmVudERlc3RpbmF0aW9uSUQgfTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQo
KSkgeworICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIERpc3Bh
dGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICB9CisgICAgICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQpIHsK
KyAgICAgICAgICAgIGlmICghcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoV1RGTW92ZShk
ZWNvZGVyKSwgY3VycmVudFJlY2VpdmVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0
Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpQcm9j
ZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKSB7CisgICAgICAgICAgICBpZiAoIWRpc3BhdGNoT3V0T2ZT
dHJlYW1NZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpKQorICAgICAgICAgICAgICAgIHJldHVybiBE
aXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIGlmIChjdXJyZW50UmVjZWl2ZXJOYW1lICE9IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkgeworICAgICAgICAgICAgY3Vy
cmVudFJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKTsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFjdXJyZW50UmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIGF1
dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4oY3VycmVudFJlY2Vp
dmVyTmFtZSksIG1fY3VycmVudERlc3RpbmF0aW9uSUQpOworICAgICAgICAgICAgaWYgKCFSZWNl
aXZlcnNNYXA6OmlzVmFsaWRLZXkoa2V5KSkgeworICAgICAgICAgICAgICAgIG1fY29ubmVjdGlv
bi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVj
ZWl2ZXJzTG9jayk7CisgICAgICAgICAgICBjdXJyZW50UmVjZWl2ZXIgPSBtX3JlY2VpdmVycy5n
ZXQoa2V5KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNlaXZlcikgeworICAg
ICAgICAgICAgLy8gVmFsaWQgc2NlbmFyaW8gaXMgd2hlbiByZWNlaXZlciBoYXMgYmVlbiByZW1v
dmVkLCBidXQgbWVzc2FnZXMKKyAgICAgICAgICAgIC8vIGZvciBpdCBleGlzdCBpbiB0aGUgYnVm
ZmVyLgorICAgICAgICAgICAgLy8gRklYTUU6IFNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgcmVjZWl2
ZXIsIHdlIGRvbid0IGtub3cgaG93IHRvIGRlY29kZSB0aGUgbWVzc2FnZS4KKyAgICAgICAgICAg
IC8vIFRoaXMgbWVhbnMgd2UgbXVzdCB0aW1lb3V0IGV2ZXJ5IHJlY2VpdmVyIGluIHRoZSBzdHJl
YW0gY29ubmVjdGlvbi4KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICB9Cisg
ICAgICAgIGlmICghZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKFdURk1vdmUoZGVjb2RlciksICpjdXJy
ZW50UmVjZWl2ZXIpKQorICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01l
c3NhZ2VzOworICAgIH0KKyAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc01vcmVNZXNzYWdl
czsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29sIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9jZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRChEZWNvZGVy
JiYgZGVjb2RlciwgUmVmUHRyPFJlY2VpdmVyPiYgY3VycmVudFJlY2VpdmVyKQoreworICAgIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVzdGlu
YXRpb25JRCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIGlmIChtX2N1cnJlbnREZXN0aW5hdGlvbklEICE9IGRlc3RpbmF0aW9uSUQp
IHsKKyAgICAgICAgbV9jdXJyZW50RGVzdGluYXRpb25JRCA9IGRlc3RpbmF0aW9uSUQ7CisgICAg
ICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7CisgICAgfQorICAgIHJlbGVhc2UoZGVjb2Rl
ci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2Vp
dmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiBkZWNvZGVyLCBSZWNlaXZlciYg
cmVjZWl2ZXIpCit7CisgICAgcmVjZWl2ZXIuZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKnRoaXMs
IGRlY29kZXIpOworICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgbV9jb25u
ZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJlbGVhc2UoZGVjb2Rl
ci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2Vp
dmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmIGRlY29kZXIpCit7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2U7CisgICAgeworICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOworICAgICAgICBp
ZiAobV9vdXRPZlN0cmVhbU1lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgbWVzc2FnZSA9IG1fb3V0T2ZTdHJlYW1NZXNzYWdlcy50YWtlRmlyc3Qo
KTsKKyAgICB9CisgICAgaWYgKCFtZXNzYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBSZWZQdHI8UmVjZWl2ZXI+IHJlY2VpdmVyOworICAgIHsKKyAgICAgICAgYXV0byBrZXkgPSBz
dGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpLCBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpOworICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgIHJlY2VpdmVyID0gbV9yZWNl
aXZlcnMuZ2V0KGtleSk7CisgICAgfQorICAgIGlmIChyZWNlaXZlcikgeworICAgICAgICByZWNl
aXZlci0+ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKnRoaXMsICptZXNzYWdlKTsKKyAgICAgICAg
aWYgKCFtZXNzYWdlLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlz
cGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gSWYgcmVj
ZWl2ZXIgZG9lcyBub3QgZXhpc3QgaWYgaXQgaGFzIGJlZW4gcmVtb3ZlZCBidXQgbWVzc2FnZXMg
YXJlIHN0aWxsIHBlbmRpbmcgdG8gYmUKKyAgICAvLyBwcm9jZXNzZWQuIEl0J3Mgb2sgdG8gc2tp
cCBzdWNoIG1lc3NhZ2VzLgorICAgIC8vIEZJWE1FOiBOb3RlLCBjb3JyZXNwb25kaW5nIHNraXAg
aXMgbm90IHBvc3NpYmxlIGF0IHRoZSBtb21lbnQgZm9yIHN0cmVhbSBtZXNzYWdlcy4KKyAgICBy
ZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBvc2l0aW9uKCkpOworICAgIHJldHVybiB0cnVl
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9N
YWNoUG9ydC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaApp
bmRleCA3ODU0ZmE4ZjE4NjhmYjhlNDU2MjI4OWZkZGY2ZjI3OTVhZjJkOTBkLi44M2Q5OWYwY2Jj
OGZlMDQ4MjBiNDc4M2M5YzA3NmFiNTdhM2VhYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL2NvY29hL01hY2hQb3J0LmgKQEAgLTI1LDkgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgot
I2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJ
UEMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA4N2I3
MWI1OTA0MThjM2E0ODk2YTk1MWM0ZDViZDIzNjdlMzRhMmJjLi40YzljYTAwMGQ0NmQ5NjAwYjNm
OTFlYmNlN2I4MjNlNjYxMTcxNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKQEAgLTI0LDggKzI0LDkgQEAgaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgcmUK
IGltcG9ydCBzeXMKIAorZnJvbSBtb2RlbCBpbXBvcnQgTWVzc2FnZVJlY2VpdmVyLCBNZXNzYWdl
CiBmcm9tIHdlYmtpdCBpbXBvcnQgcGFyc2VyCi1mcm9tIHdlYmtpdC5tb2RlbCBpbXBvcnQgQlVJ
TFRJTl9BVFRSSUJVVEUsIEFTWU5DX0FUVFJJQlVURSwgU1lOQ0hST05PVVNfQVRUUklCVVRFCitm
cm9tIHdlYmtpdC5tb2RlbCBpbXBvcnQgQlVJTFRJTl9BVFRSSUJVVEUsIEFTWU5DX0FUVFJJQlVU
RSwgU1lOQ0hST05PVVNfQVRUUklCVVRFLCBTVFJFQU1fQVRUUklCVVRFLCBXQU5UU19DT05ORUNU
SU9OX0FUVFJJQlVURQogCiBfbGljZW5zZV9oZWFkZXIgPSAiIiIvKgogICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNTMsMTMgKzU0
LDExIEBAIF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCiAKICIiIgogCi1XQU5UU19DT05ORUNUSU9O
X0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24nCiBXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FU
VFJJQlVURSA9ICdXYW50c0Rpc3BhdGNoTWVzc2FnZScKIFdBTlRTX0FTWU5DX0RJU1BBVENIX01F
U1NBR0VfQVRUUklCVVRFID0gJ1dhbnRzQXN5bmNEaXNwYXRjaE1lc3NhZ2UnCiBMRUdBQ1lfUkVD
RUlWRVJfQVRUUklCVVRFID0gJ0xlZ2FjeVJlY2VpdmVyJwogTk9UX1JFRkNPVU5URURfUkVDRUlW
RVJfQVRUUklCVVRFID0gJ05vdFJlZkNvdW50ZWQnCiAKLQogZGVmIHJlY2VpdmVyX2VudW1lcmF0
b3Jfb3JkZXJfa2V5KHJlY2VpdmVyX25hbWUpOgogICAgIGlmIHJlY2VpdmVyX25hbWUgPT0gJ0lQ
Qyc6CiAgICAgICAgIHJldHVybiAxCkBAIC0yMDYsNyArMjA1LDcgQEAgZGVmIG1lc3NhZ2VfdG9f
c3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICB1c2luZyBBc3luY1JlcGx5ID0gJXNBc3luY1JlcGx5O1xuJyAlIG1lc3Nh
Z2UubmFtZSkKICAgICAgICAgZWxpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNf
QVRUUklCVVRFKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBEZWxheWVk
UmVwbHkgPSAlc0RlbGF5ZWRSZXBseTtcbicgJSBtZXNzYWdlLm5hbWUpCi0gICAgICAgIGlmIG1l
c3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFz
X2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICBpZiAobWVzc2FnZS5oYXNfYXR0
cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFT
WU5DX0FUVFJJQlVURSkpIGFuZCBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRU
UklCVVRFKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBzZW5k
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYnKQogICAg
ICAgICAgICAgaWYgbGVuKHNlbmRfcGFyYW1ldGVycyk6CiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnLCAlcycgJSBjb21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycykKQEAgLTI1NCw2
ICsyNTMsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgog
ICAgIHJldHVybiBmcm96ZW5zZXQoWwogICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNlJywKICAg
ICAgICAgJ0lQQzo6Rm9udFJlZmVyZW5jZScsCisgICAgICAgICdJUEM6OlNlbWFwaG9yZScsCiAg
ICAgICAgICdNYWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdT
dHJpbmcnLApAQCAtNTYzLDEwICs1NjMsMTUgQEAgZGVmIHN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQo
cmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgICAgICBkaXNwYXRjaF9mdW5jdGlvbiArPSAnQXN5bmMn
CiAKICAgICB3YW50c19jb25uZWN0aW9uID0gbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9O
T1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFdBTlRTX0NPTk5FQ1RJT05f
QVRUUklCVVRFKQorICAgIG1heWJlX3JlcGx5X2VuY29kZXIgPSAiLCAqcmVwbHlFbmNvZGVyIgor
ICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CisgICAgICAg
IG1heWJlX3JlcGx5X2VuY29kZXIgPSAnJworICAgIGVsaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRl
KFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FU
VFJJQlVURSk6CisgICAgICAgIG1heWJlX3JlcGx5X2VuY29kZXIgPSAnLCByZXBseUVuY29kZXIn
CiAKICAgICByZXN1bHQgPSBbXQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUoKSkge1xuJyAlIChyZWNlaXZl
ci5uYW1lLCBtZXNzYWdlLm5hbWUpKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgSVBDOjol
czxNZXNzYWdlczo6JXM6OiVzPiglc2RlY29kZXIsICVzcmVwbHlFbmNvZGVyLCB0aGlzLCAmJXMp
O1xuJyAlIChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAn
Y29ubmVjdGlvbiwgJyBpZiB3YW50c19jb25uZWN0aW9uIGVsc2UgJycsICcnIGlmIG1lc3NhZ2Uu
aGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJp
YnV0ZShBU1lOQ19BVFRSSUJVVEUpIGVsc2UgJyonLCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2VpdmVy
LCBtZXNzYWdlKSkpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBJUEM6OiVzPE1lc3NhZ2Vz
Ojolczo6JXM+KCVzZGVjb2RlciVzLCB0aGlzLCAmJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlv
biwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnY29ubmVjdGlvbiwgJyBpZiB3YW50c19j
b25uZWN0aW9uIGVsc2UgJycsIG1heWJlX3JlcGx5X2VuY29kZXIsIGhhbmRsZXJfZnVuY3Rpb24o
cmVjZWl2ZXIsIG1lc3NhZ2UpKSkKICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybjtc
bicpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCiAgICAgcmV0dXJuIHN1cnJvdW5kX2lu
X2NvbmRpdGlvbignJy5qb2luKHJlc3VsdCksIG1lc3NhZ2UuY29uZGl0aW9uKQpAQCAtODYyLDcg
Kzg2Nyw3IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAg
ICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZSBhbmQgKG1lc3NhZ2UuaGFzX2F0
dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShB
U1lOQ19BVFRSSUJVVEUpKToKICAgICAgICAgICAgIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXMu
YXBwZW5kKG1lc3NhZ2UpCiAKLSAgICBpZiBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzOgorICAg
IGlmIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXMgYW5kIG5vdCByZWNlaXZlci5oYXNfYXR0cmli
dXRlKFNUUkVBTV9BVFRSSUJVVEUpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCduYW1lc3BhY2Ug
TWVzc2FnZXMge1xuXG5uYW1lc3BhY2UgJXMge1xuXG4nICUgcmVjZWl2ZXIubmFtZSkKIAogICAg
ICAgICBmb3IgbWVzc2FnZSBpbiBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzOgpAQCAtOTEwLDI1
ICs5MTUsNDQgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICBhc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkKIAot
ICAgIGlmIGFzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElT
UEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNf
QVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgotICAgICAgICByZXN1bHQuYXBwZW5k
KCd2b2lkICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5u
YW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkg
ZWxzZSAnJykpCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRF
KToKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3Nh
Z2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lKSkKICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgne1xuJykKLSAgICAgICAgaWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNP
VU5URURfUkVDRUlWRVJfQVRUUklCVVRFKToKKyAgICAgICAgYXNzZXJ0KHJlY2VpdmVyLmhhc19h
dHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKSkKKyAgICAgICAgYXNz
ZXJ0KG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRU
UklCVVRFKSkKKyAgICAgICAgYXNzZXJ0KG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRT
X0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSkKKworICAgICAgICByZXN1bHQgKz0g
W2FzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3IgbWVzc2FnZSBp
biBhc3luY19tZXNzYWdlc10KKyAgICAgICAgcmVzdWx0ICs9IFtzeW5jX21lc3NhZ2Vfc3RhdGVt
ZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3IgbWVzc2FnZSBpbiBzeW5jX21lc3NhZ2VzXQorCisg
ICAgICAgIGlmIChyZWNlaXZlci5zdXBlcmNsYXNzKToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICAlczo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xhc3MpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTtcbicpCisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pO1xuJykKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCisgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCisgICAgZWxpZiBhc3luY19tZXNzYWdlcyBvciByZWNl
aXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSBvciBy
ZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklC
VVRFKToKKyAgICAgICAgcmVjZWl2ZV92YXJpYW50ID0gcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZl
ci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIu
bmFtZSwgcmVjZWl2ZV92YXJpYW50KSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKKyAg
ICAgICAgaWYgbm90IChyZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJ
VkVSX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRF
KSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyk7XG4nKQogCiAgICAgICAgIHJlc3VsdCArPSBbYXN5bmNfbWVzc2FnZV9z
dGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIGFzeW5jX21lc3NhZ2Vz
XQorCiAgICAgICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVT
U0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElT
UEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IGlmIChkaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlcikpXG4nKQogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQogICAgICAgICBpZiAocmVjZWl2
ZXIuc3VwZXJjbGFzcyk6Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJXM6OmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNs
YXNzKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZSVzTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcywgcmVj
ZWl2ZV92YXJpYW50KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTtcbicpCiAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCd9XG4nKQogCi0gICAgaWYgc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmli
dXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKKyAgICBpZiBub3QgcmVjZWl2
ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKSBhbmQgKHN5bmNfbWVzc2FnZXMgb3Ig
cmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkp
OgogICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3Zv
aWQgJXM6OmRpZFJlY2VpdmVTeW5jJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYg
cmVwbHlFbmNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJlY2Vp
dmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQppbmRleCBlNGRlZTdlYjBhZjcwOGZkNTA3ZjRj
OTZmYWU0ZTI1ZTE2NTZjMDhiLi40NDQwOWI4ODdkZjU3Mjc1MzFjYWY4MjcwZTU1YWJhYjQ5NzQx
NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3Vu
aXR0ZXN0LnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5p
dHRlc3QucHkKQEAgLTM5LDcgKzM5LDcgQEAgdGVzdHNfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2lu
KG1vZHVsZV9kaXJlY3RvcnksICd0ZXN0cycpCiAKIHJlc2V0X3Jlc3VsdHMgPSBGYWxzZQogCi1f
dGVzdF9yZWNlaXZlcl9uYW1lcyA9IFsnVGVzdFdpdGhTdXBlcmNsYXNzJywgJ1Rlc3RXaXRoTGVn
YWN5UmVjZWl2ZXInLCAnVGVzdFdpdGhvdXRBdHRyaWJ1dGVzJywgJ1Rlc3RXaXRoSWZNZXNzYWdl
JywgJ1Rlc3RXaXRoU2VtYXBob3JlJ10KK190ZXN0X3JlY2VpdmVyX25hbWVzID0gWydUZXN0V2l0
aFN1cGVyY2xhc3MnLCAnVGVzdFdpdGhMZWdhY3lSZWNlaXZlcicsICdUZXN0V2l0aG91dEF0dHJp
YnV0ZXMnLCAnVGVzdFdpdGhJZk1lc3NhZ2UnLCAnVGVzdFdpdGhTZW1hcGhvcmUnLCAnVGVzdFdp
dGhTdHJlYW0nLCAnVGVzdFdpdGhTdHJlYW1CdWZmZXInXQogCiAKIGRlZiByZWNlaXZlcl9oZWFk
ZXJfZmlsZV9uYW1lKHJlY2VpdmVyX25hbWUpOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tb2RlbC5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9k
ZWwucHkKaW5kZXggYWMzODY4OTA1Y2ZjZDMwYThjNjM2ZjNmZTA0N2E3NGE0YTMxNGE4My4uZmY1
MzEyZTk3YWMwMTAwY2ZhOGJjOTY0ODFlN2ZhNTMyYTJjZmMyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21vZGVsLnB5CkBAIC0yNyw2ICsyNyw4IEBAIGZyb20gY29sbGVjdGlvbnMgaW1w
b3J0IENvdW50ZXIsIGRlZmF1bHRkaWN0CiBCVUlMVElOX0FUVFJJQlVURSA9ICJCdWlsdGluIgog
QVNZTkNfQVRUUklCVVRFID0gIkFzeW5jIgogU1lOQ0hST05PVVNfQVRUUklCVVRFID0gJ1N5bmNo
cm9ub3VzJworU1RSRUFNX0FUVFJJQlVURSA9ICJTdHJlYW0iCitXQU5UU19DT05ORUNUSU9OX0FU
VFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24nCiAKIGNsYXNzIE1lc3NhZ2VSZWNlaXZlcihvYmpl
Y3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdXBlcmNsYXNzLCBhdHRyaWJ1dGVz
LCBtZXNzYWdlcywgY29uZGl0aW9uKToKQEAgLTcyLDcgKzc0LDkgQEAgaXBjX3JlY2VpdmVyID0g
TWVzc2FnZVJlY2VpdmVyKG5hbWU9IklQQyIsIHN1cGVyY2xhc3M9Tm9uZSwgYXR0cmlidXRlcz1b
QlVJTFRJTl8KICAgICBNZXNzYWdlKCdXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZycsIFtd
LCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVU
RV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdTeW5jTWVzc2FnZVJlcGx5JywgW10s
IFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAg
ICBNZXNzYWdlKCdJbml0aWFsaXplQ29ubmVjdGlvbicsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJ
TFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249IlBMQVRGT1JNKENPQ09BKSIpLAotICAgIE1lc3Nh
Z2UoJ0xlZ2FjeVNlc3Npb25TdGF0ZScsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRS
SUJVVEVdLCBjb25kaXRpb249Tm9uZSkKKyAgICBNZXNzYWdlKCdMZWdhY3lTZXNzaW9uU3RhdGUn
LCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUp
LAorICAgIE1lc3NhZ2UoJ1NldFN0cmVhbURlc3RpbmF0aW9uSUQnLCBbXSwgW10sIGF0dHJpYnV0
ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2UoJ1By
b2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRU
UklCVVRFXSwgY29uZGl0aW9uPU5vbmUpCiBdLCBjb25kaXRpb249Tm9uZSkKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQppbmRleCBiMWRkNzk4ODY1YTUx
NTQ5ODIwYjcwZGJkYjYxYWNkNmVhY2JjMWU4Li5iMjk1YjhjNzhkYzJmYWQ1YmUxYjY5MTY3ZjVi
NTFhMmMwYjEyZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL01ha2VmaWxlCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFr
ZWZpbGUKQEAgLTEsMiArMSwyIEBACiBhbGw6Ci0JcHl0aG9uIC4uLy4uL2dlbmVyYXRlLW1lc3Nh
Z2UtcmVjZWl2ZXIucHkgLiBUZXN0V2l0aFN1cGVyY2xhc3MgVGVzdFdpdGhMZWdhY3lSZWNlaXZl
ciBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgVGVzdFdpdGhJZk1lc3NhZ2UgVGVzdFdpdGhTZW1hcGhv
cmUKKwlweXRob24gLi4vLi4vZ2VuZXJhdGUtbWVzc2FnZS1yZWNlaXZlci5weSAuIFRlc3RXaXRo
U3VwZXJjbGFzcyBUZXN0V2l0aExlZ2FjeVJlY2VpdmVyIFRlc3RXaXRob3V0QXR0cmlidXRlcyBU
ZXN0V2l0aElmTWVzc2FnZSBUZXN0V2l0aFNlbWFwaG9yZSBUZXN0V2l0aFN0cmVhbSBUZXN0V2l0
aFN0cmVhbUJ1ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9NZXNzYWdlTmFtZXMuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9NZXNzYWdlTmFtZXMuY3BwCmluZGV4IDRjNmVjMmU2Nzk0YzUxZWYyZGRhODNmYzYzYjY2Mzkw
ZDA2ODZiMDIuLjZkMWJmNWYxZDJjYzZhZGQ4YjEyZDU1YjZiODI3MzkwNDAzNDE2ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5j
cHAKQEAgLTEzMCw2ICsxMzAsMTAgQEAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5h
bWUgbmFtZSkKICAgICAgICAgcmV0dXJuICJJbml0aWFsaXplQ29ubmVjdGlvbiI7CiAgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOgogICAgICAgICByZXR1cm4gIkxlZ2Fj
eVNlc3Npb25TdGF0ZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFt
TWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlIjsKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklEOgorICAgICAgICByZXR1
cm4gIlNldFN0cmVhbURlc3RpbmF0aW9uSUQiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNN
ZXNzYWdlUmVwbHk6CiAgICAgICAgIHJldHVybiAiU3luY01lc3NhZ2VSZXBseSI7CiAgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseToK
QEAgLTIxNyw2ICsyMjEsOCBAQCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1l
IG1lc3NhZ2VOYW1lKQogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0aG91dEF0
dHJpYnV0ZXM7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246CiAg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOgorICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
U2V0U3RyZWFtRGVzdGluYXRpb25JRDoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2Fn
ZVJlcGx5OgogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpJUEM7CiAgICAgY2FzZSBNZXNz
YWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseToKQEAgLTM5
MCw2ICszOTYsMTAgQEAgYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2Fn
ZU5hbWUpCiAjZW5kaWYKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6
TGVnYWN5U2Vzc2lvblN0YXRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5h
bWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKaW5kZXggNTc3NjEy
MTJmZGQyOWNmMWUwOWY3ZWIwMzcwMjc2ODZmMWQ0OWE3My4uYzNlOTcwNTEyMTk4YjIyOTI4ODhi
YjhiZmIwZDhkNzU0MGU2MmMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCkBAIC05MCw2ICs5MCw4IEBAIGVudW0gY2xhc3MgTWVz
c2FnZU5hbWUgOiB1aW50MTZfdCB7CiAgICAgLCBUZXN0V2l0aG91dEF0dHJpYnV0ZXNfVG91Y2hF
dmVudAogICAgICwgSW5pdGlhbGl6ZUNvbm5lY3Rpb24KICAgICAsIExlZ2FjeVNlc3Npb25TdGF0
ZQorICAgICwgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZQorICAgICwgU2V0U3RyZWFtRGVzdGlu
YXRpb25JRAogICAgICwgU3luY01lc3NhZ2VSZXBseQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNz
X1Rlc3RBc3luY01lc3NhZ2VSZXBseQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3lu
Y01lc3NhZ2VXaXRoQ29ubmVjdGlvblJlcGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZDBmNTI4YzY5Y2RlZmRkYTljNDg2NzkxMzhjNjM4YjhhYzBjYjMyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0
cmVhbS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyMgVGVzdHMgU3RyZWFtIHJlY2VpdmVyIGF0dHJpYnV0ZS4KK21l
c3NhZ2VzIC0+IFRlc3RXaXRoU3RyZWFtIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKKyAgICB2b2lk
IFNlbmRTdHJpbmcoU3RyaW5nIHVybCkKKyAgICB2b2lkIFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQo
U3RyaW5nIHVybCkgLT4gKGludDY0X3QgcmV0dXJuKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlci5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZm
ZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE3MGFjODlhMjVmMDM5MjE5ZmU0MTgxMDViMmMx
ZDA0YWUwYzdlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNiBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRlc3RzIFN0cmVh
bSByZWNlaXZlciBhdHRyaWJ1dGUuCittZXNzYWdlcyAtPiBUZXN0V2l0aFN0cmVhbUJ1ZmZlciAg
eworICAgIHZvaWQgU2VuZFN0cmVhbUJ1ZmZlcihJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIg
c3RyZWFtKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jOWM5MjQwYTRlYjFhYjU1NzQwOTYwMjI5MWRjMTI3MzE5ODdmMDU0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAq
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0V2l0
aFN0cmVhbUJ1ZmZlci5oIgorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRs
ZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisjaW5jbHVk
ZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kwordm9pZCBUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI6
Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRo
U3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhT
dHJlYW1CdWZmZXI6OnNlbmRTdHJlYW1CdWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0
cmVhbUJ1ZmZlck1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTI0ZWJkZDIwMGYz
MzkwNDc3ZGZhZjdjZDg1NzE5MWJkNTNiMjg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgK
QEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdl
c1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXI7Cit9CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdp
dGhTdHJlYW1CdWZmZXIgeworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6VGVzdFdp
dGhTdHJlYW1CdWZmZXI7Cit9CisKK2NsYXNzIFNlbmRTdHJlYW1CdWZmZXIgeworcHVibGljOgor
ICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZl
cjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGlj
aXQgU2VuZFN0cmVhbUJ1ZmZlcihjb25zdCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIHN0
cmVhbSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhzdHJlYW0pCisgICAgeworICAgIH0KKworICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIKK30gLy8gbmFt
ZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmggYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBs
aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODdmYTJhZDdkNTA2MzAwZjNjY2IzOTBmMTk3MjU5ZDkwZTY5M2Yz
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMuaApAQCAtMCwwICsxLDM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICog
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMu
aCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7Citu
YW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIgeworCisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
aXRoU3RyZWFtQnVmZmVyCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNl
aXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtTWVzc2FnZVJlY2VpdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mzk4ODU1YWQ1NmU5NTE5OTdjOWQy
YWIzZjg4ODA5NGM4ODkyMzI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUZXN0V2l0aFN0cmVhbS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUg
IlRlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgVGVzdFdpdGhTdHJlYW06OmRpZFJlY2Vp
dmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6bmFtZSgpKSB7Cisg
ICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRT
dHJpbmc+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6Om5hbWUoKSkgewor
ICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5k
U3RyaW5nU3luY2hyb25pemVkPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRT
dHJpbmdTeW5jaHJvbml6ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFVOVVNFRF9Q
QVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2Vz
LmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVz
c2FnZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MGJmZWJhYjIzNzJjMWY2NjA1YzU1ODk0NTkzOGJmMWU0ZTdh
YWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAi
VGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVz
dFdpdGhTdHJlYW0geworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VS
ZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6VGVzdFdpdGhT
dHJlYW07Cit9CisKK2NsYXNzIFNlbmRTdHJpbmcgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3Vt
ZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNz
YWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1f
U2VuZFN0cmluZzsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisg
ICAgZXhwbGljaXQgU2VuZFN0cmluZyhjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2Fy
Z3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1l
bnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgU2VuZFN0
cmluZ1N5bmNocm9uaXplZCB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0
dXBsZTxjb25zdCBTdHJpbmcmPjsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUo
KSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3lu
Y2hyb25pemVkOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAg
IHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxpbnQ2NF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1
bWVudHMgPSBzdGQ6OnR1cGxlPGludDY0X3Q+OworICAgIGV4cGxpY2l0IFNlbmRTdHJpbmdTeW5j
aHJvbml6ZWQoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQor
ICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3Ry
ZWFtCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVw
bGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIyYzVhMDc4ZGUwMWVjMTQzMGY4OTRmMjBjYjljMmY5MTU1ZTdj
YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICog
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNw
YWNlIFRlc3RXaXRoU3RyZWFtIHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbQor
fSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDZkNGVhNTM0OGM3ZGFlZjc1
MTAzODkwYjUwOWMwNzIwOTkzMWEzMTQuLmFiZDQzZjM4ZmU2OWUyYzc5OGFmNTYyMjA2YWJjMDk4
MDk5NGIzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTQwLDYgKzE0MCw3IEBAIFBsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVycy5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5jcHAg
QG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9y
bS9JUEMvRGVjb2Rlci5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvRGVzdGluYXRpb25NZXNz
YWdlRmlsdGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9FbmNvZGVyLmNwcCBAbm8tdW5p
ZnkKIFBsYXRmb3JtL0lQQy9JUENTZW1hcGhvcmUuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBD
L0pTSVBDQmluZGluZy5jcHAgQG5vLXVuaWZ5CkBAIC0xNDcsNiArMTQ4LDEwIEBAIFBsYXRmb3Jt
L0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL01lc3Nh
Z2VTZW5kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
IEBuby11bmlmeQogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIEBu
by11bmlmeQorUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwIEBuby11bmlm
eQorUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIEBuby11bmlmeQorUGxh
dGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwIEBuby11bmlmeQorUGxhdGZv
cm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBD
L1N0cmluZ1JlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CiAKIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCmluZGV4IGMzMzA3ODI1YjIwMDg2ZGVkNGM4NmM2
NDg4Y2U1ZGQ1N2VjMGMzNTguLjg5NTIwOGMzYmMyMjZkNmZiMTI4NjFkYTQzN2NkYTM4MWY0OGQ2
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggMzAxZDBlZDgzMGRiZWQ5MDhjYmIyNzg4
NmYwNGE4ZmVlYTlmZDg5ZS4uMjNhYjEwZDYzYTRmNGEzZmQyMGNlZDRkNzMwMTczZjQ3NWRjN2Y1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgog
I2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIlVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJz
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA3ZTAwNzJjM2I2ODA4NGQ2YmMyNjI2YjkwNWQzMDJkNzAwZWZlMjE5Li4yYzBhMzFjYTAz
N2FlMzBjNWNiZGJiOTliMmRhYzlmZjdmZWYyZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMjcsNiArMTMyNywyMCBAQAogCQk3
QUZCRDM2NzIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZC
RDM2NTIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmggKi87IH07CiAJCTdBRkJEMzZGMjFFNTQ2RjgwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZCRDM2
RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICovOyB9OwogCQk3QjFEQjI2
NjI1NjY4Q0UxMDAwRTI2QkMgLyogQXJyYXlSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMURCMjY1MjU2NjhDRTAwMDBFMjZCQyAvKiBB
cnJheVJlZmVyZW5jZS5oICovOyB9OworCQk3QjczMTIyODI1Qzk4OEFBMDAzQjI3OTYgLyogU2Vt
YXBob3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCNzMxMjI2MjVDOTg4QUEwMDNCMjc5NiAvKiBTZW1hcGhvcmUuY3BwICovOyB9OworCQk3Qjcz
MTIyOTI1Qzk4OEFCMDAzQjI3OTYgLyogU2VtYXBob3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIyNzI1Qzk4OEFBMDAzQjI3OTYgLyogU2Vt
YXBob3JlLmggKi87IH07CisJCTdCNzMxMjNBMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5o
ICovOyB9OworCQk3QjczMTIzQjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5j
cHAgKi87IH07CisJCTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjczMTIzMzI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9
OworCQk3QjczMTIzRDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIz
NDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi87IH07CisJ
CTdCNzMxMjNFMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNTI1
Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oICovOyB9OworCQk3
QjczMTIzRjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNjI1Q0M4
NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi87IH07CisJCTdCNzMx
MjQwMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM3MjVDQzg1MjQw
MDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJN0I3MzEyNDEy
NUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5
NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CisJCTdCNzMxMjQyMjVDQzg1MjUw
MDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi87IH07CisJCTdCNzMxMjQ0MjVDQzg1MzgwMDNCMjc5
NiAvKiBNZXNzYWdlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjczMTI0MzI1Q0M4NTM3MDAzQjI3OTYgLyogTWVzc2FnZUZpbHRlci5oICov
OyB9OworCQk3QjczMTI0NzI1Q0M4NThBMDAzQjI3OTYgLyogRGVzdGluYXRpb25NZXNzYWdlRmls
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qjcz
MTI0NTI1Q0M4NThBMDAzQjI3OTYgLyogRGVzdGluYXRpb25NZXNzYWdlRmlsdGVyLmggKi87IH07
CisJCTdCNzMxMjQ4MjVDQzg1OEEwMDNCMjc5NiAvKiBEZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEy
NDYyNUNDODU4QTAwM0IyNzk2IC8qIERlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5jcHAgKi87IH07
CiAJCTdDMDY1RjJDMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJE
YXRhVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRh
VHlwZXMuaCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5m
b3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRB
MEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0
aW9uYXJ5LmggKi87IH07CkBAIC00NTE5LDYgKzQ1MzMsMjEgQEAKIAkJN0FGQkQzNkUyMUU1NDZF
MzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVy
c2lzdGVuY3lVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMURCMjY1
MjU2NjhDRTAwMDBFMjZCQyAvKiBBcnJheVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBcnJheVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIyNjI1Qzk4OEFBMDAzQjI3OTYgLyogU2Vt
YXBob3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbWFwaG9y
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjI3MjVDOTg4QUEwMDNC
Mjc5NiAvKiBTZW1hcGhvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vt
YXBob3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjJBMjVDOTg4QzYw
MDNCMjc5NiAvKiBTZW1hcGhvcmVEYXJ3aW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2VtYXBob3JlRGFyd2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3
OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzMyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNs
aWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIz
NDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzUyNUNDODUyNDAwM0IyNzk2IC8q
IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1DbGllbnRD
b25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzcyNUND
ODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cmVhbVNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3
MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjQzMjVDQzg1MzcwMDNCMjc5NiAvKiBN
ZXNzYWdlRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VG
aWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyNDUyNUNDODU4QTAw
M0IyNzk2IC8qIERlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0I3MzEyNDYyNUNDODU4QTAwM0IyNzk2IC8qIERlc3RpbmF0aW9uTWVz
c2FnZUZpbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXN0
aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qjkw
NDE2NzI1NEFGRTE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjkwMyw5ICs2OTMyLDIxIEBACiAJCQkJMUM5
QUYzNjEyNDEzNEQyMzAwRDNFQzAyIC8qIEltYWdlRGF0YVJlZmVyZW5jZS5oICovLAogCQkJCUEz
MUY2MEEzMjVDQzdEQjgwMEFGMTRGNCAvKiBJUENTZW1hcGhvcmUuY3BwICovLAogCQkJCUEzMUY2
MEEyMjVDQzdEQjgwMEFGMTRGNCAvKiBJUENTZW1hcGhvcmUuaCAqLywKKwkJCQk3QjczMTI0MzI1
Q0M4NTM3MDAzQjI3OTYgLyogTWVzc2FnZUZpbHRlci5oICovLAogCQkJCTlCRjVFQzYzMjU0MTBF
OTkwMDk4NEU3NyAvKiBKU0lQQ0JpbmRpbmcuY3BwICovLAorCQkJCTdCNzMxMjQ2MjVDQzg1OEEw
MDNCMjc5NiAvKiBEZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuY3BwICovLAorCQkJCTdCNzMxMjQ1
MjVDQzg1OEEwMDNCMjc5NiAvKiBEZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuaCAqLywKIAkJCQk5
QjQ3OTA4RTI1MzE1MUNDMDBFQzExQUIgLyogSlNJUENCaW5kaW5nLmggKi8sCiAJCQkJOUI0Nzkw
OEMyNTMxNEQ4MzAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5oICovLAor
CQkJCTdCNzMxMjM2MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNw
cCAqLywKKwkJCQk3QjczMTIzMzI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbi5oICovLAorCQkJCTdCNzMxMjM0MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmNwcCAqLywKKwkJCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5oICovLAorCQkJCTdCNzMxMjM5MjVDQzg1MjUwMDNCMjc5NiAvKiBT
dHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oICovLAorCQkJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5
NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLywKKwkJCQk3QjczMTIzNTI1Q0M4
NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oICovLAorCQkJCTdCNzMx
MjM3MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJ
CQk3QjczMTIzODI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oICov
LAogCQkJCTFBQzRDODI4MTZCODc2QTkwMDY5RENDRCAvKiBNZXNzYWdlRmxhZ3MuaCAqLywKIAkJ
CQkxQTNFRUQxMTE2MUE1M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmggKi8sCiAJCQkJ
MUEzRUVEMEMxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5jcHAgKi8sCkBA
IC0xMTU0NCw2ICsxMTU4NSw3IEBACiAJCQkJMjkwRjQyNzIxNzJBMEM3NDAwOTM5RkYwIC8qIEF1
eGlsaWFyeVByb2Nlc3NTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREEwNDFGNDFB
Q0UyMTA1MDA0QTEzRUMgLyogQmFja0JvYXJkU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNp
dmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjQ0MjVDQzg1MzgwMDNCMjc5
NiAvKiBNZXNzYWdlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NUM5NDM5MTI1MjNDMEQw
MDA1NEYzRDUgLyogQmFzZUJvYXJkU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTY0QTJGMjE5
MUFGMTRFMDAxMDczN0QgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzA4NzZDMTZENkNBNjkwMEY5OTIyNiAvKiBCbG9i
UmVnaXN0cnlQcm94eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTczNiw2ICsxMTc3OCw3IEBACiAJ
CQkJRTQyRTA2MTAxQUE3NTIzQjAwQjExNjk5IC8qIE5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTQ0MzZFQ0UxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNo
ZUtleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMxRUVCQkQxQkQ4NUM0MzAwQkI2NEMzIC8qIE5l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyNDIy
NUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4MzJBRTI1MjFCRTJFOENEMDBGQUFFMTAgLyogTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0MzZFQ0YxQTBEMDQwQjAwRUFE
MjA0IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMTA0MjhC
MUJENkI2NkYwMEE3MTVFNCAvKiBOZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMTc5Niw2ICsxMTgzOSw3IEBACiAJCQkJQTE3OThCNTEyMjMwQTEwRTAw
MDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE3OThCM0UyMjJEOTdBMjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTc5OEI0MzIyMkQ5OERGMDAwNzY0QkQgLyog
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MzEyM0UyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUMxRTEyM0JBMjBBMTE1NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0
TWVudS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5NTgyRDMxNTNDQkZENzAwQjYwODc1IC8qIFBE
RktpdEltcG9ydHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMjk4REEwMUMzREYwMjEwMDQ3MEFG
RSAvKiBQZW5kaW5nRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLApAQCAtMTE5NjgsNiArMTIwMTIs
NyBAQAogCQkJCTQ0NTk5ODQyMjI4MzNFODcwMEU2MTM3MyAvKiBTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNTcxMzVGMjA0MEE5QjIwMDg0RjlDRiAv
KiBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDYx
QTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyNDcy
NUNDODU4QTAwM0IyNzk2IC8qIERlc3RpbmF0aW9uTWVzc2FnZUZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBNDE3Q0IxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1M0NGQkJDODIyMjREMUI1MDAyNjY1NDYgLyogVGV4dENoZWNrZXJDb21w
bGV0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTVFNERBNDEyRDNCRDNEMDA5OUEyQkIgLyog
VGV4dENoZWNrZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjAzMCw2ICsxMjA3NSw3IEBA
CiAJCQkJMUMwQTE5NDcxQzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDMEExOTU0MUM4RkZERkIwMEZFMEVCQiAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDMEEx
OTVDMUM5MTZFMUIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291
cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTI0MTI1Q0M4NTI1MDAzQjI3OTYgLyogU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZGOUIyNjMyMzUyNkVG
MzAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM3MkJBMUUxMUU2NDkwNzAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDZDRTNCMTEyM0Q4Qzg0OTAwMTZBOTZBIC8qIFdlYkJhY2tGb3J3YXJk
TGlzdENvdW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjQxNSw2ICsxMjQ2MSw3IEBACiAJCQkJ
Q0QwQzY4MzEyMDFGRDEwMTAwQTU5NDA5IC8qIFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0ZGRERCOTYxRjU3N0Y0
ODAwNTBFNTkzIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTdCNzMxMjNBMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzU0Q0MxMjEyRDY3NEVFMDA1QzY3QjAgLyogV0tH
ZW9sb2NhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDZGNDRFMTJEQkRGM0Yw
MDJENzhERSAvKiBXS0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMEU2MTk4MTJENkNEMTIwMDEyQTcyQSAvKiBXS0dlb2xvY2F0aW9uUG9zaXRpb24u
aCBpbiBIZWFkZXJzICovLApAQCAtMTI2MjIsNiArMTI2NjksNyBAQAogCQkJCTJEMjhBNDk3MUFG
OTY1QTEwMEYxOTBDOSAvKiBXS1ZpZXdMYXlvdXRTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkZBNjE3OUYxMkYwQjk5RDAwMzNFMENBIC8qIFdLVmlld1ByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMzZFNTE2MjM2QTYyMTEwMDc0RkQ1RCAvKiBXS1dlYkFyY2hpdmUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTM2RTUxNDIzNkE2MERDMDA3NEZENUQg
LyogV0tXZWJBcmNoaXZlUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUUxQUZFQjE2QjIwQjdF
MDA2Q0MxRjIgLyogV0tXZWJBcmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTJE
MUU4MjIzMjE2RkZGNTEwMEExNTI2NSAvKiBXS1dlYkV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTEzNjMxLDYgKzEzNjc5LDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCTU3OTBBNjcxMjU2NzlGMUEw
MDc3QzVBNyAvKiBfV0tBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1NzkwQTY3RDI1NjdBMTNFMDA3N0M1QTcgLyogX1dLQXV0aGVudGlj
YXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMx
MjQwMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTU3OTBBNjg5MjU2N0EyOEEwMDc3QzVBNyAvKiBfV0tBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzkwQTY4NTI1NjdBMjFF
MDA3N0M1QTcgLyogX1dLQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1NzkwQTY4MTI1NjdBMUFDMDA3N0M1QTcgLyogX1dLQXV0aGVudGljYXRv
clJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xMzcyMCw2ICsxMzc2OSw3IEBACiAJCQkJ
MkQ5MTM0NDcyMTJDRjlGMDAwMTI4QUZEIC8qIE5QUnVudGltZU9iamVjdE1hcC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDkxMzQ0ODIxMkNGOUYwMDAxMjhBRkQgLyogTlBSdW50aW1lVXRpbGl0
aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzk0MjEyQjZBRDQwMEY0OTNGRCAvKiBO
UFZhcmlhbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjNCMjVDQzg1MjUwMDNC
Mjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNEQTI5QTI4MUNCRUI2N0EwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTJBMUNCRUI2N0EwMDkwMUND
RiAvKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ5MTM0NDkyMTJDRjlGMDAwMTI4QUZEIC8qIFBsdWdpbi5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTEzODYzLDYgKzEzOTEzLDcgQEAKIAkJCQkyRDExQjc5NzIxMjZBMjgz
MDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTM2LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQx
MUI3OTkyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UzNy1tbS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEMTFCNzlBMjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMzcuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJN0I3MzEyNDgyNUNDODU4QTAwM0IyNzk2IC8qIERlc3RpbmF0
aW9uTWVzc2FnZUZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc5QjIxMjZBMjgz
MDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTM4LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQx
MUI3OUMyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UzOC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDExQjc5RDIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTM5LW1tLm1t
IGluIFNvdXJjZXMgKi8sCkBAIC0xMzg4Miw2ICsxMzkzMyw3IEBACiAJCQkJMkQxMUI3QUIyMTI2
QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2U0Ni1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTJEMTFCN0FDMjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlNDYuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkQxMUI3QUQyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2U0Ny1t
bS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjNGMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJl
YW1DbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCN0FFMjEyNkEy
ODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlNDcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQx
MUI3QjAyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2U0OC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDExQjdBRjIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTQ4LW1tLm1t
IGluIFNvdXJjZXMgKi8sCkBAIC0xMzk4MSw2ICsxNDAzMyw3IEBACiAJCQkJMUE4RTdEM0MxOEMx
NTE0OTAwNUE3MDJBIC8qIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3RENFRDcwMjE0MkVFNjgwMDE2Qjg0NyAvKiBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1NzJFQkJCRjI1MzZBNjBBMDAwNTUyQjMgLyogV2ViQXV0aG5Db25uZWN0aW9u
VG9XZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMx
MjNEMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTU3MkVCQkMxMjUzNkE2MEEwMDA1NTJCMyAvKiBXZWJBdXRoblByb2Nlc3NN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTcyRUJCQ0YyNTM2QkIxMTAw
MDU1MkIzIC8qIFdlYkF1dGhuUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTU3NUIxQkJBMjNDRTlDMTMwMDIwNjM5QSAvKiBXZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuY3BwCmluZGV4IDBlNTNlZjM3ZDVkMGJiZDZiNjU4NmE0ZjgzNWY5MWMyNmRkYTY2MjAu
LjNmYmNiMmE2NTIxM2ExOWI4NWJjNWM4M2YxMTNjMDVlZjk2ZjE5NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtNDgsMTMgKzQ4LDE2IEBAIFJlZlB0
cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKSwgYXR0cmlidXRlcykpOwogfQogCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBk
ZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMTU7CisKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdw
dVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJzKQogICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCiAgICAg
LCBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKCZncHVQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAsIG1f
c3RyZWFtQ29ubmVjdGlvbihncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGRlZmF1
bHRTdHJlYW1TaXplKQogewogICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLmFkZENsaWVudCgqdGhp
cyk7CiAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0
KCksICp0aGlzKTsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJz
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgbV9zdHJlYW1Db25uZWN0aW9uLnN0cmVh
bUJ1ZmZlcigpKSwgMCk7CiB9CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKQEAgLTE2OSw3ICsxNzIsNyBAQCBHQ0dMZW51bSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcigpCiAgICAgcmV0dXJuIHN0ZDo6
ZXhjaGFuZ2UobV9lcnJvcldoZW5Db250ZXh0SXNMb3N0LCBOT19FUlJPUik7CiB9CiAKLXZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQs
IFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lv
bnMpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBk
aWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSwgU3RyaW5nJiYgYXZhaWxhYmxl
RXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKIHsKICAgICBpZiAoaXND
b250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNzgsNiArMTgxLDcgQEAgdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwg
U3RyaW5nJiYgYXZhaWxhYmwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoIW1f
ZGlkSW5pdGlhbGl6ZSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLnNldFdha2VVcFNlbWFwaG9y
ZShXVEZNb3ZlKHNlbWFwaG9yZSkpOwogICAgIG1fZGlkSW5pdGlhbGl6ZSA9IHRydWU7CiAgICAg
aW5pdGlhbGl6ZShhdmFpbGFibGVFeHRlbnNpb25zLCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKIH0K
QEAgLTE5OSw2ICsyMDMsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondh
c0NoYW5nZWQoKQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1hcmtDb250
ZXh0TG9zdCgpCiB7CisgICAgQVNTRVJUKG1fY2xpZW50cy5pc0VtcHR5KCkpOwogICAgIGRpc2Nv
bm5lY3RHcHVQcm9jZXNzSWZOZWVkZWQoKTsKICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNvcHlU
b1ZlY3RvcihtX2NsaWVudHMpKQogICAgICAgICBjbGllbnQtPmZvcmNlQ29udGV4dExvc3QoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggNjEwZWIwMTViNTEz
ZWRmY2YxMTgwOTMxNmZhODJiZTRjNGQ3YjVjNi4uYjQ0MGIwMGI5MWY2MDYxYTU4ZGZmMTM4Zjhi
YmI2NGI3NjU2MmVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgK
QEAgLTI5LDEwICsyOSwxMSBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJUENT
ZW1hcGhvcmUuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJNZXNz
YWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorI2luY2x1ZGUgIlN0cmVh
bUNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oPgpAQCAtMzM0LDE5ICszMzUsMTggQEAg
cHJvdGVjdGVkOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKICAgICB7Ci0gICAgICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtQ29u
bmVjdGlvbi5zZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0
IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBX
VEZNb3ZlKHJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0LCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpEaXNwYXRjaEluUmVjZWl2
ZU9yZGVyKTsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi5zZW5kU3luYyhXVEZN
b3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIGRlZmF1bHRTZW5kVGltZW91dCk7CiAgICAgfQogICAgIElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rp
b24oKTsgfQogCiBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAg
IHZvaWQgd2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVu
c2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIHZvaWQgd2FzQ3JlYXRl
ZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlJiYsIFN0cmluZyYmIGF2YWlsYWJsZUV4
dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOwogICAgIHZvaWQgd2FzTG9z
dCgpOwogICAgIHZvaWQgd2FzQ2hhbmdlZCgpOwogCkBAIC0zNjAsOCArMzYwLDggQEAgcHJpdmF0
ZToKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAg
ICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CiAgICAgR0NHTGVudW0gbV9lcnJvcldo
ZW5Db250ZXh0SXNMb3N0ID0gTk9fRVJST1I7Ci0KICAgICBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24g
bV9zdHJlYW1Db25uZWN0aW9uOwogfTsKIAogLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxv
d2luZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAt
d2ViZ2wgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGE3YzY0MTJhYzk0NmUyNThjZTAxMzhiYzQ3YmMzODYyMTk1
MDIxZDcuLmY0M2VjMGEyZWFhMzg0ZTRlZGU4ZGQ0NDBkOWVmZTAyOGFjYjdiZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KQEAg
LTIzLDcgKzIzLDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
IAogbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVk
IHsKLSAgICB2b2lkIFdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcgYXZhaWxhYmxl
RXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0Ny
ZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSBzdHJlYW1XYWtlVXBTZW1hcGhv
cmUsIFN0cmluZyBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNp
b25zKQogICAgIHZvaWQgV2FzTG9zdCgpCiAgICAgdm9pZCBXYXNDaGFuZ2VkKCkKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENO
ZXR3b3JrLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2Vi
UlRDTmV0d29yay5oCmluZGV4IGU0Y2NjZjBkYzU3ZWM4NGVhNmVjNGRhOTgzNGNjY2M0YTVhNTE5
NzMuLjg5OGUyMGQxNzU0NGIyOGE5NGNjZjQ2MzY4ZDRkZTJmZjVlMmMyMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3Jr
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q05ldHdvcmsuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxpYldl
YlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oIgogI2lu
Y2x1ZGUgIldlYk1ETlNSZWdpc3Rlci5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk0NWE5ZWMxY2FmZDc5OGJiM2E5MmU1YzhlOWUwYjI2NjI3
MGQ1YzMuLmU2MTRiYTQ2ZmU4ZTIzNjQ1Y2Q0OTNiNDJjZDljYzY0YThiMjc1ZWMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAyMS0wMi0wNSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYkdMIEdQVSBwcm9jZXNzIElQQyBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9y
IGFzeW5jaHJvbm91cyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE5NjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM0MDY1MT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIG1lc3NhZ2UgcmVjZWl2ZXIgYXMgIlN0cmVhbSIsCisgICAg
ICAgIGEgbmV3IHZhcmlhbnQgb2YgcmVjZWl2ZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2w6CisKIDIwMjEtMDItMDQgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHNob3Vs
ZCBzdXBwb3J0IGxvc2luZyB0aGUgY29udGV4dCBhbmQgc2hvdWxkIGxvc2UgdGhlIGNvbnRleHQg
b24gdGltZW91dHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCBhZWRlZWQzZDZlMjVi
YTRlMWQ4NWYzNGFiMmQ5ZTNhY2ViYjQ0ZmRjLi43YTdiZjU0NDRmNzM3YjE0OWFkMTg0OTFiNTRl
MGI3NmFhYzBkMGQ2IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2Vi
Z2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC04OSw3ICs4OSw3
IEBAIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCiAgICAgdGVtcGxhdGVfcHJlYW1ibGUK
ICAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVz
c2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworbWVzc2Fn
ZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAg
ICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0
IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419705</attachid>
            <date>2021-02-09 05:44:59 -0800</date>
            <delta_ts>2021-02-09 06:32:59 -0800</delta_ts>
            <desc>removed ipc message receive queue</desc>
            <filename>bug-219641-20210209154456.patch</filename>
            <type>text/plain</type>
            <size>147589</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIyM2QzMTA2YTNiOTJlMTE3
OGZkZDkwOGU2N2RjN2U0M2Y2ZmEzZjIuLmY4ODE4MDYxZTdlNTY3MTkyM2M2NmQ4MmIyMzk5ZjI2
MDRiMTZkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjI0IEBACisyMDIxLTAyLTA0ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiBjbGllbnQgY2FuIHNlbmQgbWVzc2FnZXMgYW5k
IHJlY2VpdmUgcmVwbGllcywgd2hlcmUKKyAgICAgICAgYXMgc2VydmljZSBjYW4gcmVjZWl2ZSBt
ZXNzYWdlcyBhbmQgc2VuZCByZXBsaWVzLgorCisgICAgICAgIE1lc3NhZ2VzIHJlY2VpdmVkIHRo
cm91Z2ggc2VydmVyIHN0cmVhbSBjb25uZWN0aW9ucyBjYW4gYmUgcHJvY2Vzc2VkIGJ5CisgICAg
ICAgIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVudGx5IGFzeW5j
aHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hyb25vdXMgbWVz
c2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQgdGhyb3VnaCBu
b3JtYWwgSVBDLgorCisgICAgICAgIEltcGxlbWVudGVkIGFzIGZvbGxvd3M6CisgICAgICAgIFNl
bmRlciBzaGFyZXMgdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSB3aXRoIHRoZSBkZXN0aW5hdGlvbiB3
aGVuIGNyZWF0aW5nCisgICAgICAgIHRoZSBkZXN0aW5hdGlvbi4KKworICAgICAgICBJZiB0aGUg
bWVzc2FnZSBmaXRzIHRvIHRoZSBzdHJlYW0gc2hhcmVkIG1lbW9yeSBhcmVhLCB3cml0ZSBpdCB0
aGVyZS4KKyAgICAgICAgT3RoZXJ3aXNlIHNlbmQgaXQgdmlhIG5vcm1hbCBJUEMgYXMgb3V0IG9m
IGxpbmUgbWVzc2FnZS4KKworICAgICAgICBNZXNzYWdlcyB0byB0aGUgZGVzdGluYXRpb24gYXJy
aXZlIGFzIGJlZm9yZSwgaW4gb3JkZXIuIEZvciBlYWNoIG91dCBvZiBsaW5lCisgICAgICAgIG1l
c3NhZ2UsIGFuIGVudHJ5IGlzIHB1c2hlZCB0byB0aGUgc3RyZWFtLiBSZWNlaXZlciB3aWxsIHN0
b3AgcHJvY2Vzc2luZyB0aGUKKyAgICAgICAgc3RyZWFtIGFuZCBwcm9jZXNzaW5nIHdpbGwgY29u
dGludWUgb25jZSB0aGUgb3V0LW9mLWxpbmUKKyAgICAgICAgbWVzc2FnZSBoYXMgYmVlbiBwcm9j
ZXNzZWQuCisKKyAgICAgICAgU2VuZGVyIGNhbiB3cml0ZSBtZXNzYWdlcyB0byB0aGUgc3RyZWFt
IHNpbXVsdGFuZW91cyB0byB0aGUgcmVjZWl2ZXIgcmVhZGluZworICAgICAgICB0aGUgbWVzc2Fn
ZXMuIFRoaXMgaXMgaW1wbGVtZW50ZWQgYXMgYSByaW5nIGJ1ZmZlciB3aXRoIGF0b21pYyBzZW5k
ZXIgYW5kIHJlY2VpdmVyCisgICAgICAgIHBvaW50ZXJzLgorCisgICAgICAgIFN0cmVhbSBjb25u
ZWN0aW9uIHByb2Nlc3NpbmcgaXMgaW1wbGVtZW50ZWQgYXMgYSBzaGFyZWQgc2VtYXBob3JlLiBU
aGlzIHNlbWFwaG9yZQorICAgICAgICBpcyBub3RpZmllZCBpZiB0aGUgcmVjZWl2ZXIgaXMgd2Fp
dGluZyBvbiBpdC4KKworICAgICAgICBQZXJmb3JtYW5jZSBpbXBhY3QgKGlNYWMgUHJvKToKKyAg
ICAgICAgICAgIC0gTW90aW9uTWFyayB0cmlhbmdsZXM6IDMwMCBwb2ludHMgLT4gNDAwMCBwb2lu
dHMKKyAgICAgICAgICAgICAgKH43MDAwIHBvaW50cyBuby1HUFVQKQorICAgICAgICAgICAgLSBX
ZWJHTCBzYW1wbGVzIEFxdWFyaXVtOiAxMDAwIGZpc2ggfjYwZnBzIC0+IDUwMDAgZmlzaCB+NjBm
cHMKKyAgICAgICAgICAgICAgKH41MDAwIGZpc2ggd2l0aCBuby1HUFVQKQorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgdGVzdGVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZCk6CisgICAgICAg
IChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKFdlYktpdDo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NvcGVkRGlzY29u
bmVjdDo6U2NvcGVkRGlzY29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlNjb3BlZERpc2Nvbm5lY3Q6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJL
aXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjb3BlZERpc2Nvbm5lY3Q6On5TY29wZWRE
aXNjb25uZWN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMU3RyZWFtV29ya1F1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlVW5pbml0aWFsaXplKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExv
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hD
b250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6cGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnNlbmQgY29uc3QpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hOjpwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25u
ZWN0aW9uOjphZGRNZXNzYWdlRmlsdGVyKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVt
b3ZlTWVzc2FnZUZpbHRlcik6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JTeW5j
UmVwbHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdTeW5jUmVw
bHkpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VUb0ZpbHRlcik6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZSk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5jcHA6CisgICAgICAgIChJUEM6OkRlY29kZXI6OkRlY29kZXIpOgorICAgICAgICAoSVBDOjpt
X2J1ZmZlckRlYWxsb2NhdG9yKToKKyAgICAgICAgKElQQzo6bV9kZXN0aW5hdGlvbklEKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9E
ZXN0aW5hdGlvbk1lc3NhZ2VGaWx0ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBDOjpEZXN0aW5hdGlvbk1l
c3NhZ2VGaWx0ZXI6OmFkZEZpbHRlcik6CisgICAgICAgIChJUEM6OkRlc3RpbmF0aW9uTWVzc2Fn
ZUZpbHRlcjo6cmVtb3ZlRmlsdGVyKToKKyAgICAgICAgKElQQzo6RGVzdGluYXRpb25NZXNzYWdl
RmlsdGVyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rlc3Rp
bmF0aW9uTWVzc2FnZUZpbHRlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9IYW5kbGVNZXNz
YWdlLmg6CisgICAgICAgIChJUEM6OmhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyk6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL01lc3NhZ2VGaWx0ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENv
bm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjpzZXRXYWtlVXBTZW1hcGhvcmUpOgorICAgICAgICAoSVBDOjpTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjp3YWtlVXBSZWNlaXZlcik6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChJUEM6OlN0cmVh
bUNsaWVudENvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kU3luYyk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246
OnRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSk6CisgICAgICAgIChJ
UEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUpOgorICAgICAgICAoSVBDOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpyZWxlYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpzaXplKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
Y2xhbXBlZExpbWl0IGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVNZW1vcnkpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVy
KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6CisgICAgICAgIChJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAgICAgICAoSVBDOjpT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9T
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDogQWRkZWQuCisgICAgICAgIChJUEM6OlN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWU6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUpOgorICAgICAg
ICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpkaXNwYXRjaCk6CisgICAgICAgIChJ
UEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OmFkZFN0cmVhbUNvbm5lY3Rpb24pOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpyZW1vdmVTdHJlYW1Db25uZWN0
aW9uKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6c3RvcCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcCk6CisgICAgICAg
IChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFNlbWFwaG9yZSk6CisgICAg
ICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFByb2Nlc3NpbmdUaHJl
YWQpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpwcm9jZXNzU3Ry
ZWFtcyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQu
aC4KKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHA6IEFk
ZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbCk6CisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkaWRSZWNlaXZlTWVzc2FnZSk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6cmVsZWFzZSk6CisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjphbGlnbmVkU3Bhbik6CisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaXplKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1pdCBjb25zdCk6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpjb25uZWN0aW9uKToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OndyYXBPZmZzZXQgY29uc3QpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25PZmZzZXQgY29uc3Qp
OgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2hhcmVkU2VuZGVy
T2Zmc2V0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJl
ZFJlY2VpdmVyT2Zmc2V0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6c2VuZFN5bmNSZXBseSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b248UmVjZWl2ZXI+OjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnN0b3BSZWNlaXZpbmdNZXNzYWdlcyk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0
cmVhbU1lc3NhZ2VzKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNl
aXZlcj46OnByb2Nlc3NTZXRTdHJlYW1EZXN0aW5hdGlvbklEKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoU3RyZWFtTWVzc2FnZSk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaE91
dE9mU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0
Lmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvbW9kZWwucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGU6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcDoKKyAgICAgICAg
KElQQzo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoSVBDOjpyZWNlaXZlck5hbWUpOgorICAgICAg
ICAoSVBDOjppc1ZhbGlkTWVzc2FnZU5hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU3RyZWFtLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4u
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVz
c2FnZXMuaW46IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbi4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtQnVmZmVyTWVzc2FnZXMuaDogQWRkZWQuCisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhT
dHJlYW1CdWZmZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUpOgorICAgICAgICAoTWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjpuYW1lKToKKyAgICAgICAgKE1l
c3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVh
bUJ1ZmZlcik6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRT
dHJlYW1CdWZmZXI6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VGVzdFdpdGhTdHJlYW06OmRpZFJlY2VpdmVT
dHJlYW1NZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0
cmVhbU1lc3NhZ2VzLmg6IEFkZGVkLgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFt
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVh
bTo6U2VuZFN0cmluZzo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06
OlNlbmRTdHJpbmc6OlNlbmRTdHJpbmcpOgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3Ry
ZWFtOjpTZW5kU3RyaW5nOjphcmd1bWVudHMgY29uc3QpOgorICAgICAgICAoTWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpuYW1lKToKKyAgICAgICAgKE1l
c3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9uaXplZDo6U2VuZFN0cmlu
Z1N5bmNocm9uaXplZCk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRT
dHJpbmdTeW5jaHJvbml6ZWQ6OmFyZ3VtZW50cyBjb25zdCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaDogQWRkZWQuCisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjptYXJrQ29udGV4dExvc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0
d29yay5oOgorCiAyMDIxLTAyLTA4ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQ29ubmVjdGlvbiBjbGllbnRzIHNob3VsZCBiZSBhYmxlIHRvIG9idGFp
biB0aGUgbWVzc2FnZXMgYXMgZGF0YSBpbnN0ZWFkIG9mIGVtYmVkZGVkIGluIGZ1bmN0aW9uIHJl
ZmVyZW5jZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkYWJlZDg3YzAzODBjNWRmZjkzMmU1YjJiMzA0YWQ3
YzFlYWVjMmIwLi43OTdjNjc0NGVlYTVmMmJmZmFiNzIxZjMxYzJhYTNkOWNiMmM0YmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC0zMTAsMTAgKzMxMCwxMiBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQog
fQogCiAjaWYgRU5BQkxFKFdFQkdMKQotdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
cmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcikKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0
cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQogewogICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5lbnN1cmUoZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Y3JlYXRlKGF0dHJpYnV0ZXMsICp0aGlzLCBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgICAgICBhdXRvIGluc3RhbmNlID0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmNyZWF0ZSgqdGhpcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBXVEZNb3Zl
KHN0cmVhbSkpOworICAgICAgICBpbnN0YW5jZS0+aW5pdGlhbGl6ZShXVEZNb3ZlKGF0dHJpYnV0
ZXMpKTsKKyAgICAgICAgcmV0dXJuIFNjb3BlZERpc2Nvbm5lY3QgeyBXVEZNb3ZlKGluc3RhbmNl
KSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBlMDA3ZmJhZWZjOTc5YWUxYjdkZmYwMDQ1ZDVmY2Fl
YmMzOWM5MmE4Li41M2NhM2EyYTEzOTkwYzBmZGUyZjJjYWY0NDg5NWY1Y2UxZTRkNTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFzZVJlbmRl
cmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5BQkxFKFdF
QkdMKQotICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHZv
aWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtMjM2LDcgKzIzNiw3IEBAIHByaXZh
dGU6CiAgICAgdXNpbmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIsIFNjb3BlZERpc2Nvbm5lY3Q8UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZD4+OwogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kTWFwOwogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB1c2luZyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsKKyAgICB1c2luZyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTE1hcCA9IEhhc2hNYXA8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBT
Y29wZWREaXNjb25uZWN0PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CiAgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKICNlbmRpZgog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDk1NDcxMGEzNDBkMmY1OGRhOWI1ZTk1N2NiYzM0ZDVlNWFmZDk4OTEuLjFjMmRjNzYzYjc1
YzEzOGExYTk2ZGQ5ODI3OTNhNWMzNWIxMjgxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5nQmFja2Vu
ZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2Vt
YXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgIHZvaWQgUmVsZWFzZVJlbmRl
cmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBDcmVhdGVHcmFw
aGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0
cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgV2Vi
S2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQogICAgIHZvaWQgUmVsZWFz
ZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNlbmRpZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5
aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA3OWIzNDU5NmZiZjJkMGRm
Yzk4MTg2NTFiZGNmZWI0YjBhMGM4NzVkLi5lY2JiYWQ2MjQ4ODMwYzkwNDU1ZmRlNGI3ZGI2YmYz
YzVlOTBiOTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTMxLDU1ICszMSw4MSBA
QAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBvbmUgZ2xvYmFsIFdlYkdMIHByb2Nlc3Npbmcg
aW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiByZW1vdGVH
cmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZT4gaW5zdGFuY2UoIlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsKKyAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7
Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorUmVmPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciYmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBudWxscHRyOwogfQogI2VuZGlmCiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIFJlZjxHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gY29udGV4dCkKLSAgICA6
IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQotICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpKQorUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IG1fc3RyZWFtQ29ubmVjdGlvbihJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+OjpjcmVhdGUoZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtKSwgcmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKSkpCiAgICAgLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1
dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuZ2V0KCkpCi0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNl
aXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LnRvVUludDY0KCksICp0aGlzKTsKLSAgICBtX2NvbnRleHQtPmFkZENsaWVudCgqdGhpcyk7Ci0g
ICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRl
eHRHTDo6RVhURU5TSU9OUyk7Ci0gICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1f
Y29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19B
TkdMRSk7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
V2FzQ3JlYXRlZCh0cnVlLCBleHRlbnNpb25zLCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIH0KIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRH
TCgpCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKCFtX3N0cmVh
bUNvbm5lY3Rpb24pOworICAgIEFTU0VSVCghbV9jb250ZXh0KTsKIH0KIAotR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoKSBjb25zdAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6aW5pdGlhbGl6
ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogewotICAgIHJldHVy
biBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7CisgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgp
LmRpc3BhdGNoKFthdHRyaWJ1dGVzID0gV1RGTW92ZShhdHRyaWJ1dGVzKSwgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICBwcm90ZWN0ZWRUaGlzLT53
b3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIH0pOwogfQogCi1J
UEM6OkNvbm5lY3Rpb24qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjb25uZWN0V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24oKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICByZXR1
cm4gJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMo
KnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKwor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0
aW9uKFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4mJiByZWZGcm9tQ29ubmVjdGlvbikKK3sK
KyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+
c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKKyAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpLmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShyZWZGcm9tQ29ubmVjdGlvbildKCkgewor
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVVbmluaXRpYWxpemUoKTsKKyAgICB9KTsK
K30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlSW5pdGlhbGl6ZShX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQoreworICAg
IHBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICBp
ZiAobV9jb250ZXh0KSB7CisgICAgICAgIG1fY29udGV4dC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAg
ICAgICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0Nv
bnRleHRHTDo6RVhURU5TSU9OUyk7CisgICAgICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lv
bnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVO
U0lPTlNfQU5HTEUpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpXYXNDcmVhdGVkKHRydWUsIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFt
V29ya1F1ZXVlKCkud2FrZVVwU2VtYXBob3JlKCksIGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0
ZW5zaW9ucykpOworICAgIH0gZWxzZQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVhdGVkKGZhbHNlLCBJUEM6OlNlbWFwaG9yZSB7IH0s
ICIiLCAiIikpOwogfQogCi11aW50NjRfdCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6d29ya1F1ZXVlVW5pbml0aWFsaXplKCkKIHsKLSAgICByZXR1cm4gbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIudG9VSW50NjQoKTsKKyAgICBtX2NvbnRleHQgPSBudWxscHRyOworICAg
IG1fc3RyZWFtQ29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCkBAIC04OCw3ICsxMTQsNyBAQCB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpkaWRDb21wb3NpdGUoKQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNMb3N0KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpXYXNMb3N0KCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZWN5Y2xl
Q29udGV4dCgpCkBAIC05OCw3ICsxMjQsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpyZWN5Y2xlQ29udGV4dCgpCiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpc3Bh
dGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NoYW5nZWQoKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Oldhc0NoYW5nZWQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OnJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oCmluZGV4IDAwMTU5YWM4YjU4NmE4YjYyYTNkZGEzYTU3MDA0ZTg4M2UxNTZkMDguLjdk
YTJjNzliOTRkNGFhZTIyNjZmZjgzZTcwMmEwYWM2MzAxNWJjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oCkBAIC0yOCwxMCArMjgsOSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCi0KKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9FeHRlbnNpb25zR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtNDks
MzEgKzQ4LDIzIEBAIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwotCiAvLyBHUFUgcHJvY2VzcyBzaWRl
IGltcGxlbWVudGF0aW9uIG9mIHRoYXQgcmVjZWl2ZXMgbWVzc2FnZXMgYWJvdXQgR3JhcGhpY3ND
b250ZXh0R0wgY2FsbHMKIC8vIGFuZCBpc3N1ZXMgcmVhbCBHcmFwaGljc0NvbnRleHRHTCBjYWxs
cyBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZXMuCiAvLyBUaGUgaW1wbGVtZW50YXRpb24g
aXMgbGFyZ2VseSBnZW5lcmF0ZWQgYnkgcnVubmluZyBUb29scy9TY3JpcHRzL2dlbmVyYXRlLWdw
dXAtd2ViZ2wuCi1jbGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTAotICAgIDogcHVibGljIElQ
Qzo6TWVzc2FnZVNlbmRlcgotICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAg
ICwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IHsKK2NsYXNzIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc3RhdGljIFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRl
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiYpOwogCi0gICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyog
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0OwotCi1wcm90ZWN0ZWQ6Ci0gICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPik7CisgICAgdm9p
ZCBjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RXZWJQ
cm9jZXNzQ29ubmVjdGlvbihSZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+JiYgcmVmRnJvbUNv
bm5lY3Rpb24pOwogCi0gICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyIG92ZXJyaWRlcy4KLSAgICBJ
UEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7Ci0g
ICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKyAg
ICAvLyBJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+
IHRlbXBsYXRlIGNvbnRyYWN0IGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgZGlkUmVjZWl2ZVN0
cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2Rl
ciYpOwogCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgotICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKK3Byb3RlY3Rl
ZDoKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXImJik7CiAKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTDo6Q2xpZW50IG92ZXJyaWRlcy4KICAg
ICB2b2lkIGRpZENvbXBvc2l0ZSgpIGZpbmFsOwpAQCAtOTUsOCArODYsMTQgQEAgcHJvdGVjdGVk
OgogCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQu
aCIgLy8gTk9MSU5UCiAKLSAgICBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IG1fY29udGV4dDsKLSAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICB2b2lkIHdvcmtRdWV1ZUluaXRpYWxpemUoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpOworICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiYpIHsgfTsKKyAgICB2b2lkIHdvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgYm9vbCBzZW5kKFQmJiBtZXNzYWdlKSBjb25zdCB7IHJl
dHVybiBtX3N0cmVhbUNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2Fn
ZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsgfQorCisgICAgUmVmUHRyPElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+IG1fc3RyZWFt
Q29ubmVjdGlvbjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+
IG1fY29udGV4dDsKICAgICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVz
c2FnZXMuaW4KaW5kZXggZDMyOGNkMWNjZDYyMWIwNWFjMjgzMThlNjI1YTdiYTcyZGNjNGExNy4u
MmQ1MzllOTIzYjc0Zjg4NjcwODFiOGY0YWNlYjk5YmY5ZmFmOGMxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogLy8gVGhpcyBm
aWxlIGlzIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsLiBEbyBub3QgZWRpdC4KICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CittZXNzYWdlcyAtPiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgdm9pZCBSZXNoYXBl
KGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVy
KSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCmluZGV4IDhl
MmQxZmM2NTE4NjI4Mzk1ZTk3NDFjNDRlN2FjODUxYjA4ZWY2MjcuLmFlN2FiNzYyNjdkM2ZkMGVk
NWNjZmM3Zjc2NDViZTQ4ZDBiMWYxNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5jcHAKQEAgLTM5LDEwICszOSwxMSBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hIGZpbmFsIDogcHVibGljIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIHsK
IHB1YmxpYzoKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2EoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIH5SZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hKCkgZmluYWwgPSBkZWZhdWx0OwogCiAgICAgLy8gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHZvaWQgcGxhdGZvcm1Xb3JrUXVldWVJbml0
aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKSBmaW5hbDsKICAg
ICB2b2lkIHByZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNo
U2VuZFJpZ2h0JiYpPiYmKSBmaW5hbDsKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJm
YWNlU3dhcENoYWluIG92ZXJyaWRlcy4KQEAgLTU2LDE2ICs1NywyMSBAQCBwcml2YXRlOgogCiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpCitSZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQog
ewotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+KG5l
dyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKGF0dHJpYnV0ZXMsIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBXVEZNb3ZlKHN0cmVhbSkp
KTsKIH0KIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woYXR0cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykpCitSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgV1RGTW92ZShzdHJlYW0pKQogewogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQoreworICAgIG1fY29udGV4dCA9IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKFdURk1vdmUoYXR0cmlidXRlcyks
IHRoaXMpOworfQorCiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVy
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQogewogICAgIHJl
dHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4IGI3YmNh
N2M0ODY5NTgwMjI5NGJmOTRhZWYwNzQwY2Y3MGUzZjYyYWYuLjYyM2E1MmE0NWE0ZmE4NWRjMTJk
NDhhOTVlNTZlYzZmOTYyZDllN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUmVzb2x2ZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1JUQ01vbml0b3IuaCIKICNpbmNsdWRlICJSVENOZXR3b3Jr
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKaW5kZXggMzIw
NzZhZmQwMmE4OThhMWUzOWRlMjgzZTEwMmI4NTk0N2Y4ZWRjNy4uNTMzNTBmOWY3YzhjMTJiZTYy
NzU5OTljN2ViZmMzYzdlMDkxYmNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgog
I2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTc1LDYgKzc2LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
ciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpY192PFQ+Pj4geworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIFQgdmFsdWUpCiAgICAgewogICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2Yo
VCksIGFsaWdub2YoVCkpOwpAQCAtOTEsNiArOTMsNyBAQCBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxU
LCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpY192PFQ+Pj4gewog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW1fdjxUPj4+IHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBU
IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKFdURjo6aXNWYWxpZEVudW08VD4oV1RGOjpl
bnVtVG9VbmRlcmx5aW5nVHlwZTxUPih2YWx1ZSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBiMGE0M2RlOWQ3YTEzNzIxNmExOWJmN2Qw
YmQ1ZTE5MTEzYjVkYTY4Li5hZWU4OWU2MjY5NmM1NjBmMGExOGJmYjFkNjc2OTE2NTBlN2ZmMmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKIAogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIApAQCAtMTExLDcgKzExMiw3IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3Vt
ZW50Q29kZXI8Q1N0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDU3RyaW5nCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLQordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KIHZvaWQgQXJn
dW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7CiAgICAgLy8gU3BlY2lhbCBjYXNlIHRoZSBudWxsIHN0cmluZy4KQEAgLTEz
MCw2ICsxMzEsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBlbHNlCiAgICAgICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSksIGxlbmd0aCAqIHNpemVvZihVQ2hhciksIGFsaWdub2Yo
VUNoYXIpKTsKIH0KK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2Rl
PEVuY29kZXI+KEVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKK3RlbXBsYXRlCit2b2lkIEFyZ3Vt
ZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyPihTdHJlYW1D
b25uZWN0aW9uRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJp
bmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IDIwZWIxN2EwZmQ4MjYwZDQwYmVj
N2ZjZGFhZWEyM2JjNWU4NjVlMDkuLmY4NTY5ODA3M2RkMDQ1YjI4MTZlMTYxMGNhNDk5NmE1ZDRl
ZTZjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApA
QCAtNTUsNiArNTUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxlQXJndW1l
bnRDb2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBB
cmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD4+IHsKICAgICB1c2luZyBBcnJh
eVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+OworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCiAgICAgewogICAg
ICAgICBpZiAoIUV4dGVudCkKQEAgLTc0LDYgKzc1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0
ZW4KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZl
cmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50Pj4gewogICAgIHVzaW5nIEFycmF5
UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4
dGVudD47CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJl
ZmVyZW5jZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGFycmF5UmVmZXJlbmNlLnNpemUoKSk7CkBAIC0yNjYsNiArMjY4LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjpwYWlyPFQsIFU+
PiB7CiAKIHRlbXBsYXRlPHNpemVfdCBpbmRleCwgdHlwZW5hbWUuLi4gRWxlbWVudHM+CiBzdHJ1
Y3QgVHVwbGVFbmNvZGVyIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBzdGQ6OnR1cGxlPEVsZW1l
bnRzLi4uPiYgdHVwbGUpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PHNpemVv
Zi4uLihFbGVtZW50cykgLSBpbmRleD4odHVwbGUpOwpAQCAtMjc1LDYgKzI3OCw3IEBAIHN0cnVj
dCBUdXBsZUVuY29kZXIgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBFbGVtZW50cz4KIHN0cnVj
dCBUdXBsZUVuY29kZXI8MCwgRWxlbWVudHMuLi4+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qgc3RkOjp0dXBs
ZTxFbGVtZW50cy4uLj4mKQogICAgIHsKICAgICB9CkBAIC0zMzgsNiArMzQyLDcgQEAgc3RydWN0
IFR1cGxlRGVjb2RlcjwwPiB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBFbGVtZW50cz4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4+IHsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYgdHVwbGUpCiAgICAgewogICAg
ICAgICBUdXBsZUVuY29kZXI8c2l6ZW9mLi4uKEVsZW1lbnRzKSwgRWxlbWVudHMuLi4+OjplbmNv
ZGUoZW5jb2RlciwgdHVwbGUpOwpAQCAtMzc0LDYgKzM3OSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IEtleVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V1RGOjpL
ZXlWYWx1CiB0ZW1wbGF0ZTxib29sIGZpeGVkU2l6ZUVsZW1lbnRzLCB0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNh
cGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2RlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVf
dCBtaW5DYXBhY2l0eT4gc3RydWN0IFZlY3RvckFyZ3VtZW50Q29kZXI8ZmFsc2UsIFQsIGlubGlu
ZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiB7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNh
cGFjaXR5PiYgdmVjdG9yKQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4odmVjdG9yLnNpemUoKSk7CkBAIC00MTEsNiArNDE3LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIs
IHNpemVfdCBtaW4KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+IHN0cnVj
dCBWZWN0b3JBcmd1bWVudENvZGVyPHRydWUsIFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYgdmVjdG9yKQogICAg
IHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odmVjdG9yLnNpemUo
KSk7CkBAIC03NTMsNiArNzYwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxD
U3RyaW5nPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFN0cmluZz4g
eworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlKERlY29kZXImLCBTdHJpbmcmKTsKICAgICBzdGF0aWMgT3B0aW9uYWw8U3Ry
aW5nPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0
aW9uLmNwcAppbmRleCBlOGI5MzUyZTI5YjE2NDMzMmNhMTM3Zjg0NzEyZGIwZGE3ZDE0OGFmLi4w
ZWMzOTU5ZmU1MDEyZjBjMjI1NDgyYzk1YjFjM2M4NGQyODAwNDk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXIuaCIKICNpbmNsdWRlICJGdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZVF1ZXVl
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgpAQCAt
ODA3LDcgKzgwOCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cHJvY2Vzc0luY29taW5nTWVzc2FnZShz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVzc2FnZSkKICAgICB9CiAKICAgICBhdXRvIHRocmVh
ZGVkUmVjZWl2ZXJLZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNz
YWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpOwot
ICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwOjppc1ZhbGlkS2V5KHRocmVhZGVk
UmVjZWl2ZXJLZXkpIHx8ICFUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkodGhy
ZWFkZWRSZWNlaXZlcktleSkpIHsKKyAgICBpZiAoIVdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1h
cDo6aXNWYWxpZEtleSh0aHJlYWRlZFJlY2VpdmVyS2V5KSB8fCAhVGhyZWFkTWVzc2FnZVJlY2Vp
dmVyTWFwOjppc1ZhbGlkS2V5KHRocmVhZGVkUmVjZWl2ZXJLZXkpIHx8ICFNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwOjppc1ZhbGlkTWVzc2FnZSgqbWVzc2FnZSkpIHsKICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2VO
YW1lID0gbWVzc2FnZS0+bWVzc2FnZU5hbWUoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2VOYW1l
KTsKICAgICAgICAgfSk7CkBAIC04MjAsNyArODIxLDYgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9j
ZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlKQogICAg
IGlmIChkaXNwYXRjaE1lc3NhZ2VUb1RocmVhZFJlY2VpdmVyKG1lc3NhZ2UpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBGSVhNRTogVGhlc2UgYXJlIHByYWN0aWNhbGx5IHRoZSBzYW1lIG11
dGV4LCBzbyBtYXliZSB0aGV5IGNvdWxkIGJlIG1lcmdlZC4KICAgICBhdXRvIHdhaXRGb3JNZXNz
YWdlc0xvY2tlciA9IGhvbGRMb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRleCk7CiAKICAgICBhdXRv
IGluY29taW5nTWVzc2FnZXNMb2NrZXIgPSBob2xkTG9jayhtX2luY29taW5nTWVzc2FnZXNNdXRl
eCk7CkBAIC0xMDM0LDggKzEwMzQsMTMgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNN
ZXNzYWdlKERlY29kZXImIGRlY29kZXIpCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLQorICAgIGlmICghUnVuTG9vcDo6aXNNYWluKCkpIHsK
KyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIG1lc3NhZ2VOYW1lXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFwcm90
ZWN0ZWRUaGlzLT5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+bV9jbGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKHByb3Rl
Y3RlZFRoaXMsIG1lc3NhZ2VOYW1lKTsKKyAgICAgICAgfSk7CisgICAgfQogICAgIGlmICghaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uaAppbmRleCA2YWI5NDRlYzc5M2ExMmQ0NTNjY2M0YzNhZTMwMzgwODc4MjMwNjk0Li4y
YjIzYzk4MTQyOTg0ZWFhMmYwNmYxOTllZDk3ZTJlYTljZmQ4ZTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0zMCwxMCArMzAsOSBAQAogCiAjaW5jbHVkZSAi
RGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKLSNpbmNsdWRlICJIYW5kbGVNZXNzYWdl
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgotI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTMxOCw2ICszMTcsOCBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKE1l
c3NhZ2VSZWNlaXZlciYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmKTsKKyAgICAvLyBDYW4g
YmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKIHByaXZhdGU6CiAgICAgQ29ubmVjdGlvbihJZGVu
dGlmaWVyLCBib29sIGlzU2VydmVyLCBDbGllbnQmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZShJZGVudGlmaWVyKTsKQEAgLTMzMSw2ICszMzIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBkaXNwYXRjaE1lc3NhZ2VUb1dvcmtRdWV1ZVJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiYpOwogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlVG9UaHJlYWRSZWNlaXZlcihzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2Rlcj4mKTsKKyAgICBib29sIGRpc3BhdGNoTWVzc2FnZVRvRmlsdGVyKHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYpOwogCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBjb25uZWN0
aW9uIHdvcmsgcXVldWUuCiAgICAgdm9pZCBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPik7CkBAIC0zNTEsNyArMzUzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4pOwogICAgIHZvaWQgZGlz
cGF0Y2hNZXNzYWdlKERlY29kZXImKTsKICAgICB2b2lkIGRpc3BhdGNoU3luY01lc3NhZ2UoRGVj
b2RlciYpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2Fn
ZU5hbWUpOwogICAgIHZvaWQgZGlkRmFpbFRvU2VuZFN5bmNNZXNzYWdlKCk7CiAKICAgICAvLyBD
YW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuY3BwCmluZGV4IDgwYTBmNzVjNzA1NzJiZjRjMjQ4NTI2ZmVkMmZlZmIwOTdjZGM4ZjkuLjRk
ZTA1MDk4YzQ2MzJhZDQ1ZjRlODUzZjY3ZTllZTNlNzcxMzZkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC05MCw2ICs5MCwxNyBAQCBEZWNvZGVyOjpEZWNvZGVy
KGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIENvbnN0cnVjdFdpdGhv
dXRIZWFkZQogICAgICAgICBtYXJrSW52YWxpZCgpOwogfQogCitEZWNvZGVyOjpEZWNvZGVyKGNv
bnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQpCisgICAgOiBtX2J1ZmZlciB7IHN0cmVhbSB9CisgICAgLCBtX2J1ZmZlclBvcyB7IG1f
YnVmZmVyIH0KKyAgICAsIG1fYnVmZmVyRW5kIHsgbV9idWZmZXIgKyBzdHJlYW1TaXplIH0KKyAg
ICAsIG1fYnVmZmVyRGVhbGxvY2F0b3IoW10gKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfSkK
KyAgICAsIG1fZGVzdGluYXRpb25JRChkZXN0aW5hdGlvbklEKQoreworICAgIGlmICghZGVjb2Rl
KG1fbWVzc2FnZU5hbWUpKQorICAgICAgICByZXR1cm47Cit9CisKIERlY29kZXI6On5EZWNvZGVy
KCkKIHsKICAgICBBU1NFUlQobV9idWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5oCmluZGV4IDY2OTg1YmMzODdkNzQzOTEzNzAxYjExN2I5MTgwMGI5YTI3NzFhYjguLmIzYzZh
YzhhMmQ1YWNiYTJjMjE1MjhkZmViMThjNjQxNWNlZGQyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgRGVjb2RlciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBjcmVhdGUoY29uc3QgdWludDhf
dCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShj
b25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOwogICAgIGV4cGxp
Y2l0IERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9p
ZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0
dGFjaG1lbnQ+JiYpOworICAgIERlY29kZXIoY29uc3QgdWludDhfdCogc3RyZWFtLCBzaXplX3Qg
c3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAgICAgfkRlY29kZXIoKTsKIAog
ICAgIERlY29kZXIoY29uc3QgRGVjb2RlciYpID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDQxMjlkNGUyYjQ5ZDVjOGZjNDFhMmQ2NTRh
ZGNkODllODZjNjM3ZjYuLjU5ZDgzOTZlNWQ4OGRlOGZlYTBkYjE3NWEyNmEwMTQ0NzRiNGQ0M2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKQEAgLTE2NCw2ICsxNjUsMjggQEAgdm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50
c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGUKICAgICBjYWxs
TWVtYmVyRnVuY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24pOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4KK3ZvaWQgaGFuZGxlTWVzc2FnZVN5bmNo
cm9ub3VzKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBk
ZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQoreworICAgIHVpbnQ2NF90IHN5bmNSZXF1
ZXN0SUQgPSAwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3luY1JlcXVlc3RJRCkgfHwgIXN5
bmNSZXF1ZXN0SUQpIHsKKyAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgT3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFt
ZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7CisgICAgZGVjb2RlciA+PiBhcmd1bWVu
dHM7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5
IGNvbXBsZXRpb25IYW5kbGVyID0gW3N5bmNSZXF1ZXN0SUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVm
KGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAgICBjb25uZWN0
aW9uLT5zZW5kU3luY1JlcGx5KHN5bmNSZXF1ZXN0SUQsIGFyZ3MuLi4pOworICAgIH07CisgICAg
Y2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CiB2b2lkIGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9u
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRD
b25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGY1Y2RmMDA4ZTVhN2YyZDJmMTAyYTIzNWMzYzIy
NTE3MzM3NmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgi
CisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBzaXplKQorICAgIDog
bV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2J1ZmZlcihzaXplKQoreworICAgIC8v
IFJlYWQgc3RhcnRzIGZyb20gMCB3aXRoIGxpbWl0IG9mIDAgYW5kIHJlYWRlciBzbGVlcGluZy4K
KyAgICBzaGFyZWRTZW5kZXJPZmZzZXQoKS5zdG9yZShTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpz
ZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4
ZWQpOworICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAgd2l0aCBhIGxpbWl0IG9mIHRoZSB3aG9s
ZSBidWZmZXIuCisgICAgc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5zdG9yZSgwLCBzdGQ6Om1lbW9y
eV9vcmRlcl9yZWxheGVkKTsKK30KKwordm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZXRX
YWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUgPSBXVEZNb3ZlKHNlbWFwaG9yZSk7Cisj
ZW5kaWYKKyAgICB3YWtlVXBSZWNlaXZlcigpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246Ondha2VVcFJlY2VpdmVyKCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAo
bV93YWtlVXBTZW1hcGhvcmUpCisgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLT5zaWduYWwoKTsK
KyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1DbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTMyNTJmMDY4NTkyMThhZDMwMDRiOWRl
YjZhNDg3MzQwMTVjZDgwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDI0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIklQQ1Nl
bWFwaG9yZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgor
I2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgorbmFtZXNwYWNlIElQQyB7CisKKy8vIEEgbWVzc2FnZSBzdHJlYW0gaXMgYSBoYWxmLWR1cGxl
eCB0d28td2F5IHN0cmVhbSBvZiBtZXNzYWdlcyB0byBhIGJldHdlZW4gYSBzZW5kZXIgYW5kIHRo
ZQorLy8gZGVzdGluYXRpb24gcmVjZWl2ZXIuCisvLworLy8gU3RyZWFtQ2xpZW50Q29ubmVjdGlv
biBjYW4gc2VuZCBtZXNzYWdlcyBhbmQgcmVjZWl2ZSBzeW5jaHJvbm91cyByZXBsaWVzCisvLyB0
aHJvdWdoIHRoaXMgbWVzc2FnZSBzdHJlYW0gb3IgdGhyb3VnaCBJUEM6OkNvbm5lY3Rpb24uCisv
LworLy8gVGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdpbGwgcmVjZWl2ZSBtZXNzYWdlcyBpbiBv
cmRlciBfZm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdlc18uCisvLyBUaGUgd2hvbGUgSVBDOjpD
b25uZWN0aW9uIG1lc3NhZ2Ugb3JkZXIgaXMgbm90IHByZXNlcnZlZC4KKworY2xhc3MgU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbik7CitwdWJsaWM6CisgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbihD
b25uZWN0aW9uJiwgc2l6ZV90IGJ1ZmZlclNpemUpOworCisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYgc3RyZWFtQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICB2b2lkIHNldFdh
a2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxV
PiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpOworCisgICAgdXNpbmcgU2VuZFN5bmNS
ZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFNwYW4geworICAgICAg
ICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXplX3Qgc2l6ZTsKKyAgICB9OworICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IFN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
bWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdlQWxpZ25t
ZW50OworICAgIGJvb2wgdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRfdCBkZXN0
aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIHRpbWVvdXQpOworICAgIHZvaWQgc2VuZFByb2Nlc3NP
dXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmKTsKKworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVp
cmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KTsKKyAgICBlbnVtIGNsYXNzIFdha2VVcFJlY2VpdmVy
IDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAgICBZZXMKKyAgICB9OworICAgIFdha2VVcFJl
Y2VpdmVyIHJlbGVhc2Uoc2l6ZV90IHdyaXRlU2l6ZSk7CisgICAgdm9pZCB3YWtlVXBSZWNlaXZl
cigpOworCisgICAgU3BhbiBhbGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQp
OworICAgIHNpemVfdCBzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CisgICAgc2l6
ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0OworCisgICAgc2l6
ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIud3Jh
cE9mZnNldChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9m
ZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRT
ZW5kZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQorICAgIEF0
b21pYzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnJl
Y2VpdmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZGF0YVNpemUoKTsgfQorCisgICAgQ29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOworICAg
IHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgeyAwIH07CisKKyAgICBzaXplX3QgbV9z
ZW5kZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPcHRpb25hbDxTZW1hcGhvcmU+IG1fd2FrZVVwU2Vt
YXBob3JlOworI2VuZGlmCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgor
Ym9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVu
dGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBzdGF0aWNf
YXNzZXJ0KCFUOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CisgICAgTW9ub3RvbmljVGlt
ZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7CisgICAg
aWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKGRlc3RpbmF0aW9uSUQudG9VSW50NjQo
KSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gc3Bh
biA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4pCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB7CisgICAgICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG1l
c3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBzcGFuLT5kYXRhLCBzcGFuLT5zaXplIH07CisgICAg
ICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpKSB7CisgICAgICAg
ICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2UobWVzc2FnZUVuY29kZXIuc2l6ZSgpKTsK
KyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAgICAgICAgICAgICB3YWtlVXBSZWNlaXZlcigpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgc2VuZFByb2Nl
c3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOworICAgIGlmICghbV9jb25uZWN0
aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IFN0cmVhbUNs
aWVudENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
IHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91
dCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KFQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgbm90IHN5bmMh
Iik7CisgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjpu
b3coKSArIHRpbWVvdXQ7CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKGRl
c3RpbmF0aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKGFic29sdXRlVGltZW91dCk7CisgICAg
aWYgKCFzcGFuKQorICAgICAgICByZXR1cm4geyB9OworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
c2VuZCB0aHJvdWdoIHN0cmVhbS4KKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHJlY2VpdmUgdGhy
b3VnaCBzdHJlYW0uCisgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgq
c3BhbikpOworICAgIGF1dG8gcmVzdWx0ID0gbV9jb25uZWN0aW9uLnNlbmRTeW5jKFdURk1vdmUo
bWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVv
dXQsIElQQzo6U2VuZFN5bmNPcHRpb246OkRpc3BhdGNoSW5SZWNlaXZlT3JkZXIpOworICAgIEFT
U0VSVChyZXN1bHQpOworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7Cit9CisKK2lubGluZSBi
b29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQo
dWludDY0X3QgZGVzdGluYXRpb25JRCwgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQpCit7
CisgICAgaWYgKGRlc3RpbmF0aW9uSUQgPT0gbV9jdXJyZW50RGVzdGluYXRpb25JRCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZShhYnNvbHV0ZVRpbWVv
dXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFN0cmVhbUNv
bm5lY3Rpb25FbmNvZGVyIGVuY29kZXIgeyBNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRp
b25JRCwgc3Bhbi0+ZGF0YSwgc3Bhbi0+c2l6ZSB9OworICAgIGlmICghKGVuY29kZXIgPDwgZGVz
dGluYXRpb25JRCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIFNpemUgb2Yg
dGhlIG1pbmltdW0gYWxsb2NhdGlvbiBpcyBpbmNvcnJlY3QuIExpa2VseSBhbiBhbGlnbm1lbnQg
aXNzdWUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgYXV0byB3YWtldXBSZXN1
bHQgPSByZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKKyAgICBpZiAod2FrZXVwUmVzdWx0ID09IFN0
cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVyOjpZZXMpCisgICAgICAgIHdha2VV
cFJlY2VpdmVyKCk7CisgICAgbV9jdXJyZW50RGVzdGluYXRpb25JRCA9IGRlc3RpbmF0aW9uSUQ7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSB2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rp
b246OnNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFNwYW4mJiBzcGFuKQoreworICAgIFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyIGVuY29kZXIgeyBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9m
U3RyZWFtTWVzc2FnZSwgc3Bhbi5kYXRhLCBzcGFuLnNpemUgfTsKKyAgICAvLyBOb3Qgbm90aWZ5
aW5nIG9uIHdha2UgdXAgc2luY2UgdGhlIG91dC1vZi1zdHJlYW0gbWVzc2FnZSB3aWxsIGRvIHRo
YXQuCisgICAgKHZvaWQpIHJlbGVhc2UoZW5jb2Rlci5zaXplKCkpOworfQoraW5saW5lIE9wdGlv
bmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246
OnRyeUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KQoreworICAgIGZvciAoOzspIHsKKyAg
ICAgICAgc2l6ZV90IHNlbmRlckxpbWl0ID0gY2xhbXBlZExpbWl0KHNoYXJlZFJlY2VpdmVyT2Zm
c2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSk7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKKyAgICAgICAg
aWYgKHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplKSB7CisgICAgICAgICAgICBhdXRv
IG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgICAgICAgICAgaWYgKG5vdyA+PSB0aW1l
b3V0KQorICAgICAgICAgICAgICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAg
ICAgICAgc2l6ZV90IG9sZFNlbmRlckxpbWl0ID0gc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5jb21w
YXJlRXhjaGFuZ2VTdHJvbmcoc2VuZGVyTGltaXQsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnJl
Y2VpdmVyT2Zmc2V0U2VuZGVySXNXYWl0aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVs
LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAgICAgICAgIGlmIChzZW5kZXJMaW1p
dCA9PSBvbGRTZW5kZXJMaW1pdCkKKyAgICAgICAgICAgICAgICBtX2J1ZmZlci5zZW5kZXJXYWl0
U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0IC0gbm93KTsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHNlbmRlckxpbWl0ID0gY2xhbXBlZExpbWl0KG9sZFNlbmRlckxpbWl0
KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlbmRlck9mZnNldCwg
c2VuZGVyTGltaXQpOworICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgIFRocmVhZDo6
eWllbGQoKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGlmIChyZXN1bHQuc2l6ZSA+PSBt
aW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitpbmxpbmUgU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6V2FrZVVwUmVjZWl2ZXIgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6cmVsZWFzZShzaXplX3Qg
c2l6ZSkKK3sKKyAgICBzaXplID0gc3RkOjptYXgoc2l6ZSwgbWluaW11bU1lc3NhZ2VTaXplKTsK
KyAgICBzaXplX3QgZXhwZWN0ZWRSZWNlaXZlckxpbWl0ID0gbV9zZW5kZXJPZmZzZXQ7CisgICAg
bV9zZW5kZXJPZmZzZXQgPSB3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1fc2VuZGVyT2Zmc2V0KSAr
IHNpemUpOworICAgIEFTU0VSVChtX3NlbmRlck9mZnNldCA8IGRhdGFTaXplKCkpOworICAgIC8v
IElmIHRoZSByZWNlaXZlciB3cm90ZSBvdmVyIHRoZSBzZW5kZXJPZmZzZXQgd2l0aCBzZW5kZXJP
ZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHdlIGtub3cgaXQgaXMgc2xlZXBpbmcuCisgICAg
c2l6ZV90IHJlY2VpdmVyTGltaXQgPSBzaGFyZWRTZW5kZXJPZmZzZXQoKS5leGNoYW5nZShtX3Nl
bmRlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgaWYgKHJlY2VpdmVy
TGltaXQgIT0gZXhwZWN0ZWRSZWNlaXZlckxpbWl0KQorICAgICAgICByZXR1cm4gV2FrZVVwUmVj
ZWl2ZXI6OlllczsKKyAgICByZXR1cm4gV2FrZVVwUmVjZWl2ZXI6Ok5vOworfQorCitpbmxpbmUg
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3BhbiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjphbGln
bmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgQVNTRVJUKG9mZnNl
dCA8IGRhdGFTaXplKCkpOworICAgIEFTU0VSVChsaW1pdCA8IGRhdGFTaXplKCkpOworICAgIHNp
emVfdCBhbGlnbmVkID0gYWxpZ25PZmZzZXQob2Zmc2V0KTsKKyAgICBzaXplX3QgcmVzdWx0U2l6
ZSA9IDA7CisgICAgaWYgKG9mZnNldCA8IGxpbWl0KSB7CisgICAgICAgIGlmIChhbGlnbmVkID49
IG9mZnNldCAmJiBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6
ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGFsaWduZWQgPj0g
b2Zmc2V0IHx8IGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgIHJlc3VsdFNpemUgPSBzaXpl
KGFsaWduZWQsIGxpbWl0KTsKKyAgICB9CisgICAgcmV0dXJuIHsgZGF0YSgpICsgYWxpZ25lZCwg
cmVzdWx0U2l6ZSB9OworfQorCitpbmxpbmUgc2l6ZV90IFN0cmVhbUNsaWVudENvbm5lY3Rpb246
OnNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQoreworICAgIGlmICghbGltaXQpCisg
ICAgICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gMSAtIG9mZnNldDsKKyAgICBpZiAobGltaXQgPD0g
b2Zmc2V0KQorICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAtIG9mZnNldDsKKyAgICByZXR1cm4g
bGltaXQgLSBvZmZzZXQgLSAxOworfQorCitpbmxpbmUgc2l6ZV90IFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0Cit7CisgICAg
QVNTRVJUKHVudHJ1c3RlZExpbWl0IDwgKGRhdGFTaXplKCkgLSAxKSk7CisgICAgcmV0dXJuIHN0
ZDo6bWluKHVudHJ1c3RlZExpbWl0LCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2Q1ODE5NDliZjU2NDMyOTVhYjc2Y2NjYzYzM2UwZjRjYTRmMWIyZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IEZmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisKKyNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK3N0YXRpYyBS
ZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IGNyZWF0ZU1lbW9yeShzaXplX3Qgc2l6ZSkKK3sKKyAg
ICBhdXRvIG1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplKTsKKyAg
ICBpZiAoIW1lbW9yeSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gbWVtb3J5LnJlbGVh
c2VOb25OdWxsKCk7Cit9CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIoc2l6ZV90IG1lbW9yeVNpemUpCisgICAgOiBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
KGNyZWF0ZU1lbW9yeShtZW1vcnlTaXplKSwgbWVtb3J5U2l6ZSkKK3sKK30KKworI2lmIFBMQVRG
T1JNKENPQ09BKQorU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cihSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYgbWVtb3J5LCBzaXplX3QgbWVtb3J5U2l6ZSwg
U2VtYXBob3JlJiYgc2VuZGVyV2FpdFNlbWFwaG9yZSkKKyAgICA6IG1fZGF0YVNpemUobWVtb3J5
U2l6ZSAtIGhlYWRlclNpemUoKSkKKyAgICAsIG1fc2hhcmVkTWVtb3J5KFdURk1vdmUobWVtb3J5
KSkKKyAgICAsIG1fc2VuZGVyV2FpdFNlbWFwaG9yZShXVEZNb3ZlKHNlbmRlcldhaXRTZW1hcGhv
cmUpKQoreworfQorI2VuZGlmCisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYmIG1lbW9yeSwgc2l6ZV90IG1l
bW9yeVNpemUpCisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisg
ICAgLCBtX3NoYXJlZE1lbW9yeShXVEZNb3ZlKG1lbW9yeSkpCit7Cit9CisKK1N0cmVhbUNvbm5l
Y3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciYmIG90aGVyKSA9IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXI6On5TdHJlYW1D
b25uZWN0aW9uQnVmZmVyKCkgPSBkZWZhdWx0OworCitTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOjpvcGVyYXRvcj0oU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYm
IG90aGVyKQoreworICAgIGlmICh0aGlzICE9ICZvdGhlcikgeworICAgICAgICBtX2RhdGFTaXpl
ID0gb3RoZXIubV9kYXRhU2l6ZTsKKyAgICAgICAgbV9zaGFyZWRNZW1vcnkgPSBXVEZNb3ZlKG90
aGVyLm1fc2hhcmVkTWVtb3J5KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgbV9zZW5k
ZXJXYWl0U2VtYXBob3JlID0gV1RGTW92ZShvdGhlci5tX3NlbmRlcldhaXRTZW1hcGhvcmUpOwor
I2VuZGlmCisgICAgfQorICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoIW1fc2hhcmVkTWVtb3J5LT5j
cmVhdGVIYW5kbGUoaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZFdyaXRlKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIGlwY0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgbV9zaGFyZWRNZW1vcnktPnNpemUo
KSB9OworICAgIGVuY29kZXIgPDwgaXBjSGFuZGxlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IGVuY29kZXIgPDwgbV9zZW5kZXJXYWl0U2VtYXBob3JlLmNyZWF0ZVNlbmRSaWdodCgpOworI2Vu
ZGlmCit9CisKK09wdGlvbmFsPFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI+IFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IGlwY0hhbmRsZTsKKyAgICBkZWNvZGVyID4+IGlw
Y0hhbmRsZTsKKyAgICBpZiAoIWlwY0hhbmRsZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW1h
cGhvcmVTZW5kUmlnaHQ7CisgICAgZGVjb2RlciA+PiBzZW1hcGhvcmVTZW5kUmlnaHQ7CisgICAg
aWYgKCFzZW1hcGhvcmVTZW5kUmlnaHQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisj
ZW5kaWYKKyAgICBpZiAoaXBjSGFuZGxlLT5kYXRhU2l6ZSA8IGhlYWRlclNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6
U2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLT5oYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOworICAgIGlmIChzaGFyZWRNZW1vcnktPnNpemUoKSA8
IGlwY0hhbmRsZS0+ZGF0YVNpemUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJuIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgeyBzaGFy
ZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSwgaXBjSGFuZGxlLT5kYXRhU2l6ZSwgU2VtYXBob3Jl
IHsgV1RGTW92ZSgqc2VtYXBob3JlU2VuZFJpZ2h0KSB9IH07CisjZWxzZQorICAgIHJldHVybiBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyIHsgc2hhcmVkTWVtb3J5LT5yZWxlYXNlTm9uTnVsbCgpLCBp
cGNIYW5kbGUtPmRhdGFTaXplIH07CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAw
MTlhZGU0NDgzNDVhMzBiODBiNjY5Zjg3MTYzYTU2ZTBkNjViODgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKQEAg
LTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRl
Y29kZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRvbWlj
cy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisj
aW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIElQQyB7CisKKy8v
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgaXMgYSBzaGFyZWQgImJpLXBhcnRpdGUiIGNpcmN1bGFy
IGJ1ZmZlciBzdXBwb3J0aW5nCisvLyB2YXJpYWJsZSBsZW5ndGggbWVzc2FnZXMsIHNwZWNpZmlj
IGRhdGEgYWxpZ25tZW50IHdpdGggbWFuZGF0ZWQgbWluaW11bSBzaXplLgorLy8gU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbiBhbmQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiB1c2UgU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciB0byBjb21tdW5pY2F0ZS4KKy8vCisvLyBUaGUgImJpLXBhcnRpdGUiIGlzIGhl
cmUgdG8gbWVhbiB0aGF0IHdyaXRlcyBhbmQgcmVhZHMgdG8gdGhlIGJ1ZmZlciBtdXN0IGJlCisv
LyBjb250aW51b3VzLgorLy8KKy8vIFRoZSBjbGllbnQgKHNlbmRlciBvciByZWNlaXZlcikgImFj
cXVpcmVzIiBzb21lIGFtb3VudCBvZiBidWZmZXIgZGF0YS4gSWYgYnVmZmVyIGhhcyBubworLy8g
Y2FwYWNpdHksIGFjcXVpcmUgcmV0dXJucyB3aXRoIHplcm8gY2FwYWNpdHkuIElmIGJ1ZmZlciBo
YXMgYXQgbGVhc3QgYWNxdWlyZWQKKy8vIGNhcGFjaXR5LCBhbGwgdGhlIGF2YWlsYWJsZSBjYXBh
Y2l0eSBpcyByZXR1cm5lZC4KKy8vCisvLyBUaGUgY2xpZW50ICJyZWxlYXNlcyIgdGhlIHNvbWUg
YW1vdW50IG9mIGRhdGEsIGF0IGxlYXN0IHRoZSBhbW91bnQgYWNxdWlyZWQgYnV0IHBvdGVudGlh
bGx5CisvLyBtb3JlLgorLy8KKy8vIEJvdGggc2VuZGVyIGFuZCByZWNlaXZlciBtdXN0IGFjcXVp
cmUgc2FtZSBhbW91bnQgb2YgZGF0YSBhdCB0aGUgc2FtZSBzdGVwIG9mIHRoZSBhY3F1aXJlIHNl
cXVlbmNlLgorLy8gSWYgc2VuZGVyIGFjcXVpcmVzIFggYW5kIHRoZW4gWSBhbW91bnQsIHJlY2Vp
dmVyIG11c3QgZG8gdGhlIHNhbWUuCisvLworLy8gVGhlIGNpcmN1bGFyIGJ1ZmZlciBoYXMgZm9s
bG93aW5nIGltcGxlbWVudGF0aW9uOgorLy8gKiBTZW5kZXIgb3ducyB0aGUgZGF0YSBiZXR3ZWVu
IFtzZW5kZXJPZmZzZXQsIHJlY2VpdmVyT2Zmc2V0Wy4gV2hlbiBzZW5kZXJPZmZzZXQgPT0KKy8v
IHJlY2VpdmVyT2Zmc2V0LCBzZW5kZXIgb3ducyBhbGwgdGhlIGRhdGEuCisvLyAqIFJlY2VpdmVy
IG93bnMgdGhlIGRhdGEgYmV0d2VlbiBbcmVjZWl2ZXJPZmZzZXQsIHNlbmRlck9mZnNldFsuCisv
LyAqIFRoZSBidWZmZXIgY2FuIGhvbGQgbWF4aW11bSBvZiBzaXplIC0gMSB2YWx1ZXMuIFRoZSBs
YXN0IHZhbHVlIGlzIHJlc2VydmVkIGZvcgorLy8gaW5kaWNhdGluZyB0aGF0IHRoZSBidWZmZXIg
aXMgZnVsbC4gRklYTUU6IE1heWJlIHdvdWxkIGJlIHNpbXBsZXIgaW1wbGVtZW50YXRpb24gaWYK
Ky8vIGl0IHdvdWxkIHVzZSB0aGUgIndyYXAiIGZsYWcgaW5zdGVhZCBvZiB0aGUgaG9sZSBhcyB0
aGUgaW5kaWNhdG9yLiBUaGlzIHdvdWxkIG1vdmUKKy8vIHRoZSBhbGlnbmVkU3BhbiBpbXBsZW1l
bnRhdGlvbiB0byB0aGUgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci4KKy8vICogQWxsIGF0b21pYyB2
YXJpYWJsZSBsb2FkcyBhcmUgdW50cnVzdGVkLCBzbyB0aGV5J3JlIGNsYW1wZWQuIFZpb2xhdGlv
bnMgYXJlIG5vdCByZXBvcnRlZCwKKy8vIHRob3VnaC4KKy8vIFNlZSBTaGFyZWREaXNwbGF5TGlz
dEhhbmRsZS4KK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgeworcHVibGljOgorICAgIGV4
cGxpY2l0IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoc2l6ZV90IG1lbW9yeVNpemUpOworICAgIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIoU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICB+U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcigpOworICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIG9wZXJh
dG9yPShTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOworCisgICAgc2l6ZV90IHdyYXBPZmZzZXQo
c2l6ZV90IG9mZnNldCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChvZmZzZXQgPD0gZGF0
YVNpemUoKSk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gZGF0YVNpemUoKSkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAgIHRlbXBsYXRl
PHNpemVfdCBtZXNzYWdlQWxpZ25tZW50PgorICAgIHNpemVfdCBhbGlnbk9mZnNldChzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgYWNxdWlyZVNpemUpIGNvbnN0CisgICAgeworICAgICAgICBvZmZzZXQg
PSByb3VuZFVwVG9NdWx0aXBsZU9mPG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCk7CisgICAgICAg
IGlmIChvZmZzZXQgKyBhY3F1aXJlU2l6ZSA+PSBkYXRhU2l6ZSgpKQorICAgICAgICAgICAgb2Zm
c2V0ID0gMDsKKyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICBBdG9taWM8c2l6
ZV90PiYgc2VuZGVyT2Zmc2V0KCkgeyByZXR1cm4gaGVhZGVyKCkuc2VuZGVyT2Zmc2V0OyB9Cisg
ICAgQXRvbWljPHNpemVfdD4mIHJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4gaGVhZGVyKCkucmVj
ZWl2ZXJPZmZzZXQ7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KG1fc2hhcmVkTWVtb3J5LT5kYXRhKCkpICsgaGVhZGVyU2l6ZSgpOyB9
CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhU2l6ZTsgfQorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIFNlbWFwaG9yZSYgc2VuZGVyV2FpdFNlbWFwaG9yZSgpIHsg
cmV0dXJuIG1fc2VuZGVyV2FpdFNlbWFwaG9yZTsgfQorI2VuZGlmCisKKyAgICAvLyBUYWcgdmFs
dWUgc3RvcmVkIGluIEhlYWRlcjo6c2VuZGVyT2Zmc2V0IHdoZW4gcmVjZWl2ZXIgaXMgc2xlZXBp
bmcsIGUuZy4gbm90IHJ1bm5pbmcuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2VuZGVy
T2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnID0gMSA8PCAzMTsKKyAgICAvLyBUYWcgdmFsdWUg
c3RvcmVkIGluIEhlYWRlcjo6cmVjZWl2ZXJPZmZzZXQgd2hlbiBzZW5kZXIgaXMgd2FpdGluZywg
ZS5nLiB3YWl0aW5nIG9uCisgICAgLy8gYSBzZW1hcGhvcmUuCisgICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3QgcmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcgPSAxIDw8IDMxOworCisg
ICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBPcHRpb25hbDxTdHJl
YW1Db25uZWN0aW9uQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hh
cmVkTWVtb3J5PiYmLCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgc2VuZGVyV2FpdFNl
bWFwaG9yZSk7CisjZW5kaWYKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyKFJlZjxXZWJLaXQ6
OlNoYXJlZE1lbW9yeT4mJiwgc2l6ZV90IG1lbW9yeVNpemUpOworCisgICAgc3RydWN0IEhlYWRl
ciB7CisgICAgICAgIEF0b21pYzxzaXplX3Q+IHJlY2VpdmVyT2Zmc2V0OworICAgICAgICAvLyBQ
YWRkaW5nIHNvIHRoYXQgdGhlIHZhcmlhYmxlcyBtb3N0bHkgYWNjZXNzZWQgYnkgZGlmZmVyZW50
IHByb2Nlc3NlcyBkbyBub3Qgc2hhcmUgYSBjYWNoZSBsaW5lLgorICAgICAgICAvLyBUaGlzIGlz
IGFuIGF0dGVtcHQgdG8gYXZvaWQgY2FjaGUtbGluZSBpbmR1Y2VkIHJlZHVjdGlvbiBvZiBwYXJh
bGxlbCBhY2Nlc3MuCisgICAgICAgIHVpbnQ2NF90IGNhY2hlTGluZVBhZGRpbmdbMl07CisgICAg
ICAgIEF0b21pYzxzaXplX3Q+IHNlbmRlck9mZnNldDsKKyAgICB9OworICAgIEhlYWRlciYgaGVh
ZGVyKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8SGVhZGVyKj4obV9zaGFyZWRN
ZW1vcnktPmRhdGEoKSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBoZWFkZXJTaXpl
KCkgeyByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2Yoc3RkOjptYXhfYWxpZ25fdCk+
KHNpemVvZihIZWFkZXIpKTsgfQorCisgICAgc2l6ZV90IG1fZGF0YVNpemUgeyAwIH07CisgICAg
UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBTZW1hcGhvcmUgbV9zZW5kZXJXYWl0U2VtYXBob3JlOworI2VuZGlmCit9Owor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0
aW9uRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTIzMmRlY2Y2Yzc5M2E0NTc3MTY4ZTk3ZWZiNTFhYWZi
MzJmZGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXIuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
TWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3Bh
Y2UgSVBDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjsKKworLy8gSVBDIGVuY29kZXIgd2hpY2g6CisvLyAgLSBFbmNvZGVzIHRvIGEgY2FsbGVy
IGJ1ZmZlciB3aXRoIGZpeGVkIHNpemUsIGRvZXMgbm90IHJlc2l6ZSwgc3RvcHMgd2hlbiBzaXpl
IHJ1bnMgb3V0CisvLyAgLSBEb2VzIG5vdCBpbml0aWFsaXplIGFsaWdubWVudCBnYXBzCisvLwor
Y2xhc3MgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZmluYWwgeworcHVibGljOgorICAgIC8vIFN0
cmVhbSBtZXNzYWdlIG5lZWRzIHRvIGJlIGF0IGxlYXN0IHNpemUgb2YgU3RyZWFtU2V0RGVzdGlu
YXRpb25JRCBtZXNzYWdlLgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNz
YWdlU2l6ZSA9IHNpemVvZihNZXNzYWdlTmFtZSkgKyBzaXplb2YodWludDY0X3QpOworICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBhbGlnbm9mKE1lc3NhZ2VO
YW1lKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0gdHJ1ZTsKKwor
ICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50
OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1DYXBhY2l0eSkKKyAgICAgICAgOiBtX2J1ZmZlcihz
dHJlYW0pCisgICAgICAgICwgbV9idWZmZXJDYXBhY2l0eShzdHJlYW1DYXBhY2l0eSkKKyAgICB7
CisgICAgICAgICp0aGlzIDw8IG1lc3NhZ2VOYW1lOworICAgIH0KKworICAgIH5TdHJlYW1Db25u
ZWN0aW9uRW5jb2RlcigpID0gZGVmYXVsdDsKKworICAgIGJvb2wgZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQor
ICAgIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclBvaW50ZXIgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fYnVmZmVyICsgbV9lbmNvZGVkU2l6ZSkpOwor
ICAgICAgICBzaXplX3QgbmV3QnVmZmVyUG9pbnRlciA9IHJvdW5kVXBUb011bHRpcGxlT2YoYWxp
Z25tZW50LCBidWZmZXJQb2ludGVyKTsKKyAgICAgICAgaWYgKG5ld0J1ZmZlclBvaW50ZXIgPCBi
dWZmZXJQb2ludGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpbnRwdHJf
dCBhbGlnbmVkU2l6ZSA9IG1fZW5jb2RlZFNpemUgKyAobmV3QnVmZmVyUG9pbnRlciAtIGJ1ZmZl
clBvaW50ZXIpOworICAgICAgICBpZiAoIXJlc2VydmUoYWxpZ25lZFNpemUsIHNpemUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1aW50OF90KiBidWZmZXIgPSBtX2J1ZmZl
ciArIGFsaWduZWRTaXplOworICAgICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKKyAg
ICAgICAgbV9lbmNvZGVkU2l6ZSA9IGFsaWduZWRTaXplICsgc2l6ZTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBTdHJlYW1Db25u
ZWN0aW9uRW5jb2RlciYgb3BlcmF0b3I8PChUJiYgdCkKKyAgICB7CisgICAgICAgIEFyZ3VtZW50
Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4sIHZv
aWQ+OjplbmNvZGUoKnRoaXMsIHN0ZDo6Zm9yd2FyZDxUPih0KSk7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgQVNTRVJUKGlzVmFsaWQo
KSk7IHJldHVybiBtX2VuY29kZWRTaXplOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXJDYXBhY2l0eTsgfQorICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiBpc1ZhbGlkKCk7IH0KK3ByaXZhdGU6CisgICAgYm9vbCByZXNlcnZlKHNpemVfdCBhbGln
bmVkU2l6ZSwgc2l6ZV90IGFkZGl0aW9uYWxTaXplKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHNp
emUgPSBhbGlnbmVkU2l6ZSArIGFkZGl0aW9uYWxTaXplOworICAgICAgICBpZiAoc2l6ZSA8IGFs
aWduZWRTaXplIHx8IHNpemUgPiBtX2J1ZmZlckNhcGFjaXR5KSB7CisgICAgICAgICAgICBtX2J1
ZmZlckNhcGFjaXR5ID0gMDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgdWludDhfdCogbV9idWZmZXI7CisgICAg
c2l6ZV90IG1fYnVmZmVyQ2FwYWNpdHk7CisgICAgc2l6ZV90IG1fZW5jb2RlZFNpemUgeyAwIH07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ5
MGJjMDFhNDhlNzU2ZmVhNmRlMmY3ZWNiZDI3ZmQ5YzcyOWNkNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
CkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKworbmFtZXNwYWNlIElQQyB7CisK
K1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUoY29u
c3QgY2hhciogbmFtZSkKKyAgICA6IG1fbmFtZShuYW1lKQoreworfQorCit2b2lkIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OmRpc3BhdGNoKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0
aW9uKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBt
X2Z1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOworICAgICAgICBBU1NFUlQoIW1f
c2hvdWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVk
LgorICAgIH0KKyAgICB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7CisKK30KK3ZvaWQgU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZSYgY29ubmVjdGlvbikKK3sKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICAgICAgbV9jb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbik7CisgICAgICAg
IEFTU0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5v
dCBzdXBwb3J0ZWQuCisgICAgfQorICAgIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQoKTsKK30KKwor
dm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpyZW1vdmVTdHJlYW1Db25uZWN0aW9uKFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChtX3By
b2Nlc3NpbmdUaHJlYWQpOworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwor
ICAgICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uKTsKKyAgICAgICAgQVNTRVJU
KCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBv
cnRlZC4KKyAgICB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUu
c2lnbmFsKCk7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpz
dG9wKCkKK3sKKyAgICBtX3Nob3VsZFF1aXQgPSB0cnVlOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIGlmICghbV9wcm9jZXNzaW5nVGhyZWFkKQorICAgICAgICByZXR1cm47CisgICAgbV93YWtl
VXBTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkLT53YWl0Rm9yQ29t
cGxldGlvbigpOworICAgIG1fcHJvY2Vzc2luZ1RocmVhZCA9IG51bGxwdHI7CisjZW5kaWYKK30K
Kwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXAoKQoreworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25hbCgpOworI2VuZGlmCit9CisK
K0lQQzo6U2VtYXBob3JlJiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXBTZW1hcGhv
cmUoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVybiBtX3dha2VVcFNlbWFwaG9y
ZTsKKyNlbHNlCisgICAgcmV0dXJuIHsgfTsKKyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU6Ondha2VVcFByb2Nlc3NpbmdUaHJlYWQoKQoreworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIGlmIChtX3Byb2Nlc3NpbmdUaHJlYWQpIHsKKyAgICAgICAgbV93YWtlVXBT
ZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHRh
c2sgPSBbdGhpc10oKSBtdXRhYmxlIHsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAg
cHJvY2Vzc1N0cmVhbXMoKTsKKyAgICAgICAgICAgIGlmIChtX3Nob3VsZFF1aXQpIHsKKyAgICAg
ICAgICAgICAgICBwcm9jZXNzU3RyZWFtcygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLndhaXQoKTsKKyAgICAg
ICAgfQorICAgIH07CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUobV9u
YW1lLCBXVEZNb3ZlKHRhc2spLCBUaHJlYWRUeXBlOjpHcmFwaGljcywgVGhyZWFkOjpRT1M6OlVz
ZXJJbnRlcmFjdGl2ZSk7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlOjpwcm9jZXNzU3RyZWFtcygpCit7CisgICAgY29uc3RleHByIHNpemVfdCBkZWZhdWx0TWVz
c2FnZUxpbWl0ID0gMTAwMDsKKyAgICBib29sIGhhc01vcmVUb1Byb2Nlc3MgPSBmYWxzZTsKKyAg
ICBkbyB7CisgICAgICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gZnVuY3Rpb25zOwor
ICAgICAgICBIYXNoU2V0PFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4+IGNvbm5lY3Rp
b25zOworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayk7CisgICAgICAgICAgICBmdW5jdGlvbnMuc3dhcChtX2Z1bmN0aW9ucyk7CisgICAgICAgICAg
ICBjb25uZWN0aW9ucyA9IG1fY29ubmVjdGlvbnM7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChh
dXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykKKyAgICAgICAgICAgIFdURk1vdmUoZnVuY3Rpb24p
KCk7CisKKyAgICAgICAgaGFzTW9yZVRvUHJvY2VzcyA9IGZhbHNlOworICAgICAgICBmb3IgKGF1
dG8mIGNvbm5lY3Rpb24gOiBjb25uZWN0aW9ucykKKyAgICAgICAgICAgIGhhc01vcmVUb1Byb2Nl
c3MgfD0gY29ubmVjdGlvbi0+ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhkZWZhdWx0TWVzc2FnZUxp
bWl0KSA9PSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6SGFzTW9yZU1lc3NhZ2VzOworICAg
IH0gd2hpbGUgKGhhc01vcmVUb1Byb2Nlc3MpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWY3YmEzZjM0MDI5MGYzMDI0YzViODlhMGVhM2Y4MzAwOWNkODI2YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2Ug
SVBDIHsKKworY2xhc3MgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBG
dW5jdGlvbkRpc3BhdGNoZXIgeworcHVibGljOgorICAgIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUoY29uc3QgY2hhciopOworICAgIH5TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlKCkgPSBkZWZh
dWx0OworICAgIHZvaWQgYWRkU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZSYpOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZSYpOworCisgICAgdm9pZCBkaXNwYXRjaChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JikgZmluYWw7CisgICAgdm9pZCBzdG9wKCk7CisKKyAgICB2b2lkIHdha2VVcCgpOworCisgICAg
U2VtYXBob3JlJiB3YWtlVXBTZW1hcGhvcmUoKTsKK3ByaXZhdGU6CisgICAgdm9pZCB3YWtlVXBQ
cm9jZXNzaW5nVGhyZWFkKCk7CisgICAgdm9pZCBwcm9jZXNzU3RyZWFtcygpOworCisgICAgY29u
c3QgY2hhciogY29uc3QgbV9uYW1lOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFNlbWFwaG9y
ZSBtX3dha2VVcFNlbWFwaG9yZTsKKyNlbmRpZgorICAgIFJlZlB0cjxUaHJlYWQ+IG1fcHJvY2Vz
c2luZ1RocmVhZDsKKworICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hvdWxkUXVpdCB7IGZhbHNl
IH07CisKKyAgICBMb2NrIG1fbG9jazsKKyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX2Z1
bmN0aW9uczsKKyAgICBIYXNoU2V0PFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4+IG1f
Y29ubmVjdGlvbnM7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwZGEyZjRkYTJjMTVi
YTg5YmUyNzllNmMyMDBjNjYyNDE0YmNlYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEy
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgorCituYW1lc3BhY2UgSVBDIHsKKworU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0sIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0
aW9uKQorICAgICwgbV93b3JrUXVldWUod29ya1F1ZXVlKQorICAgICwgbV9idWZmZXIoV1RGTW92
ZShzdHJlYW0pKQoreworfQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdGFy
dFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKQoreworICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVR
dWV1ZSgqdGhpcywgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBtX3dvcmtRdWV1
ZS5hZGRTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIG1fY29ubmVjdGlvbi0+cmVt
b3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAg
IG1fd29ya1F1ZXVlLnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOworfQorCit2b2lkIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjplbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwgc3Rk
Ojp1bmlxdWVfcHRyPERlY29kZXI+JiYgbWVzc2FnZSkKK3sKKyAgICB7CisgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jayk7CisgICAgICAgIG1f
b3V0T2ZTdHJlYW1NZXNzYWdlcy5hcHBlbmQoV1RGTW92ZShtZXNzYWdlKSk7CisgICAgfQorICAg
IG1fd29ya1F1ZXVlLndha2VVcCgpOworfQorCitPcHRpb25hbDxTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFxdWlyZSgpCit7
CisgICAgc2l6ZV90IHJlY2VpdmVyTGltaXQgPSBzaGFyZWRTZW5kZXJPZmZzZXQoKS5sb2FkKHN0
ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICAgIGlmIChyZWNlaXZlckxpbWl0ID09IFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZykKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFu
KG1fcmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworICAgIGlmIChyZXN1bHQuc2l6ZSA8
IG1pbmltdW1NZXNzYWdlU2l6ZSkgeworICAgICAgICByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2Vu
ZGVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHJlY2VpdmVyTGltaXQsIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc3RkOjpt
ZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgICAg
IEFTU0VSVCghKHJlY2VpdmVyTGltaXQgJiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJP
ZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpKTsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IGNs
YW1wZWRMaW1pdChyZWNlaXZlckxpbWl0KTsKKyAgICAgICAgcmVzdWx0ID0gYWxpZ25lZFNwYW4o
bV9yZWNlaXZlck9mZnNldCwgcmVjZWl2ZXJMaW1pdCk7CisgICAgfQorCisgICAgaWYgKHJlc3Vs
dC5zaXplID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlOjpyZWxlYXNlKHNpemVfdCByZWFkU2l6ZSkKK3sKKyAgICBBU1NFUlQocmVhZFNpemUpOwor
ICAgIHJlYWRTaXplID0gc3RkOjptYXgocmVhZFNpemUsIG1pbmltdW1NZXNzYWdlU2l6ZSk7Cisg
ICAgc2l6ZV90IHJlY2VpdmVyT2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9mZnNldChtX3JlY2Vp
dmVyT2Zmc2V0KSArIHJlYWRTaXplKTsKKyAgICBzaXplX3Qgb2xkUmVjZWl2ZXJPZmZzZXQgPSBz
aGFyZWRSZWNlaXZlck9mZnNldCgpLmV4Y2hhbmdlKHJlY2VpdmVyT2Zmc2V0LCBzdGQ6Om1lbW9y
eV9vcmRlcl9hY3FfcmVsKTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIC8vIElmIHRoZSBz
ZW5kZXIgd3JvdGUgb3ZlciByZWNlaXZlck9mZnNldCwgaXQgbWVhbnMgdGhlIHNlbmRlciBpcyB3
YWl0aW5nLgorICAgIGlmIChvbGRSZWNlaXZlck9mZnNldCAhPSBtX3JlY2VpdmVyT2Zmc2V0KQor
ICAgICAgICBtX2J1ZmZlci5zZW5kZXJXYWl0U2VtYXBob3JlKCkuc2lnbmFsKCk7CisjZW5kaWYK
KworICAgIG1fcmVjZWl2ZXJPZmZzZXQgPSByZWNlaXZlck9mZnNldDsKK30KKworU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWdu
ZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAgICBBU1NFUlQob2Zmc2V0
IDwgZGF0YVNpemUoKSk7CisgICAgQVNTRVJUKGxpbWl0IDwgZGF0YVNpemUoKSk7CisgICAgc2l6
ZV90IGFsaWduZWQgPSBhbGlnbk9mZnNldChvZmZzZXQpOworICAgIHNpemVfdCByZXN1bHRTaXpl
ID0gMDsKKyAgICBpZiAob2Zmc2V0IDwgbGltaXQpIHsKKyAgICAgICAgaWYgKG9mZnNldCA8PSBh
bGlnbmVkICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgIHJlc3VsdFNpemUgPSBzaXpl
KGFsaWduZWQsIGxpbWl0KTsKKyAgICB9IGVsc2UgaWYgKG9mZnNldCA+IGxpbWl0KSB7CisgICAg
ICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAg
ICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfQorICAgIHJldHVybiB7
IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30KKworc2l6ZV90IFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAg
ICBpZiAob2Zmc2V0IDw9IGxpbWl0KQorICAgICAgICByZXR1cm4gbGltaXQgLSBvZmZzZXQ7Cisg
ICAgcmV0dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7Cit9CisKK3NpemVfdCBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZTo6Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3QK
K3sKKyAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUoKSAtIDEpKTsKKyAgICBy
ZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkgLSAxKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAyMGI5MjEzNmZmNmI2YTliOWUxOThkYzk3M2IzZDNhNmVhNTY2MjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSwyODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5j
bHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ci5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4K
KworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU7CisK
K2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPiwgcHJvdGVjdGVkIE1lc3NhZ2VSZWNl
aXZlUXVldWUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlKTsKK3B1YmxpYzoKKyAgICB+U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoKSBvdmVy
cmlkZSA9IGRlZmF1bHQ7CisKKyAgICBDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4g
bV9jb25uZWN0aW9uOyB9CisKKyAgICBlbnVtIERpc3BhdGNoUmVzdWx0IDogYm9vbCB7CisgICAg
ICAgIEhhc05vTWVzc2FnZXMsCisgICAgICAgIEhhc01vcmVNZXNzYWdlcworICAgIH07CisgICAg
dmlydHVhbCBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNz
YWdlTGltaXQpID0gMDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAg
ICB2b2lkIHNlbmRTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgQXJndW1lbnRzJiYu
Li4pOworCitwcm90ZWN0ZWQ6CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoSVBDOjpD
b25uZWN0aW9uJiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlJik7CisKKyAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVy
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCBzdG9wUmVjZWl2aW5nTWVz
c2FnZXNJbXBsKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisKKyAgICAv
LyBNZXNzYWdlUmVjZWl2ZVF1ZXVlCisgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9u
Jiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpIGZpbmFsOworCisgICAgc3RydWN0IFNwYW4g
eworICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXplX3Qgc2l6ZTsKKyAgICB9Owor
ICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFxdWlyZSgpOworCisgICAgdm9pZCByZWxlYXNlKHNpemVf
dCByZWFkU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VT
aXplID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1pbmltdW1NZXNzYWdlU2l6ZTsKKyAgICBz
dGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50ID0gU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXI6Om1lc3NhZ2VBbGlnbm1lbnQ7CisgICAgU3BhbiBhbGlnbmVkU3BhbihzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBzaXplKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsaW1pdCk7CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGlt
aXQpIGNvbnN0OworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zmc2V0KTsgfQorICAgIHNpemVfdCBhbGlnbk9m
ZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5hbGlnbk9mZnNldDxt
ZXNzYWdlQWxpZ25tZW50PihvZmZzZXQsIG1pbmltdW1NZXNzYWdlU2l6ZSk7IH0KKyAgICBBdG9t
aWM8c2l6ZV90PiYgc2hhcmVkU2VuZGVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuc2VuZGVy
T2Zmc2V0KCk7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKSB7
IHJldHVybiBtX2J1ZmZlci5yZWNlaXZlck9mZnNldCgpOyB9CisgICAgdWludDhfdCogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIHNpemVfdCBkYXRhU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFTaXplKCk7IH0KKworICAgIFJlZjxJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiBt
X3dvcmtRdWV1ZTsKKworICAgIHNpemVfdCBtX3JlY2VpdmVyT2Zmc2V0IHsgMCB9OworICAgIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIgbV9idWZmZXI7CisKKyAgICBMb2NrIG1fb3V0T2ZTdHJlYW1N
ZXNzYWdlc0xvY2s7CisgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiBtX291dE9m
U3RyZWFtTWVzc2FnZXM7CisKKyAgICBmcmllbmQgY2xhc3MgU3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK3ZvaWQgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJ
RCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
c2VuZGluZyB0byBidWZmZXIuCisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVu
Y29kZXI+KElQQzo6TWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQp
OworICAgICgqZW5jb2RlciA8PCAuLi4gPDwgYXJndW1lbnRzKTsKKyAgICBtX2Nvbm5lY3Rpb24t
PnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKKy8vIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb24gcmVwcmVzZW50cyB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHN0cmVhbSBzZW5kZXIg
YW5kIHJlY2VpdmVyLCBhcyB1c2VkIGJ5IHRoZSByZWNlaXZlci4KKy8vIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb246CisvLyAgKiBIb2xkcyB0aGUgbWVzc2FnZXMgdG93YXJkcyB0aGUgcmVjZWl2ZXIu
CisvLyAgKiBTZW5kcyB0aGUgcmVwbGllcyBiYWNrIHRvIHRoZSBzZW5kZXIgdmlhIHRoZSBzdHJl
YW0gb3Igbm9ybWFsIENvbm5lY3Rpb24gZmFsbGJhY2suCisvLworLy8gUmVjZWl2ZXIgdGVtcGxh
dGUgY29udHJhY3Q6CisvLyAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2UmLCBEZWNvZGVyJik7CisvLwordGVtcGxhdGU8dHlwZW5hbWUgUmVj
ZWl2ZXI+CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFN0cmVhbVNl
cnZlckNvbm5lY3Rpb24+IGNyZWF0ZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3
b3JrUXVldWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgd29ya1F1ZXVl
KSk7CisgICAgfQorICAgIH5TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWwgPSBkZWZhdWx0
OworCisgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyJiwgUmVjZWl2ZXJO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICAvLyBTdG9wcyB0aGUgbWVzc2FnZSBy
ZWNlaXB0LiBOb3RlOiBhbHJlYWR5IHJlY2VpdmVkIG1lc3NhZ2VzIG1pZ2h0IHN0aWxsIGJlIGRl
bGl2ZXJlZC4KKyAgICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2Ugb3ZlcnJpZGVzLgorICAgIERpc3BhdGNoUmVzdWx0IGRpc3BhdGNoU3RyZWFtTWVzc2FnZXMo
c2l6ZV90IG1lc3NhZ2VMaW1pdCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgU3RyZWFtU2VydmVy
Q29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
JiYgc3RyZWFtQnVmZmVyLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUpCisg
ICAgICAgIDogU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoY29ubmVjdGlvbiwgV1RGTW92ZShz
dHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpCisgICAgeworICAgIH0KKyAgICBib29sIHByb2Nlc3NT
ZXRTdHJlYW1EZXN0aW5hdGlvbklEKERlY29kZXImJiwgUmVmUHRyPFJlY2VpdmVyPiYgY3VycmVu
dFJlY2VpdmVyKTsKKyAgICBib29sIGRpc3BhdGNoU3RyZWFtTWVzc2FnZShEZWNvZGVyJiYsIFJl
Y2VpdmVyJik7CisgICAgYm9vbCBkaXNwYXRjaE91dE9mU3RyZWFtTWVzc2FnZShEZWNvZGVyJiYp
OworICAgIExvY2sgbV9yZWNlaXZlcnNMb2NrOworICAgIHVzaW5nIFJlY2VpdmVyc01hcCA9IEhh
c2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90PiwgUmVmPFJlY2VpdmVyPj47CisgICAg
UmVjZWl2ZXJzTWFwIG1fcmVjZWl2ZXJzOworCisgICAgdWludDY0X3QgbV9jdXJyZW50RGVzdGlu
YXRpb25JRCA9IDA7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK3ZvaWQgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoUmVj
ZWl2ZXImIHJlY2VpdmVyLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklEKQoreworICAgIHsKKyAgICAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihz
dGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsKKyAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICBBU1NF
UlQoIW1fcmVjZWl2ZXJzLmNvbnRhaW5zKGtleSkpOworICAgICAgICBtX3JlY2VpdmVycy5hZGQo
a2V5LCBtYWtlUmVmKHJlY2VpdmVyKSk7CisgICAgfQorICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChyZWNlaXZlck5hbWUsIGRlc3RpbmF0
aW9uSUQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK3ZvaWQgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5h
bWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKHJlY2VpdmVyTmFt
ZSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNf
Y2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgQVNTRVJUKG1fcmVjZWl2ZXJz
LmNvbnRhaW5zKGtleSkpOworICAgIG1fcmVjZWl2ZXJzLnJlbW92ZShrZXkpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpEaXNw
YXRjaFJlc3VsdCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJl
YW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KQoreworICAgIFJlZlB0cjxSZWNlaXZlcj4g
Y3VycmVudFJlY2VpdmVyOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgV1RGOjppc1ZhbGlkKFJl
Y2VpdmVyTmFtZSkuCisgICAgdWludDhfdCBjdXJyZW50UmVjZWl2ZXJOYW1lID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4oUmVjZWl2ZXJOYW1lOjpJbnZhbGlkKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbWVzc2FnZUxpbWl0OyArK2kpIHsKKyAgICAgICAgYXV0byBzcGFuID0gdHJ5QXF1
aXJlKCk7CisgICAgICAgIGlmICghc3BhbikKKyAgICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJl
c3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgSVBDOjpEZWNvZGVyIGRlY29kZXIgeyBzcGFu
LT5kYXRhLCBzcGFuLT5zaXplLCBtX2N1cnJlbnREZXN0aW5hdGlvbklEIH07CisgICAgICAgIGlm
ICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0
Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpTZXRTdHJl
YW1EZXN0aW5hdGlvbklEKSB7CisgICAgICAgICAgICBpZiAoIXByb2Nlc3NTZXRTdHJlYW1EZXN0
aW5hdGlvbklEKFdURk1vdmUoZGVjb2RlciksIGN1cnJlbnRSZWNlaXZlcikpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSkgeworICAgICAgICAgICAg
aWYgKCFkaXNwYXRjaE91dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3VycmVudFJlY2VpdmVyTmFt
ZSAhPSBzdGF0aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSkp
IHsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90
PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgICAgICBjdXJyZW50UmVj
ZWl2ZXIgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGlmICghY3VycmVudFJlY2VpdmVy
KSB7CisgICAgICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KGN1cnJlbnRSZWNlaXZlck5hbWUpLCBtX2N1cnJlbnREZXN0aW5hdGlvbklEKTsKKyAg
ICAgICAgICAgIGlmICghUmVjZWl2ZXJzTWFwOjppc1ZhbGlkS2V5KGtleSkpIHsKKyAgICAgICAg
ICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVz
dWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICAgICAgY3VycmVudFJlY2Vp
dmVyID0gbV9yZWNlaXZlcnMuZ2V0KGtleSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFjdXJy
ZW50UmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIC8vIFZhbGlkIHNjZW5hcmlvIGlzIHdoZW4gcmVj
ZWl2ZXIgaGFzIGJlZW4gcmVtb3ZlZCwgYnV0IHRoZXJlIGFyZSBtZXNzYWdlcyBmb3IgaXQgaW4g
dGhlIGJ1ZmZlci4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaW5jZSB3ZSBkbyBub3QgaGF2ZSBh
IHJlY2VpdmVyLCB3ZSBkb24ndCBrbm93IGhvdyB0byBkZWNvZGUgdGhlIG1lc3NhZ2UuCisgICAg
ICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIG11c3QgdGltZW91dCBldmVyeSByZWNlaXZlciBpbiB0
aGUgc3RyZWFtIGNvbm5lY3Rpb24uCisgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2UgYXNzZXJ0
IHRoYXQgdGhlIHJlY2VpdmVycyBhcmUgZW1wdHksIGFzIHdlIG9ubHkgaGF2ZSB1cCB0byBvbmUg
cmVjZWl2ZXIgaW4KKyAgICAgICAgICAgIC8vIGEgc3RyZWFtIGNvbm5lY3Rpb24gdW50aWwgcG9z
c2liaWxpdHkgb2Ygc2tpcHBpbmcgaXMgaW1wbGVtZW50ZWQgcHJvcGVybHkuCisgICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgICAgICBB
U1NFUlQobV9yZWNlaXZlcnMuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiBEaXNwYXRj
aFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWRpc3BhdGNo
U3RyZWFtTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpLCAqY3VycmVudFJlY2VpdmVyKSkKKyAgICAg
ICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICB9CisgICAg
cmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNNb3JlTWVzc2FnZXM7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6
cHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoRGVjb2RlciYmIGRlY29kZXIsIFJlZlB0cjxS
ZWNlaXZlcj4mIGN1cnJlbnRSZWNlaXZlcikKK3sKKyAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklE
ID0gMDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlc3RpbmF0aW9uSUQpKSB7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAobV9j
dXJyZW50RGVzdGluYXRpb25JRCAhPSBkZXN0aW5hdGlvbklEKSB7CisgICAgICAgIG1fY3VycmVu
dERlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgICAgICBjdXJyZW50UmVjZWl2ZXIg
PSBudWxscHRyOworICAgIH0KKyAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBvc2l0
aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZl
cj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoU3RyZWFt
TWVzc2FnZShEZWNvZGVyJiYgZGVjb2RlciwgUmVjZWl2ZXImIHJlY2VpdmVyKQoreworICAgIHJl
Y2VpdmVyLmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKCp0aGlzLCBkZWNvZGVyKTsKKyAgICBpZiAo
IWRlY29kZXIuaXNWYWxpZCgpKSB7CisgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBvc2l0
aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZl
cj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoT3V0T2ZT
dHJlYW1NZXNzYWdlKERlY29kZXImJiBkZWNvZGVyKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiBtZXNzYWdlOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X291dE9mU3RyZWFtTWVzc2FnZXNMb2NrKTsKKyAgICAgICAgaWYgKG1fb3V0T2ZTdHJlYW1NZXNz
YWdlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1lc3Nh
Z2UgPSBtX291dE9mU3RyZWFtTWVzc2FnZXMudGFrZUZpcnN0KCk7CisgICAgfQorICAgIGlmICgh
bWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPFJlY2VpdmVyPiBy
ZWNlaXZlcjsKKyAgICB7CisgICAgICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGlj
X2Nhc3Q8dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgbWVzc2FnZS0+
ZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2Vp
dmVyc0xvY2spOworICAgICAgICByZWNlaXZlciA9IG1fcmVjZWl2ZXJzLmdldChrZXkpOworICAg
IH0KKyAgICBpZiAocmVjZWl2ZXIpIHsKKyAgICAgICAgcmVjZWl2ZXItPmRpZFJlY2VpdmVTdHJl
YW1NZXNzYWdlKCp0aGlzLCAqbWVzc2FnZSk7CisgICAgICAgIGlmICghbWVzc2FnZS0+aXNWYWxp
ZCgpKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgfQorICAgIC8vIElmIHJlY2VpdmVyIGRvZXMgbm90IGV4aXN0
IGlmIGl0IGhhcyBiZWVuIHJlbW92ZWQgYnV0IG1lc3NhZ2VzIGFyZSBzdGlsbCBwZW5kaW5nIHRv
IGJlCisgICAgLy8gcHJvY2Vzc2VkLiBJdCdzIG9rIHRvIHNraXAgc3VjaCBtZXNzYWdlcy4KKyAg
ICAvLyBGSVhNRTogTm90ZSwgY29ycmVzcG9uZGluZyBza2lwIGlzIG5vdCBwb3NzaWJsZSBhdCB0
aGUgbW9tZW50IGZvciBzdHJlYW0gbWVzc2FnZXMuCisgICAgcmVsZWFzZShkZWNvZGVyLmN1cnJl
bnRCdWZmZXJQb3NpdGlvbigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmgKaW5kZXggNzg1NGZhOGYxODY4ZmI4
ZTQ1NjIyODlmZGRmNmYyNzk1YWYyZDkwZC4uODNkOTlmMGNiYzhmZTA0ODIwYjQ3ODNjOWMwNzZh
YjU3YTNlYWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2Ev
TWFjaFBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9y
dC5oCkBAIC0yNSw5ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQXJndW1l
bnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKLSNpbmNsdWRlICJEZWNvZGVyLmgi
Ci0jaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgSVBDIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggYTZmZmY0N2QzNDVkZWNiZGY5MWU2MWMy
NzNiODYyYmYwYmYzY2Y2Yy4uZDVmZTlhMWI4YjliZmZhY2I2NjkwZmJiMjJlYjQ4MzIxMjRmY2Fi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yNCw4ICsy
NCw5IEBAIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiAKK2Zyb20g
bW9kZWwgaW1wb3J0IE1lc3NhZ2VSZWNlaXZlciwgTWVzc2FnZQogZnJvbSB3ZWJraXQgaW1wb3J0
IHBhcnNlcgotZnJvbSB3ZWJraXQubW9kZWwgaW1wb3J0IEJVSUxUSU5fQVRUUklCVVRFLCBBU1lO
Q19BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURQorZnJvbSB3ZWJraXQubW9kZWwgaW1w
b3J0IEJVSUxUSU5fQVRUUklCVVRFLCBBU1lOQ19BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJ
QlVURSwgU1RSRUFNX0FUVFJJQlVURSwgV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUKIAogX2xp
Y2Vuc2VfaGVhZGVyID0gIiIiLyoKICAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTUzLDEzICs1NCwxMSBAQCBfbGljZW5zZV9oZWFk
ZXIgPSAiIiIvKgogCiAiIiIKIAotV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUgPSAnV2FudHND
b25uZWN0aW9uJwogV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUgPSAnV2FudHNEaXNw
YXRjaE1lc3NhZ2UnCiBXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSA9ICdX
YW50c0FzeW5jRGlzcGF0Y2hNZXNzYWdlJwogTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSA9ICdM
ZWdhY3lSZWNlaXZlcicKIE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSA9ICdOb3RS
ZWZDb3VudGVkJwogCi0KIGRlZiByZWNlaXZlcl9lbnVtZXJhdG9yX29yZGVyX2tleShyZWNlaXZl
cl9uYW1lKToKICAgICBpZiByZWNlaXZlcl9uYW1lID09ICdJUEMnOgogICAgICAgICByZXR1cm4g
MQpAQCAtMjA2LDcgKzIwNSw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihy
ZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNpbmcg
QXN5bmNSZXBseSA9ICVzQXN5bmNSZXBseTtcbicgJSBtZXNzYWdlLm5hbWUpCiAgICAgICAgIGVs
aWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSk6CiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgdXNpbmcgRGVsYXllZFJlcGx5ID0gJXNEZWxheWVkUmVw
bHk7XG4nICUgbWVzc2FnZS5uYW1lKQotICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUo
U1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRU
UklCVVRFKToKKyAgICAgICAgaWYgKG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19B
VFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpKSBhbmQg
bm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CiAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mJykKICAgICAgICAgICAgIGlmIGxlbihzZW5k
X3BhcmFtZXRlcnMpOgogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJXMnICUgY29t
cGxldGlvbl9oYW5kbGVyX3BhcmFtZXRlcnMpCkBAIC0yNTQsNiArMjUzLDcgQEAgZGVmIHR5cGVz
X3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICByZXR1cm4gZnJvemVuc2V0
KFsKICAgICAgICAgJ0lQQzo6RGF0YVJlZmVyZW5jZScsCiAgICAgICAgICdJUEM6OkZvbnRSZWZl
cmVuY2UnLAorICAgICAgICAnSVBDOjpTZW1hcGhvcmUnLAogICAgICAgICAnTWFjaFNlbmRSaWdo
dCcsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKQEAgLTU2MywxMCAr
NTYzLDE1IEBAIGRlZiBzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKToK
ICAgICAgICAgZGlzcGF0Y2hfZnVuY3Rpb24gKz0gJ0FzeW5jJwogCiAgICAgd2FudHNfY29ubmVj
dGlvbiA9IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1l
c3NhZ2UuaGFzX2F0dHJpYnV0ZShXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSkKKyAgICBtYXli
ZV9yZXBseV9lbmNvZGVyID0gIiwgKnJlcGx5RW5jb2RlciIKKyAgICBpZiByZWNlaXZlci5oYXNf
YXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAgICAgICBtYXliZV9yZXBseV9lbmNvZGVy
ID0gJycKKyAgICBlbGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJV
VEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICBt
YXliZV9yZXBseV9lbmNvZGVyID0gJywgcmVwbHlFbmNvZGVyJwogCiAgICAgcmVzdWx0ID0gW10K
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6JXM6OiVzOjpuYW1lKCkpIHtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1l
KSkKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4o
JXNkZWNvZGVyLCAlc3JlcGx5RW5jb2RlciwgdGhpcywgJiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVu
Y3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJ2Nvbm5lY3Rpb24sICcgaWYgd2Fu
dHNfY29ubmVjdGlvbiBlbHNlICcnLCAnJyBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hS
T05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRF
KSBlbHNlICcqJywgaGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQorICAgIHJl
c3VsdC5hcHBlbmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglc2RlY29kZXIl
cywgdGhpcywgJiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1l
c3NhZ2UubmFtZSwgJ2Nvbm5lY3Rpb24sICcgaWYgd2FudHNfY29ubmVjdGlvbiBlbHNlICcnLCBt
YXliZV9yZXBseV9lbmNvZGVyLCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKSkp
CiAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQogICAgIHJlc3VsdC5hcHBl
bmQoJyAgICB9XG4nKQogICAgIHJldHVybiBzdXJyb3VuZF9pbl9jb25kaXRpb24oJycuam9pbihy
ZXN1bHQpLCBtZXNzYWdlLmNvbmRpdGlvbikKQEAgLTg2Myw3ICs4NjgsNyBAQCBkZWYgZ2VuZXJh
dGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgaWYgbWVzc2FnZS5yZXBseV9w
YXJhbWV0ZXJzICE9IE5vbmUgYW5kIChtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNf
QVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSk6CiAg
ICAgICAgICAgICBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQogCi0g
ICAgaWYgZGVsYXllZF9vcl9hc3luY19tZXNzYWdlczoKKyAgICBpZiBkZWxheWVkX29yX2FzeW5j
X21lc3NhZ2VzIGFuZCBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRF
KToKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIE1lc3NhZ2VzIHtcblxubmFtZXNw
YWNlICVzIHtcblxuJyAlIHJlY2VpdmVyLm5hbWUpCiAKICAgICAgICAgZm9yIG1lc3NhZ2UgaW4g
ZGVsYXllZF9vcl9hc3luY19tZXNzYWdlczoKQEAgLTkxMSwyNSArOTE2LDQ0IEBAIGRlZiBnZW5l
cmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgYXN5bmNfbWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpCiAKLSAgICBpZiBhc3luY19tZXNzYWdl
cyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklC
VVRFKSBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NB
R0VfQVRUUklCVVRFKToKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2
ZSVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNf
YXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQorICAgIGlmIHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAo
cmVjZWl2ZXIubmFtZSkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgICAgIGlm
IG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJ
QlVURSk6CisgICAgICAgIGFzc2VydChyZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VO
VEVEX1JFQ0VJVkVSX0FUVFJJQlVURSkpCisgICAgICAgIGFzc2VydChub3QgcmVjZWl2ZXIuaGFz
X2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkpCisgICAgICAgIGFz
c2VydChub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSkpCisKKyAgICAgICAgcmVzdWx0ICs9IFthc3luY19tZXNzYWdlX3N0YXRl
bWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gYXN5bmNfbWVzc2FnZXNdCisg
ICAgICAgIHJlc3VsdCArPSBbc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2Fn
ZSkgZm9yIG1lc3NhZ2UgaW4gc3luY19tZXNzYWdlc10KKworICAgICAgICBpZiAocmVjZWl2ZXIu
c3VwZXJjbGFzcyk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJXM6OmRpZFJlY2Vp
dmVTdHJlYW1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBl
cmNsYXNzKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBV
TlVTRURfUEFSQU0oZGVjb2Rlcik7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTtcbicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd9
XG4nKQorICAgIGVsaWYgYXN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShX
QU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0
ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CisgICAgICAgIHJlY2Vp
dmVfdmFyaWFudCA9IHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdB
Q1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3Zv
aWQgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVfdmFyaWFu
dCkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisgICAgICAgIGlmIG5vdCAocmVjZWl2
ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpIG9yIHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSkpOgogICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpO1xuJykK
IAogICAgICAgICByZXN1bHQgKz0gW2FzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBt
ZXNzYWdlKSBmb3IgbWVzc2FnZSBpbiBhc3luY19tZXNzYWdlc10KKwogICAgICAgICBpZiByZWNl
aXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSBvciBy
ZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklC
VVRFKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGlzcGF0Y2hNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpKVxuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICAgICAgcmV0dXJuO1xuJykKICAgICAgICAgaWYgKHJlY2VpdmVyLnN1cGVyY2xhc3MpOgotICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcykpCisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xhc3MsIHJlY2VpdmVfdmFyaWFudCkpCiAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGNv
bm5lY3Rpb24pO1xuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFS
QU0oZGVjb2Rlcik7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpO1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKIAotICAgIGlm
IHN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9N
RVNTQUdFX0FUVFJJQlVURSk6CisgICAgaWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RS
RUFNX0FUVFJJQlVURSkgYW5kIChzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1
dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKToKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnXG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlU3lu
YyVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcilcbicgJSAo
cmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKExF
R0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQogICAgICAgICByZXN1bHQuYXBwZW5k
KCd7XG4nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
c191bml0dGVzdC5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5p
dHRlc3QucHkKaW5kZXggZTRkZWU3ZWIwYWY3MDhmZDUwN2Y0Yzk2ZmFlNGUyNWUxNjU2YzA4Yi4u
NDQ0MDliODg3ZGY1NzI3NTMxY2FmODI3MGU1NWFiYWI0OTc0MTQ4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CkBAIC0zOSw3ICsz
OSw3IEBAIHRlc3RzX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihtb2R1bGVfZGlyZWN0b3J5LCAn
dGVzdHMnKQogCiByZXNldF9yZXN1bHRzID0gRmFsc2UKIAotX3Rlc3RfcmVjZWl2ZXJfbmFtZXMg
PSBbJ1Rlc3RXaXRoU3VwZXJjbGFzcycsICdUZXN0V2l0aExlZ2FjeVJlY2VpdmVyJywgJ1Rlc3RX
aXRob3V0QXR0cmlidXRlcycsICdUZXN0V2l0aElmTWVzc2FnZScsICdUZXN0V2l0aFNlbWFwaG9y
ZSddCitfdGVzdF9yZWNlaXZlcl9uYW1lcyA9IFsnVGVzdFdpdGhTdXBlcmNsYXNzJywgJ1Rlc3RX
aXRoTGVnYWN5UmVjZWl2ZXInLCAnVGVzdFdpdGhvdXRBdHRyaWJ1dGVzJywgJ1Rlc3RXaXRoSWZN
ZXNzYWdlJywgJ1Rlc3RXaXRoU2VtYXBob3JlJywgJ1Rlc3RXaXRoU3RyZWFtJywgJ1Rlc3RXaXRo
U3RyZWFtQnVmZmVyJ10KIAogCiBkZWYgcmVjZWl2ZXJfaGVhZGVyX2ZpbGVfbmFtZShyZWNlaXZl
cl9uYW1lKToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5CmluZGV4IGFjMzg2ODkw
NWNmY2QzMGE4YzYzNmYzZmUwNDdhNzRhNGEzMTRhODMuLmZmNTMxMmU5N2FjMDEwMGNmYThiYzk2
NDgxZTdmYTUzMmEyY2ZjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbW9kZWwucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQpA
QCAtMjcsNiArMjcsOCBAQCBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDb3VudGVyLCBkZWZhdWx0
ZGljdAogQlVJTFRJTl9BVFRSSUJVVEUgPSAiQnVpbHRpbiIKIEFTWU5DX0FUVFJJQlVURSA9ICJB
c3luYyIKIFNZTkNIUk9OT1VTX0FUVFJJQlVURSA9ICdTeW5jaHJvbm91cycKK1NUUkVBTV9BVFRS
SUJVVEUgPSAiU3RyZWFtIgorV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUgPSAnV2FudHNDb25u
ZWN0aW9uJwogCiBjbGFzcyBNZXNzYWdlUmVjZWl2ZXIob2JqZWN0KToKICAgICBkZWYgX19pbml0
X18oc2VsZiwgbmFtZSwgc3VwZXJjbGFzcywgYXR0cmlidXRlcywgbWVzc2FnZXMsIGNvbmRpdGlv
bik6CkBAIC03Miw3ICs3NCw5IEBAIGlwY19yZWNlaXZlciA9IE1lc3NhZ2VSZWNlaXZlcihuYW1l
PSJJUEMiLCBzdXBlcmNsYXNzPU5vbmUsIGF0dHJpYnV0ZXM9W0JVSUxUSU5fCiAgICAgTWVzc2Fn
ZSgnV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JV
SUxUSU5fQVRUUklCVVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSks
CiAgICAgTWVzc2FnZSgnU3luY01lc3NhZ2VSZXBseScsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJ
TFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSksCiAgICAgTWVzc2FnZSgnSW5pdGlhbGl6
ZUNvbm5lY3Rpb24nLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29u
ZGl0aW9uPSJQTEFURk9STShDT0NPQSkiKSwKLSAgICBNZXNzYWdlKCdMZWdhY3lTZXNzaW9uU3Rh
dGUnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5v
bmUpCisgICAgTWVzc2FnZSgnTGVnYWN5U2Vzc2lvblN0YXRlJywgW10sIFtdLCBhdHRyaWJ1dGVz
PVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKKyAgICBNZXNzYWdlKCdTZXRT
dHJlYW1EZXN0aW5hdGlvbklEJywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVU
RV0sIGNvbmRpdGlvbj1Ob25lKSwKKyAgICBNZXNzYWdlKCdQcm9jZXNzT3V0T2ZTdHJlYW1NZXNz
YWdlJywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1O
b25lKQogXSwgY29uZGl0aW9uPU5vbmUpCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvTWFrZWZpbGUKaW5kZXggYjFkZDc5ODg2NWE1MTU0OTgyMGI3MGRiZGI2MWFjZDZl
YWNiYzFlOC4uYjI5NWI4Yzc4ZGMyZmFkNWJlMWI2OTE2N2Y1YjUxYTJjMGIxMmVmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCkBAIC0xLDIgKzEsMiBA
QAogYWxsOgotCXB5dGhvbiAuLi8uLi9nZW5lcmF0ZS1tZXNzYWdlLXJlY2VpdmVyLnB5IC4gVGVz
dFdpdGhTdXBlcmNsYXNzIFRlc3RXaXRoTGVnYWN5UmVjZWl2ZXIgVGVzdFdpdGhvdXRBdHRyaWJ1
dGVzIFRlc3RXaXRoSWZNZXNzYWdlIFRlc3RXaXRoU2VtYXBob3JlCisJcHl0aG9uIC4uLy4uL2dl
bmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgLiBUZXN0V2l0aFN1cGVyY2xhc3MgVGVzdFdpdGhM
ZWdhY3lSZWNlaXZlciBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgVGVzdFdpdGhJZk1lc3NhZ2UgVGVz
dFdpdGhTZW1hcGhvcmUgVGVzdFdpdGhTdHJlYW0gVGVzdFdpdGhTdHJlYW1CdWZmZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcApp
bmRleCA0YzZlYzJlNjc5NGM1MWVmMmRkYTgzZmM2M2I2NjM5MGQwNjg2YjAyLi42ZDFiZjVmMWQy
Y2M2YWRkOGIxMmQ1NWI2YjgyNzM5MDQwMzQxNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCkBAIC0xMzAsNiArMTMwLDEw
IEBAIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lIG5hbWUpCiAgICAgICAgIHJl
dHVybiAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2Fj
eVNlc3Npb25TdGF0ZToKICAgICAgICAgcmV0dXJuICJMZWdhY3lTZXNzaW9uU3RhdGUiOworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2U6CisgICAgICAgIHJl
dHVybiAiUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
U2V0U3RyZWFtRGVzdGluYXRpb25JRDoKKyAgICAgICAgcmV0dXJuICJTZXRTdHJlYW1EZXN0aW5h
dGlvbklEIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OgogICAgICAg
ICByZXR1cm4gIlN5bmNNZXNzYWdlUmVwbHkiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RX
aXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CkBAIC0yMTcsNiArMjIxLDggQEAg
UmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICAg
ICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOwogICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6
OkxlZ2FjeVNlc3Npb25TdGF0ZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZT
dHJlYW1NZXNzYWdlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9u
SUQ6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseToKICAgICAgICAgcmV0
dXJuIFJlY2VpdmVyTmFtZTo6SVBDOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3Vw
ZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CkBAIC0zOTAsNiArMzk2LDEwIEBAIGJvb2wg
aXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogI2VuZGlmCiAgICAg
aWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2Fn
ZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5h
dGlvbklEKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmluZGV4IDU3NzYxMjEyZmRkMjljZjFlMDlmN2ViMDM3
MDI3Njg2ZjFkNDlhNzMuLmMzZTk3MDUxMjE5OGIyMjkyODg4YmI4YmZiMGQ4ZDc1NDBlNjJjM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5h
bWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFt
ZXMuaApAQCAtOTAsNiArOTAsOCBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3Qg
ewogICAgICwgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1RvdWNoRXZlbnQKICAgICAsIEluaXRpYWxp
emVDb25uZWN0aW9uCiAgICAgLCBMZWdhY3lTZXNzaW9uU3RhdGUKKyAgICAsIFByb2Nlc3NPdXRP
ZlN0cmVhbU1lc3NhZ2UKKyAgICAsIFNldFN0cmVhbURlc3RpbmF0aW9uSUQKICAgICAsIFN5bmNN
ZXNzYWdlUmVwbHkKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVw
bHkKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rp
b25SZXBseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQwZjUyOGM2OWNk
ZWZkZGE5YzQ4Njc5MTM4YzYzOGI4YWMwY2IzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KQEAg
LTAsMCArMSwyNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
IFRlc3RzIFN0cmVhbSByZWNlaXZlciBhdHRyaWJ1dGUuCittZXNzYWdlcyAtPiBUZXN0V2l0aFN0
cmVhbSBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CisgICAgdm9pZCBTZW5kU3RyaW5nKFN0cmluZyB1
cmwpCisgICAgdm9pZCBTZW5kU3RyaW5nU3luY2hyb25pemVkKFN0cmluZyB1cmwpIC0+IChpbnQ2
NF90IHJldHVybikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjExNzBhYzg5YTI1ZjAzOTIxOWZlNDE4MTA1YjJjMWQwNGFlMGM3ZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtQnVmZmVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUZXN0cyBTdHJlYW0gcmVjZWl2ZXIgYXR0cmlidXRl
LgorbWVzc2FnZXMgLT4gVGVzdFdpdGhTdHJlYW1CdWZmZXIgIHsKKyAgICB2b2lkIFNlbmRTdHJl
YW1CdWZmZXIoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZm
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzlj
OTI0MGE0ZWIxYWI1NTc0MDk2MDIyOTFkYzEyNzMxOTg3ZjA1NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXIuaCIKKwor
I2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVk
ZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVm
ZmVyTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgVGVzdFdpdGhTdHJl
YW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjpuYW1lKCkpIHsKKyAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpzZW5kU3Ry
ZWFtQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVTRURfUEFSQU0oY29u
bmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5o
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZl
ck1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEyNGViZGQyMDBmMzM5MDQ3N2RmYWY3Y2Q4NTcxOTFi
ZDUzYjI4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oCkBAIC0wLDAgKzEsNjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgor
I2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOworfQorCitu
YW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyIHsKKwor
c3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sK
KyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOworfQor
CitjbGFzcyBTZW5kU3RyZWFtQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciY+OworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXI7IH0KKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRTdHJlYW1CdWZmZXIo
Y29uc3QgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBzdHJlYW0pCisgICAgICAgIDogbV9h
cmd1bWVudHMoc3RyZWFtKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAg
fQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVh
bUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3
ZmEyYWQ3ZDUwNjMwMGYzY2NiMzkwZjE5NzI1OWQ5MGU2OTNmMzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3Ry
ZWFtQnVmZmVyIHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbUJ1ZmZlcgorfSAv
LyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODM5ODg1NWFkNTZlOTUxOTk3YzlkMmFiM2Y4ODgwOTRjODg5MjMyNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW0u
aCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgor
I2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIFRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6
OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpCit7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVz
dFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nPihkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFt
OjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9uaXplZD4o
ZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtOjpzZW5kU3RyaW5nU3luY2hyb25pemVkKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAg
VU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTBiZmViYWIyMzcyYzFmNjYwNWM1NTg5NDU5MzhiZjFlNGU3YWFmYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNz
YWdlcy5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2Fn
ZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
CituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtIHsKKworc3Rh
dGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAg
ICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtOworfQorCitjbGFzcyBT
ZW5kU3RyaW5nIHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNv
bnN0IFN0cmluZyY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmc7IH0KKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRTdHJp
bmcoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsK
KyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3Vt
ZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQgewor
cHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47
CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNz
YWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZ1N5bmNocm9uaXplZDsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6
dHVwbGU8aW50NjRfdCY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxp
bnQ2NF90PjsKKyAgICBleHBsaWNpdCBTZW5kU3RyaW5nU3luY2hyb25pemVkKGNvbnN0IFN0cmlu
ZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbQorfSAvLyBuYW1lc3BhY2Ug
TWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MmM1YTA3OGRlMDFlYzE0MzBmODk0ZjIwY2I5YzJmOTE1NWU3Y2FiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3Nh
Z2VzUmVwbGllcy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbSB7
CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0KK30gLy8gbmFtZXNwYWNlIE1lc3Nh
Z2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCA1OWJkZDkxMDFjOTFkZWRjOTgyNDU1ZTc0OWIyODE0NGM5MzU5
NDAxLi4zYTQzNDIwZWExYjIxN2EwZGFiNjU2Yjc3ZjVlYjg0NGRiOWVhZTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTE0OCw2ICsxNDgsMTAgQEAgUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5j
cHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAgQG5vLXVuaWZ5CiBQ
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlci5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVj
dGlvbi5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBAbm8t
dW5pZnkKIAogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIEBuby11bmlm
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmgKaW5kZXggYzMzMDc4MjViMjAwODZkZWQ0Yzg2YzY0ODhjZTVkZDU3ZWMwYzM1OC4uODk1MjA4
YzNiYzIyNmQ2ZmIxMjg2MWRhNDM3Y2RhMzgxZjQ4ZDYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAppbmRleCAzMDFkMGVkODMwZGJlZDkwOGNiYjI3ODg2ZjA0YThmZWVhOWZkODllLi4yM2FiMTBk
NjNhNGY0YTNmZDIwY2VkNGQ3MzAxNzNmNDc1ZGM3ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94
eS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVz
c2FnZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAj
aW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUxODhjYjkzYjQwZGI0NmU1MDky
ZDVmMDM5ZThjYmVlMzE4ZWQxM2IuLmI2NTRhMjNhZDQ5MzczZTJiNjQ1YTMzODViY2VmYzFhZjJl
MWFjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTMzMSw2ICsxMzMxLDE3IEBACiAJCTdCNDgzRjIwMjVDRERBOUMwMDEyMDQ4NiAv
KiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oICovOyB9OwogCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5j
cHAgKi87IH07CiAJCTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAvKiBGdW5jdGlvbkRpc3BhdGNo
ZXJNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogRnVuY3Rpb25EaXNwYXRj
aGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OworCQk3QjczMTIyODI1Qzk4OEFBMDAzQjI3
OTYgLyogU2VtYXBob3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCNzMxMjI2MjVDOTg4QUEwMDNCMjc5NiAvKiBTZW1hcGhvcmUuY3BwICovOyB9
OworCQk3QjczMTIyOTI1Qzk4OEFCMDAzQjI3OTYgLyogU2VtYXBob3JlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIyNzI1Qzk4OEFBMDAzQjI3
OTYgLyogU2VtYXBob3JlLmggKi87IH07CisJCTdCNzMxMjNBMjVDQzg1MjUwMDNCMjc5NiAvKiBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oICovOyB9OworCQk3QjczMTIzQjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZS5jcHAgKi87IH07CisJCTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1D
bGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjczMTIzMzI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5oICovOyB9OworCQk3QjczMTIzRDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAg
Ki87IH07CisJCTdCNzMxMjNFMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjczMTIzNTI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oICov
OyB9OworCQk3QjczMTIzRjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qjcz
MTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi87IH07
CisJCTdCNzMxMjQwMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM3
MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJ
N0I3MzEyNDEyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM4MjVDQzg1
MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CisJCTdCNzMxMjQy
MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzkyNUNDODUyNTAwM0Iy
Nzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi87IH07CiAJCTdDMDY1RjJDMUM4Q0Q5
NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5NUYw
MEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLzsgfTsKIAkJ
N0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0Ew
MDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQ
SURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggKi87IH07CkBA
IC00NTMzLDYgKzQ1NDQsMTggQEAKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3Nh
Z2VSZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBGdW5jdGlvbkRpc3BhdGNoZXJNZXNzYWdl
UmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bmN0aW9u
RGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMjYyNUM5ODhBQTAwM0IyNzk2IC8qIFNl
bWFwaG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZW1hcGhv
cmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIyNzI1Qzk4OEFBMDAz
QjI3OTYgLyogU2VtYXBob3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNl
bWFwaG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIyQTI1Qzk4OEM2
MDAzQjI3OTYgLyogU2VtYXBob3JlRGFyd2luLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNlbWFwaG9yZURhcndpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzIyNUNDODUyMzAwM0Iy
Nzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjMzMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1D
bGllbnRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVh
bUNsaWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEy
MzQyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM1MjVDQzg1MjQwMDNCMjc5NiAv
KiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I3MzEyMzYyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM3MjVD
Qzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzODI1Q0M4NTI0MDAzQjI3OTYgLyogU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
NzMxMjM5MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NzI1NEFGRTE3MDA2RUVCOEMgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjk0MCw2ICs2OTYzLDE1IEBACiAJCQkJNUNDNURCOTEyMTQ4OEUxNjAwNkNCOEE4IC8qIFNo
YXJlZEJ1ZmZlckNvcHkuaCAqLywKIAkJCQkyREMxODU1RURCRkI4NTBCQTBCNkQwNkQgLyogU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMkRDMTg4MUFDQkNBQjVENTdDNUM2
RUYwIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCAqLywKKwkJCQk3QjczMTIzNjI1Q0M4
NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJN0I3MzEy
MzMyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCAqLywKKwkJCQk3
QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi8s
CisJCQkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIu
aCAqLywKKwkJCQk3QjczMTIzOTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVu
Y29kZXIuaCAqLywKKwkJCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5jcHAgKi8sCisJCQkJN0I3MzEyMzUyNUNDODUyNDAwM0IyNzk2IC8qIFN0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAqLywKKwkJCQk3QjczMTIzNzI1Q0M4NTI0MDAzQjI3
OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJN0I3MzEyMzgyNUNDODUy
NDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCAqLywKIAkJCQkxQUUwMEQ2OTE4
MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCAqLywKIAkJCQkxQUUwMEQ2QTE4
MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmggKi8sCiAJCQkpOwpAQCAtMTIwMDcs
NiArMTIwMzksMTEgQEAKIAkJCQk5MzZCMDU5ODIzMDM5MDk3MDAyRkMwNkIgLyogU3RvcmFnZU1h
bmFnZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNjhFRURGMjMwM0E5RUQwMEJEQjExQSAv
KiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjVGNEUw
NjIzMEIyRTk1MDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIzQTI1Q0M4NTI1MDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyNDIyNUND
ODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk3QjczMTIzRTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyNDEyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTAwRDZDMTgzMjdDMTIw
MDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5NkJEODVE
MTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3RkQzMTg2MjJCMzUxNkMwMDhEMEU4QiAvKiBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Np
b24uaCBpbiBIZWFkZXJzICovLApAQCAtMTM4MzYsNiArMTM4NzMsMTAgQEAKIAkJCQk5M0Q2Qjc4
MjI1NENDQ0Y0MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzMzRERUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0
b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNjhF
RURFMjMwM0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIzRjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIzRDI1Q0M4NTI1
MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3QjczMTIzQjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTI0MDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MzIxMkI2QTcx
MDBGNDkzRkQgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFC
NzUxMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTJEMTFCNzUyMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmlu
ZGV4IDBlNTNlZjM3ZDVkMGJiZDZiNjU4NmE0ZjgzNWY5MWMyNmRkYTY2MjAuLjM1ZTU4MzhiYWZh
NjVmNmYzMWE0NDQwMzQ5NmQ4YTFiYWU2OTNjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmNwcApAQCAtNDgsMTMgKzQ4LDE2IEBAIFJlZlB0cjxSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUo
Y29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwg
YXR0cmlidXRlcykpOwogfQogCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0U3RyZWFt
U2l6ZSA9IDEgPDwgMTU7CisKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25u
ZWN0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQogICAgIDog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCiAgICAgLCBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uKCZncHVQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAsIG1fc3RyZWFtQ29ubmVj
dGlvbihncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGRlZmF1bHRTdHJlYW1TaXpl
KQogewogICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7CiAgICAgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsK
LSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKSwgMCk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgbV9zdHJlYW1Db25uZWN0aW9uLnN0cmVhbUJ1ZmZlcigpKSwg
MCk7CiB9CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5KCkKQEAgLTE2OSw3ICsxNzIsNyBAQCBHQ0dMZW51bSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcigpCiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9l
cnJvcldoZW5Db250ZXh0SXNMb3N0LCBOT19FUlJPUik7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2
YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJ
UEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSwgU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywg
U3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgp
KQogICAgICAgICByZXR1cm47CkBAIC0xNzgsNiArMTgxLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZh
aWxhYmwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoIW1fZGlkSW5pdGlhbGl6
ZSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLnNldFdha2VVcFNlbWFwaG9yZShXVEZNb3ZlKHNl
bWFwaG9yZSkpOwogICAgIG1fZGlkSW5pdGlhbGl6ZSA9IHRydWU7CiAgICAgaW5pdGlhbGl6ZShh
dmFpbGFibGVFeHRlbnNpb25zLCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggNjEwZWIwMTViNTEzZWRmY2YxMTgwOTMx
NmZhODJiZTRjNGQ3YjVjNi4uYjQ0MGIwMGI5MWY2MDYxYTU4ZGZmMTM4ZjhiYmI2NGI3NjU2MmVh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTI5LDEwICsy
OSwxMSBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorI2luY2x1ZGUgIlN0cmVhbUNsaWVudENvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oPgpAQCAtMzM0LDE5ICszMzUsMTggQEAgcHJvdGVjdGVkOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2Vu
ZChUJiYgbWVzc2FnZSkKICAgICB7Ci0gICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUo
bWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi5zZW5k
KFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFdBUk5f
VU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGNvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgZGVmYXVsdFNlbmRU
aW1lb3V0LCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpEaXNwYXRjaEluUmVjZWl2ZU9yZGVyKTsKKyAg
ICAgICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKHJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIGRlZmF1bHRT
ZW5kVGltZW91dCk7CiAgICAgfQogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKTsgfQogCiBw
cml2YXRlOgogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgd2FzQ3Jl
YXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmlu
ZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIHZvaWQgd2FzQ3JlYXRlZChib29sIGRpZFN1
Y2NlZWQsIElQQzo6U2VtYXBob3JlJiYsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0
cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOwogICAgIHZvaWQgd2FzTG9zdCgpOwogICAgIHZv
aWQgd2FzQ2hhbmdlZCgpOwogCkBAIC0zNjAsOCArMzYwLDggQEAgcHJpdmF0ZToKICAgICBHUFVQ
cm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBib29sIG1fZGlk
SW5pdGlhbGl6ZSB7IGZhbHNlIH07CiAgICAgR0NHTGVudW0gbV9lcnJvcldoZW5Db250ZXh0SXNM
b3N0ID0gTk9fRVJST1I7Ci0KICAgICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI6Omdl
bmVyYXRlKCkgfTsKKyAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gbV9zdHJlYW1Db25u
ZWN0aW9uOwogfTsKIAogLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQg
SVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IGE3YzY0MTJhYzk0NmUyNThjZTAxMzhiYzQ3YmMzODYyMTk1MDIxZDcuLmY0M2Vj
MGEyZWFhMzg0ZTRlZGU4ZGQ0NDBkOWVmZTAyOGFjYjdiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAogbWVzc2FnZXMg
LT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lk
IFdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywg
U3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0NyZWF0ZWQoYm9vbCBk
aWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSBzdHJlYW1XYWtlVXBTZW1hcGhvcmUsIFN0cmluZyBh
dmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zKQogICAgIHZv
aWQgV2FzTG9zdCgpCiAgICAgdm9pZCBXYXNDaGFuZ2VkKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5o
CmluZGV4IGU0Y2NjZjBkYzU3ZWM4NGVhNmVjNGRhOTgzNGNjY2M0YTVhNTE5NzMuLjg5OGUyMGQx
NzU0NGIyOGE5NGNjZjQ2MzY4ZDRkZTJmZjVlMmMyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaApA
QCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVy
LmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYk1E
TlNSZWdpc3Rlci5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGVjNThiMThmOTRjMmVlN2NjNGYwYWE5YjVmYTc2NTFiZTdmOWIwMmMuLjVjNWYz
ZjA2ZDA1MTEzNDM2OGY1ZWQ3ZTA0YTk3MzJlYjMyNWMyNjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wMi0w
NSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdM
IEdQVSBwcm9jZXNzIElQQyBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIGFzeW5jaHJvbm91
cyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5NjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM0MDY1MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIG1lc3NhZ2UgcmVjZWl2ZXIgYXMgIlN0cmVhbSIsCisgICAgICAgIGEgbmV3IHZh
cmlhbnQgb2YgcmVjZWl2ZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2Vi
Z2w6CisKIDIwMjEtMDItMDQgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IHNob3VsZCBzdXBwb3J0IGxv
c2luZyB0aGUgY29udGV4dCBhbmQgc2hvdWxkIGxvc2UgdGhlIGNvbnRleHQgb24gdGltZW91dHMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCBhZWRlZWQzZDZlMjViYTRlMWQ4NWYzNGFi
MmQ5ZTNhY2ViYjQ0ZmRjLi43YTdiZjU0NDRmNzM3YjE0OWFkMTg0OTFiNTRlMGI3NmFhYzBkMGQ2
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9v
bHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC04OSw3ICs4OSw3IEBAIGNvbnRleHRf
bWVzc2FnZXNfdGVtcGxhdGUgPSAoCiAgICAgdGVtcGxhdGVfcHJlYW1ibGUKICAgICArICIiIiNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworbWVzc2FnZXMgLT4gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFJlc2hh
cGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZm
ZXIpIFN5bmNocm9ub3VzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419710</attachid>
            <date>2021-02-09 06:33:06 -0800</date>
            <delta_ts>2021-02-17 01:01:26 -0800</delta_ts>
            <desc>ready for review</desc>
            <filename>bug-219641-20210209163304.patch</filename>
            <type>text/plain</type>
            <size>151002</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIyM2QzMTA2YTNiOTJlMTE3
OGZkZDkwOGU2N2RjN2U0M2Y2ZmEzZjIuLjljZGNhMmIxZTQ2YTRkYjZjYWZhZDNlY2IxMmJiOTdl
ZGUzOGNlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjg5IEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2Vz
IGFuZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJl
Y2VpdmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNl
aXZlZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAg
cHJvY2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVu
dGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hy
b25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQg
dGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhh
dmluZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAg
IGluIHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0
IGluIGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBv
bmUgMm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJl
IHdpbGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24K
KyAgICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFy
IHRocmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJv
cHRpbWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAg
cHJvY2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2Ug
dG8gaGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGlj
aXBhdGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8g
c2FtZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1p
emF0aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFz
IHBhcnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAg
IEluIEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sg
cXVldWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQg
d2lsbCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24g
cGVyIGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAg
ICBTZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRp
b24gd2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYg
dGhlIG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUg
aXQgdGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91
dCBvZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9u
IGFycml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAg
ICBtZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2ls
bCBzdG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxs
IGNvbnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4g
cHJvY2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0
cmVhbSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1l
c3NhZ2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMg
c2VuZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0g
Y29ubmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9y
ZS4gVGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlz
IHdhaXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6
CisgICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAg
cG9pbnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAg
IC0gV2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2gg
fjYwZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVl
VW5pbml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4g
dGhlIHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0
aW9ucyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1
ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpzZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVl
dWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBtdWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0
aGUgSVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmls
aXR5IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xp
ZW50LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6
CisgICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNv
bnN0cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZm
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAo
SVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNw
ZWNpZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFy
ZSB1bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRo
cm91Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAg
ICAgVGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBp
cyByZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2Fz
ZSB3aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRo
ZSBzdHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAg
ICAgICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2Fr
ZXVwIHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNl
bWFwaG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24u
IEFsbCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2
ZSB0aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhl
eSBoYXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVz
dGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rp
b246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dCBjb25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0
YSB0aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVN
ZW1vcnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAo
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0
aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZl
ci4KKyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90
aCB0aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4K
KyAgICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1
cCwgdGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFs
bCB0aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAi
aG9sZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBv
ZiAiYnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAg
ICAgIGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBj
b250YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAg
ICAgRm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBw
cm9jZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUg
b2YgdGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwg
c2xlZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3
aWxsIHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdp
bGwgd2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9m
ZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXpl
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
cyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9j
ZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1l
c3NhZ2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUg
bWVzc2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRo
ZSBidWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRo
YXQgdGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1h
bCBJUEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3Nh
Z2UgdW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdT
dHJlYW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFz
CisgICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxs
IG1lc3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1l
c3NhZ2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAg
ICAgIGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUg
c3RyZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJ
UEMgbWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNz
ZWQuCisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0
aW9uSUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJl
YW0gbWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAg
ICAgIHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJl
YW1EZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVk
LgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZm
ZXI6OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5
bmNocm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToK
KyAgICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0
IG9mIHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmg6
CisKIDIwMjEtMDItMDggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDb25uZWN0aW9uIGNsaWVudHMgc2hvdWxkIGJlIGFibGUgdG8gb2J0YWluIHRoZSBt
ZXNzYWdlcyBhcyBkYXRhIGluc3RlYWQgb2YgZW1iZWRkZWQgaW4gZnVuY3Rpb24gcmVmZXJlbmNl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IGRhYmVkODdjMDM4MGM1ZGZmOTMyZTViMmIzMDRhZDdjMWVhZWMy
YjAuLjc5N2M2NzQ0ZWVhNWYyYmZmYWI3MjFmMzFjMmFhM2Q5Y2IyYzRiY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKQEAgLTMxMCwxMCArMzEwLDEyIEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiB9CiAKICNp
ZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdy
YXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRy
aWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVz
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CiAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcik7CisgICAgICAgIGF1dG8gaW5zdGFuY2UgPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
Y3JlYXRlKCp0aGlzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFt
KSk7CisgICAgICAgIGluc3RhbmNlLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOwor
ICAgICAgICByZXR1cm4gU2NvcGVkRGlzY29ubmVjdCB7IFdURk1vdmUoaW5zdGFuY2UpIH07CiAg
ICAgfSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCmluZGV4IGUwMDdmYmFlZmM5NzlhZTFiN2RmZjAwNDVkNWZjYWViYzM5Yzky
YTguLjUzY2EzYTJhMTM5OTBjMGZkZTJmMmNhZjQ0ODk1ZjVjZTFlNGQ1MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApA
QCAtMTMwLDcgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFj
a2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoV0VCR0wpCi0g
ICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXImJik7CiAgICAgdm9pZCByZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKICNlbmRpZgogCkBAIC0yMzYsNyArMjM2LDcgQEAgcHJpdmF0ZToKICAg
ICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciwgU2NvcGVkRGlzY29ubmVjdDxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47
CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRN
YXA7CiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHVzaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
TWFwID0gSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+OworICAgIHVzaW5nIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWFwID0gSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFNjb3BlZERp
c2Nvbm5lY3Q8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PjsKICAgICBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTE1hcCBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwOwogI2VuZGlmCiAjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOTU0
NzEwYTM0MGQyZjU4ZGE5YjVlOTU3Y2JjMzRkNWU1YWZkOTg5MS4uMWMyZGM3NjNiNzVjMTM4YTFh
OTZkZDk4Mjc5M2E1YzM1YjEyODFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTI2LDcgKzI2LDcgQEAgbWVzc2FnZXMgLT4gR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBXYW50
c0Rpc3BhdGNoTWVzc2FnZSB7CiAgICAgdm9pZCBDcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFdlYktp
dDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUg
cmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpCiAgICAgdm9pZCBSZWxlYXNlUmVuZGVyaW5nQmFj
a2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKQogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29u
dGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmli
dXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKQorICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6Okdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQ
Qzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBzdHJlYW0pCiAgICAgdm9pZCBSZWxlYXNlR3JhcGhp
Y3NDb250ZXh0R0woV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQogI2VuZGlmCiAgICAgdm9pZCBDbGVhck5vd1BsYXlpbmdJbmZv
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCmluZGV4IDc5YjM0NTk2ZmJmMmQwZGZjOTgxODY1
MWJkY2ZlYjRiMGEwYzg3NWQuLmVjYmJhZDYyNDg4MzBjOTA0NTVmZGU0YjdkYjZiZjNjNWU5MGI5
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtMzEsNTUgKzMxLDgxIEBACiAjaW5j
bHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLQorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
Ky8vIEN1cnJlbnRseSB3ZSBoYXZlIG9uZSBnbG9iYWwgV2ViR0wgcHJvY2Vzc2luZyBpbnN0YW5j
ZS4KK3N0YXRpYyBJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlPiBpbnN0YW5jZSgiUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgd29yayBxdWV1ZSIpOworICAgIHJldHVybiBpbnN0YW5jZS5nZXQoKTsKK30KKwog
I2lmICFQTEFURk9STShDT0NPQSkKLXN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCitSZWY8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9u
QnVmZmVyJiYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAjZW5kaWYKIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0
cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0KQotICAgIDogbV9jb250
ZXh0KFdURk1vdmUoY29udGV4dCkpCi0gICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
bWFrZVdlYWtQdHIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykpCitSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVy
JiYgc3RyZWFtKQorICAgIDogbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD46OmNyZWF0ZShncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzdHJlYW0pLCByZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpKSkKICAgICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKIHsKLSAgICBpZiAoYXV0byogZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQo
KSkKLSAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFw
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50
NjQoKSwgKnRoaXMpOwotICAgIG1fY29udGV4dC0+YWRkQ2xpZW50KCp0aGlzKTsKLSAgICBTdHJp
bmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpF
WFRFTlNJT05TKTsKLSAgICBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zID0gbV9jb250ZXh0
LT5nZXRTdHJpbmcoRXh0ZW5zaW9uc0dMOjpSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKTsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDcmVh
dGVkKHRydWUsIGV4dGVuc2lvbnMsIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyksIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQog
CiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKCkKIHsK
LSAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+
bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBBU1NFUlQoIW1fc3RyZWFtQ29ubmVj
dGlvbik7CisgICAgQVNTRVJUKCFtX2NvbnRleHQpOwogfQogCi1HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpIGNvbnN0Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjppbml0aWFsaXplKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCiB7Ci0gICAgcmV0dXJuIG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOworICAgIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkuZGlzcGF0
Y2goW2F0dHJpYnV0ZXMgPSBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtRdWV1
ZUluaXRpYWxpemUoV1RGTW92ZShhdHRyaWJ1dGVzKSk7CisgICAgfSk7CiB9CiAKLUlQQzo6Q29u
bmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNvbm5lY3RXZWJQcm9jZXNz
Q29ubmVjdGlvbigpCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
PSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAgICAgIHJldHVybiAmZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOwotICAgIHJldHVybiBudWxscHRy
OworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywg
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOworfQorCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaXNjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oUmVm
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKQoreworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdG9wUmVj
ZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCkp
OworICAgIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHJlZkZyb21Db25uZWN0aW9uKV0oKSB7CisgICAgICAg
IHByb3RlY3RlZFRoaXMtPndvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpOworICAgIH0pOworfQorCit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMpCit7CisgICAgcGxhdGZv
cm1Xb3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIGlmIChtX2Nv
bnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOworICAgICAgICBT
dHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdM
OjpFWFRFTlNJT05TKTsKKyAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1f
Y29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19B
TkdMRSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVl
dWUoKS53YWtlVXBTZW1hcGhvcmUoKSwgZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25z
KSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFsc2UsIElQQzo6U2VtYXBob3JlIHsgfSwgIiIsICIi
KSk7CiB9CiAKLXVpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIGNvbnN0Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3Jr
UXVldWVVbmluaXRpYWxpemUoKQogewotICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci50b1VJbnQ2NCgpOworICAgIG1fY29udGV4dCA9IG51bGxwdHI7CisgICAgbV9zdHJl
YW1Db25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6ZGlkQ29tcG9zaXRlKCkKQEAgLTg4LDcgKzExNCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OmZvcmNlQ29udGV4dExvc3QoKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xv
c3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0
KCkKQEAgLTk4LDcgKzEyNCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3lj
bGVDb250ZXh0KCkKIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250
ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6V2FzQ2hhbmdlZCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVz
aGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgK
aW5kZXggMDAxNTlhYzhiNTg2YThiNjJhM2RkYTNhNTcwMDRlODgzZTE1NmQwOC4uN2RhMmM3OWI5
NGQ0YWFlMjI2NmZmODNlNzAyYTBhYzYzMDE1YmNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgK
QEAgLTI4LDEwICsyOCw5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VC
R0wpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgot
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIK
LQorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC00OSwzMSArNDgs
MjMgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0KIC8vIEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVt
ZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0NvbnRleHRH
TCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzIGJhc2Vk
IG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJn
ZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bC4KLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCi0gICAgOiBwdWJsaWMgSVBDOjpNZXNz
YWdlU2VuZGVyCi0gICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgLCBwcml2
YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgeworY2xhc3MgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w+LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpT
dHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgp
IG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmJik7CiAKLSAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7Ci0KLXByb3RlY3RlZDoKLSAgICBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+KTsKKyAgICB2b2lkIGNvbm5l
Y3RXZWJQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIHZvaWQgZGlzY29ubmVjdFdlYlByb2Nlc3ND
b25uZWN0aW9uKFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4mJiByZWZGcm9tQ29ubmVjdGlv
bik7CiAKLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgotICAgIElQQzo6Q29u
bmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKLSAgICB1aW50
NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworICAgIC8vIElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gdGVtcGxh
dGUgY29udHJhY3QgaW1wbGVtZW50YXRpb24uCisgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVz
c2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVyJik7CiAK
LSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCi0gICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworcHJvdGVjdGVkOgorICAg
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsK
IAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQg
ZGlkQ29tcG9zaXRlKCkgZmluYWw7CkBAIC05NSw4ICs4NiwxNCBAQCBwcm90ZWN0ZWQ6CiAKICNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBO
T0xJTlQKIAotICAgIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250
ZXh0OwotICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOworICAgIHZvaWQgd29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3Jt
V29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JikgeyB9OworICAgIHZvaWQgd29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2UpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOyB9CisKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj4gbV9zdHJlYW1Db25uZWN0
aW9uOworICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250
ZXh0OwogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
bgppbmRleCBkMzI4Y2QxY2NkNjIxYjA1YWMyODMxOGU2MjVhN2JhNzJkY2M0YTE3Li4yZDUzOWU5
MjNiNzRmODg2NzA4MWI4ZjRhY2ViOTliZjlmYWY4YzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAvLyBUaGlzIGZpbGUgaXMg
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFJlc2hhcGUoaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQ
cmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNo
cm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggOGUyZDFmYzY1
MTg2MjgzOTVlOTc0MWM0NGU3YWM4NTFiMDhlZjYyNy4uYWU3YWI3NjI2N2QzZmQwZWQ1Y2NmYzdm
NzY0NWJlNDhkMGIxZjE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApA
QCAtMzksMTAgKzM5LDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wsIHByaXZh
dGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gewogcHVibGlj
OgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoKSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBvdmVycmlkZXMuCisgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOwogICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmln
aHQmJik+JiYpIGZpbmFsOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4gb3ZlcnJpZGVzLgpAQCAtNTYsMTYgKzU3LDIxIEBAIHByaXZhdGU6CiAKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcikKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOwogfQog
Ci1SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRl
cywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChh
dHRyaWJ1dGVzLCBjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6Y3JlYXRlRm9yR1BVUHJvY2VzcyhhdHRyaWJ1dGVzLCB0aGlzKSkKK1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQorICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBXVEZN
b3ZlKHN0cmVhbSkpCiB7CiB9CiAKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6
cGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYmIGF0dHJpYnV0ZXMpCit7CisgICAgbV9jb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoV1RGTW92ZShhdHRyaWJ1dGVzKSwgdGhpcyk7
Cit9CisKIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cmVjeWNsZUJ1ZmZlcigpCiB7CiAgICAgcmV0dXJuIFdU
Rk1vdmUobV9kaXNwbGF5QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggYjdiY2E3YzQ4Njk1
ODAyMjk0YmY5NGFlZjA3NDBjZjcwZTNmNjJhZi4uNjIzYTUyYTQ1YTRmYTg1ZGMxMmQ0OGE5NWU1
NmVjNmY5NjJkOWU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBV
U0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJOZXR3b3JrUlRDTW9uaXRvci5oIgogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAppbmRleCAzMjA3NmFmZDAy
YTg5OGExZTM5ZGUyODNlMTAyYjg1OTQ3ZjhlZGM3Li41MzM1MGY5ZjdjOGMxMmJlNjI3NTk5OWM3
ZWJmYzNjN2UwOTFiY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2Rlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNzUsNiArNzYsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBBcmd1bWVudENvZGVyIHsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihUKSwgYWxp
Z25vZihUKSk7CkBAIC05MSw2ICs5Myw3IEBAIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIFQgdmFsdWUp
CiAgICAgewogICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxUPihXVEY6OmVudW1Ub1Vu
ZGVybHlpbmdUeXBlPFQ+KHZhbHVlKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGIwYTQzZGU5ZDdhMTM3MjE2YTE5YmY3ZDBiZDVlMTkx
MTNiNWRhNjguLmFlZTg5ZTYyNjk2YzU2MGYwYTE4YmZiMWQ2NzY5MTY1MGU3ZmYyYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC0xMTEsNyArMTEyLDcgQEAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2Rl
cjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENTdHJpbmcKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBBcmd1bWVudENv
ZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKICAgICAvLyBTcGVjaWFsIGNhc2UgdGhlIG51bGwgc3RyaW5nLgpAQCAtMTMwLDYgKzEz
MSwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVsc2UKICAgICAgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5n
LmNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgYWxpZ25vZihVQ2hhcikp
OwogfQordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8RW5jb2Rl
cj4oRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxTdHJpbmc+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgogc3RhdGljIGlubGluZSBPcHRpb25hbDxTdHJpbmc+IGRlY29kZVN0cmluZ1RleHQo
RGVjb2RlciYgZGVjb2RlciwgdWludDMyX3QgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjBlYjE3YTBmZDgyNjBkNDBiZWM3ZmNkYWFl
YTIzYmM1ZTg2NWUwOS4uZjg1Njk4MDczZGQwNDViMjgxNmUxNjEwY2E0OTk2YTVkNGVlNmMyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC01NSw2
ICs1NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVBcmd1bWVudENvZGVy
IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4gewogICAgIHVzaW5nIEFycmF5UmVmZXJl
bmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKICAgICB7CiAgICAgICAgIGlm
ICghRXh0ZW50KQpAQCAtNzQsNiArNzUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
RXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBFeHRlbgogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxU
LCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJyYXlSZWZlcmVu
Y2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNl
KQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlS
ZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI2Niw2ICsyNjgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnBhaXI8VCwgVT4+IHsKIAog
dGVtcGxhdGU8c2l6ZV90IGluZGV4LCB0eXBlbmFtZS4uLiBFbGVtZW50cz4KIHN0cnVjdCBUdXBs
ZUVuY29kZXIgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+
JiB0dXBsZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8c2l6ZW9mLi4uKEVs
ZW1lbnRzKSAtIGluZGV4Pih0dXBsZSk7CkBAIC0yNzUsNiArMjc4LDcgQEAgc3RydWN0IFR1cGxl
RW5jb2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1cGxl
RW5jb2RlcjwwLCBFbGVtZW50cy4uLj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBzdGQ6OnR1cGxlPEVsZW1l
bnRzLi4uPiYpCiAgICAgewogICAgIH0KQEAgLTMzOCw2ICszNDIsNyBAQCBzdHJ1Y3QgVHVwbGVE
ZWNvZGVyPDA+IHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4geworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkKICAgICB7CiAgICAgICAgIFR1
cGxlRW5jb2RlcjxzaXplb2YuLi4oRWxlbWVudHMpLCBFbGVtZW50cy4uLj46OmVuY29kZShlbmNv
ZGVyLCB0dXBsZSk7CkBAIC0zNzQsNiArMzc5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlw
ZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6OktleVZhbHUK
IHRlbXBsYXRlPGJvb2wgZml4ZWRTaXplRWxlbWVudHMsIHR5cGVuYW1lIFQsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+
IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNh
cGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2RlcjxmYWxzZSwgVCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+
JiB2ZWN0b3IpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih2ZWN0b3Iuc2l6ZSgpKTsKQEAgLTQxMSw2ICs0MTcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90
IG1pbgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4gc3RydWN0IFZlY3Rv
ckFyZ3VtZW50Q29kZXI8dHJ1ZSwgVCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwg
bWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiB2ZWN0b3IpCiAgICAgewogICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2ZWN0b3Iuc2l6ZSgpKTsKQEAg
LTc1Myw2ICs3NjAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENTdHJpbmc+
IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3RyaW5nPiB7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFN0cmluZyYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGRl
Y29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IGU4YjkzNTJlMjliMTY0MzMyY2ExMzdmODQ3MTJkYjBkYTdkMTQ4YWYuLjBlYzM5NTlm
ZTUwMTJmMGMyMjU0ODJjOTViMWMzYzg0ZDI4MDA0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUZsYWdzLmgiCkBAIC04MDcsNyAr
ODA4LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9jZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlKQogICAgIH0KIAogICAgIGF1dG8gdGhyZWFkZWRSZWNl
aXZlcktleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UtPm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSksIG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSk7Ci0gICAgaWYg
KCFXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXJNYXA6OmlzVmFsaWRLZXkodGhyZWFkZWRSZWNlaXZl
cktleSkgfHwgIVRocmVhZE1lc3NhZ2VSZWNlaXZlck1hcDo6aXNWYWxpZEtleSh0aHJlYWRlZFJl
Y2VpdmVyS2V5KSkgeworICAgIGlmICghV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyTWFwOjppc1Zh
bGlkS2V5KHRocmVhZGVkUmVjZWl2ZXJLZXkpIHx8ICFUaHJlYWRNZXNzYWdlUmVjZWl2ZXJNYXA6
OmlzVmFsaWRLZXkodGhyZWFkZWRSZWNlaXZlcktleSkgfHwgIU1lc3NhZ2VSZWNlaXZlUXVldWVN
YXA6OmlzVmFsaWRNZXNzYWdlKCptZXNzYWdlKSkgewogICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZU5hbWUgPSBt
ZXNzYWdlLT5tZXNzYWdlTmFtZSgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZU5hbWUpOwogICAg
ICAgICB9KTsKQEAgLTgyMCw3ICs4MjEsNiBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNv
bWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2UpCiAgICAgaWYgKGRp
c3BhdGNoTWVzc2FnZVRvVGhyZWFkUmVjZWl2ZXIobWVzc2FnZSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgcHJhY3RpY2FsbHkgdGhlIHNhbWUgbXV0ZXgsIHNv
IG1heWJlIHRoZXkgY291bGQgYmUgbWVyZ2VkLgogICAgIGF1dG8gd2FpdEZvck1lc3NhZ2VzTG9j
a2VyID0gaG9sZExvY2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKIAogICAgIGF1dG8gaW5jb21p
bmdNZXNzYWdlc0xvY2tlciA9IGhvbGRMb2NrKG1faW5jb21pbmdNZXNzYWdlc011dGV4KTsKQEAg
LTEwMzQsOCArMTAzNCwxMyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2Uo
RGVjb2RlciYgZGVjb2RlcikKIAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwotCisgICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgeworICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgbWVzc2FnZU5hbWVdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFRo
aXMtPmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UocHJvdGVjdGVkVGhp
cywgbWVzc2FnZU5hbWUpOworICAgICAgICB9KTsKKyAgICB9CiAgICAgaWYgKCFpc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
CmluZGV4IDZhYjk0NGVjNzkzYTEyZDQ1M2NjYzRjM2FlMzAzODA4NzgyMzA2OTQuLjJiMjNjOTgx
NDI5ODRlYWEyZjA2ZjE5OWVkOTdlMmVhOWNmZDhlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgKQEAgLTMwLDEwICszMCw5IEBACiAKICNpbmNsdWRlICJEZWNvZGVy
LmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCi0jaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMzE4LDYgKzMxNyw4IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJl
Y2VpdmVyJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpOworICAgIC8vIENhbiBiZSBjYWxs
ZWQgZnJvbSBhbnkgdGhyZWFkLgorICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1l
c3NhZ2UoTWVzc2FnZU5hbWUpOwogcHJpdmF0ZToKICAgICBDb25uZWN0aW9uKElkZW50aWZpZXIs
IGJvb2wgaXNTZXJ2ZXIsIENsaWVudCYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElk
ZW50aWZpZXIpOwpAQCAtMzMxLDYgKzMzMiw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIGRpc3Bh
dGNoTWVzc2FnZVRvV29ya1F1ZXVlUmVjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+Jik7
CiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2VUb1RocmVhZFJlY2VpdmVyKHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiYpOworICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlVG9GaWx0ZXIoc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+Jik7CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIGNvbm5lY3Rpb24gd29y
ayBxdWV1ZS4KICAgICB2b2lkIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+KTsKQEAgLTM1MSw3ICszNTMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0
Y2hNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPik7CiAgICAgdm9pZCBkaXNwYXRjaE1l
c3NhZ2UoRGVjb2RlciYpOwogICAgIHZvaWQgZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJik7
Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSk7
CiAgICAgdm9pZCBkaWRGYWlsVG9TZW5kU3luY01lc3NhZ2UoKTsKIAogICAgIC8vIENhbiBiZSBj
YWxsZWQgb24gYW55IHRocmVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAK
aW5kZXggODBhMGY3NWM3MDU3MmJmNGMyNDg1MjZmZWQyZmVmYjA5N2NkYzhmOS4uNGRlMDUwOThj
NDYzMmFkNDVmNGU4NTNmNjdlOWVlM2U3NzEzNmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGVjb2Rlci5jcHAKQEAgLTkwLDYgKzkwLDE3IEBAIERlY29kZXI6OkRlY29kZXIoY29uc3Qg
dWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgQ29uc3RydWN0V2l0aG91dEhlYWRl
CiAgICAgICAgIG1hcmtJbnZhbGlkKCk7CiB9CiAKK0RlY29kZXI6OkRlY29kZXIoY29uc3QgdWlu
dDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkK
KyAgICA6IG1fYnVmZmVyIHsgc3RyZWFtIH0KKyAgICAsIG1fYnVmZmVyUG9zIHsgbV9idWZmZXIg
fQorICAgICwgbV9idWZmZXJFbmQgeyBtX2J1ZmZlciArIHN0cmVhbVNpemUgfQorICAgICwgbV9i
dWZmZXJEZWFsbG9jYXRvcihbXSAoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9KQorICAgICwg
bV9kZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCit7CisgICAgaWYgKCFkZWNvZGUobV9tZXNz
YWdlTmFtZSkpCisgICAgICAgIHJldHVybjsKK30KKwogRGVjb2Rlcjo6fkRlY29kZXIoKQogewog
ICAgIEFTU0VSVChtX2J1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5k
ZXggNjY5ODViYzM4N2Q3NDM5MTM3MDFiMTE3YjkxODAwYjlhMjc3MWFiOC4uYjNjNmFjOGEyZDVh
Y2JhMmMyMTUyOGRmZWIxOGM2NDE1Y2VkZDIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuaApAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJik7CiAgICAgZXhwbGljaXQgRGVj
b2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVm
ZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVu
dD4mJik7CisgICAgRGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1T
aXplLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKICAgICB+RGVjb2RlcigpOwogCiAgICAgRGVj
b2Rlcihjb25zdCBEZWNvZGVyJikgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9IYW5kbGVNZXNzYWdlLmgKaW5kZXggNDEyOWQ0ZTJiNDlkNWM4ZmM0MWEyZDY1NGFkY2Q4OWU4
NmM2MzdmNi4uNTlkODM5NmU1ZDg4ZGU4ZmVhMGRiMTc1YTI2YTAxNDQ3NGI0ZDQzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAt
MTY0LDYgKzE2NSwyOCBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVj
dGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZQogICAgIGNhbGxNZW1iZXJG
dW5jdGlvbihjb25uZWN0aW9uLCBXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgordm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMo
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIs
IEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCit7CisgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9
IDA7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzeW5jUmVxdWVzdElEKSB8fCAhc3luY1JlcXVl
c3RJRCkgeworICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFy
Z3VtZW50cz46OlR5cGU+IGFyZ3VtZW50czsKKyAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKKyAg
ICBpZiAoIWFyZ3VtZW50cykgeworICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxl
dGlvbkhhbmRsZXIgPSBbc3luY1JlcXVlc3RJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVj
dGlvbildIChhdXRvJiYuLi4gYXJncykgbXV0YWJsZSB7CisgICAgICAgIGNvbm5lY3Rpb24tPnNl
bmRTeW5jUmVwbHkoc3luY1JlcXVlc3RJRCwgYXJncy4uLik7CisgICAgfTsKKyAgICBjYWxsTWVt
YmVyRnVuY3Rpb24oV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG9iamVjdCwgZnVuY3Rpb24pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBDLCB0eXBlbmFtZSBNRj4KIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI0ZjVjZGYwMDhlNWE3ZjJkMmYxMDJhMjM1YzNjMjI1MTczMzc2
ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCIKKworbmFt
ZXNwYWNlIElQQyB7CisKK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVhbUNsaWVudENvbm5l
Y3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IHNpemUpCisgICAgOiBtX2Nvbm5l
Y3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fYnVmZmVyKHNpemUpCit7CisgICAgLy8gUmVhZCBz
dGFydHMgZnJvbSAwIHdpdGggbGltaXQgb2YgMCBhbmQgcmVhZGVyIHNsZWVwaW5nLgorICAgIHNo
YXJlZFNlbmRlck9mZnNldCgpLnN0b3JlKFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9m
ZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7Cisg
ICAgLy8gV3JpdGUgc3RhcnRzIGZyb20gMCB3aXRoIGEgbGltaXQgb2YgdGhlIHdob2xlIGJ1ZmZl
ci4KKyAgICBzaGFyZWRSZWNlaXZlck9mZnNldCgpLnN0b3JlKDAsIHN0ZDo6bWVtb3J5X29yZGVy
X3JlbGF4ZWQpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNldFdha2VVcFNl
bWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKK3sKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBtX3dha2VVcFNlbWFwaG9yZSA9IFdURk1vdmUoc2VtYXBob3JlKTsKKyNlbmRpZgor
ICAgIHdha2VVcFJlY2VpdmVyKCk7Cit9CisKK3ZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
d2FrZVVwUmVjZWl2ZXIoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChtX3dha2VV
cFNlbWFwaG9yZSkKKyAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUtPnNpZ25hbCgpOworI2VuZGlm
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNs
aWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVu
dENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzI1MmYwNjg1OTIxOGFkMzAwNGI5ZGViNmE0ODcz
NDAxNWNkODBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMjQwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSVBDU2VtYXBob3Jl
LmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCisjaW5jbHVk
ZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CituYW1l
c3BhY2UgSVBDIHsKKworLy8gQSBtZXNzYWdlIHN0cmVhbSBpcyBhIGhhbGYtZHVwbGV4IHR3by13
YXkgc3RyZWFtIG9mIG1lc3NhZ2VzIHRvIGEgYmV0d2VlbiBhIHNlbmRlciBhbmQgdGhlCisvLyBk
ZXN0aW5hdGlvbiByZWNlaXZlci4KKy8vCisvLyBTdHJlYW1DbGllbnRDb25uZWN0aW9uIGNhbiBz
ZW5kIG1lc3NhZ2VzIGFuZCByZWNlaXZlIHN5bmNocm9ub3VzIHJlcGxpZXMKKy8vIHRocm91Z2gg
dGhpcyBtZXNzYWdlIHN0cmVhbSBvciB0aHJvdWdoIElQQzo6Q29ubmVjdGlvbi4KKy8vCisvLyBU
aGUgZGVzdGluYXRpb24gcmVjZWl2ZXIgd2lsbCByZWNlaXZlIG1lc3NhZ2VzIGluIG9yZGVyIF9m
b3IgdGhlIGRlc3RpbmF0aW9uIG1lc3NhZ2VzXy4KKy8vIFRoZSB3aG9sZSBJUEM6OkNvbm5lY3Rp
b24gbWVzc2FnZSBvcmRlciBpcyBub3QgcHJlc2VydmVkLgorCitjbGFzcyBTdHJlYW1DbGllbnRD
b25uZWN0aW9uIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJlYW1DbGllbnRD
b25uZWN0aW9uKTsKK3B1YmxpYzoKKyAgICBTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rp
b24mLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBz
dHJlYW1CdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIHZvaWQgc2V0V2FrZVVwU2Vt
YXBob3JlKElQQzo6U2VtYXBob3JlJiYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3Rp
bmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKKyAgICB1c2luZyBTZW5kU3luY1Jlc3VsdCA9
IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+CisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25k
cyB0aW1lb3V0KTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgU3BhbiB7CisgICAgICAgIHVpbnQ4
X3QqIGRhdGE7CisgICAgICAgIHNpemVfdCBzaXplOworICAgIH07CisgICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VTaXplID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6
Om1pbmltdW1NZXNzYWdlU2l6ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNzYWdl
QWxpZ25tZW50ID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1lc3NhZ2VBbGlnbm1lbnQ7Cisg
ICAgYm9vbCB0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIE1vbm90b25pY1RpbWUgdGltZW91dCk7CisgICAgdm9pZCBzZW5kUHJvY2Vzc091dE9mU3Ry
ZWFtTWVzc2FnZShTcGFuJiYpOworCisgICAgT3B0aW9uYWw8U3Bhbj4gdHJ5QWNxdWlyZShNb25v
dG9uaWNUaW1lIHRpbWVvdXQpOworICAgIGVudW0gY2xhc3MgV2FrZVVwUmVjZWl2ZXIgOiBib29s
IHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcworICAgIH07CisgICAgV2FrZVVwUmVjZWl2ZXIg
cmVsZWFzZShzaXplX3Qgd3JpdGVTaXplKTsKKyAgICB2b2lkIHdha2VVcFJlY2VpdmVyKCk7CisK
KyAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CisgICAg
c2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAgICBzaXplX3QgY2xh
bXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7CisKKyAgICBzaXplX3Qgd3Jh
cE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci53cmFwT2Zmc2V0
KG9mZnNldCk7IH0KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0LCBt
aW5pbXVtTWVzc2FnZVNpemUpOyB9CisgICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFNlbmRlck9m
ZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9mZnNldCgpOyB9CisgICAgQXRvbWljPHNp
emVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIucmVjZWl2ZXJP
ZmZzZXQoKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5k
YXRhKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5k
YXRhU2l6ZSgpOyB9CisKKyAgICBDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247CisgICAgdWludDY0
X3QgbV9jdXJyZW50RGVzdGluYXRpb25JRCB7IDAgfTsKKworICAgIHNpemVfdCBtX3NlbmRlck9m
ZnNldCB7IDAgfTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIG1fYnVmZmVyOworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIE9wdGlvbmFsPFNlbWFwaG9yZT4gbV93YWtlVXBTZW1hcGhvcmU7
CisjZW5kaWYKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citib29sIFN0
cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8
VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KQoreworICAgIHN0YXRpY19hc3NlcnQo
IVQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKKyAgICBNb25vdG9uaWNUaW1lIGFic29s
dXRlVGltZW91dCA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGltZW91dDsKKyAgICBpZiAoIXRy
eVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQoZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBhYnNv
bHV0ZVRpbWVvdXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBzcGFuID0gdHJ5
QWNxdWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHsKKyAgICAgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgbWVzc2FnZUVu
Y29kZXIgeyBUOjpuYW1lKCksIHNwYW4tPmRhdGEsIHNwYW4tPnNpemUgfTsKKyAgICAgICAgaWYg
KG1lc3NhZ2VFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGF1
dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShtZXNzYWdlRW5jb2Rlci5zaXplKCkpOworICAgICAg
ICAgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBS
ZWNlaXZlcjo6WWVzKQorICAgICAgICAgICAgICAgIHdha2VVcFJlY2VpdmVyKCk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzZW5kUHJvY2Vzc091dE9m
U3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpzcGFuKSk7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24uc2Vu
ZChXVEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklEKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PgorU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHks
IE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KQorewor
ICAgIHN0YXRpY19hc3NlcnQoVDo6aXNTeW5jLCAiTWVzc2FnZSBpcyBub3Qgc3luYyEiKTsKKyAg
ICBNb25vdG9uaWNUaW1lIGFic29sdXRlVGltZW91dCA9IE1vbm90b25pY1RpbWU6Om5vdygpICsg
dGltZW91dDsKKyAgICBpZiAoIXRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQoZGVzdGluYXRp
b25JRC50b1VJbnQ2NCgpLCBhYnNvbHV0ZVRpbWVvdXQpKQorICAgICAgICByZXR1cm4geyB9Owor
ICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNw
YW4pCisgICAgICAgIHJldHVybiB7IH07CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kIHRo
cm91Z2ggc3RyZWFtLgorICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgcmVjZWl2ZSB0aHJvdWdoIHN0
cmVhbS4KKyAgICBzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpzcGFuKSk7
CisgICAgYXV0byByZXN1bHQgPSBtX2Nvbm5lY3Rpb24uc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdl
KSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgSVBD
OjpTZW5kU3luY09wdGlvbjo6RGlzcGF0Y2hJblJlY2VpdmVPcmRlcik7CisgICAgQVNTRVJUKHJl
c3VsdCk7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKK30KKworaW5saW5lIGJvb2wgU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIGFic29sdXRlVGltZW91dCkKK3sKKyAgICBp
ZiAoZGVzdGluYXRpb25JRCA9PSBtX2N1cnJlbnREZXN0aW5hdGlvbklEKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKGFic29sdXRlVGltZW91dCk7Cisg
ICAgaWYgKCFzcGFuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIgZW5jb2RlciB7IE1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklELCBz
cGFuLT5kYXRhLCBzcGFuLT5zaXplIH07CisgICAgaWYgKCEoZW5jb2RlciA8PCBkZXN0aW5hdGlv
bklEKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gU2l6ZSBvZiB0aGUgbWlu
aW11bSBhbGxvY2F0aW9uIGlzIGluY29ycmVjdC4gTGlrZWx5IGFuIGFsaWdubWVudCBpc3N1ZS4K
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJl
bGVhc2UoZW5jb2Rlci5zaXplKCkpOworICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAgICAgd2FrZVVwUmVjZWl2
ZXIoKTsKKyAgICBtX2N1cnJlbnREZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmIHNwYW4pCit7CisgICAgU3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgZW5jb2RlciB7IE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1N
ZXNzYWdlLCBzcGFuLmRhdGEsIHNwYW4uc2l6ZSB9OworICAgIC8vIE5vdCBub3RpZnlpbmcgb24g
d2FrZSB1cCBzaW5jZSB0aGUgb3V0LW9mLXN0cmVhbSBtZXNzYWdlIHdpbGwgZG8gdGhhdC4KKyAg
ICAodm9pZCkgcmVsZWFzZShlbmNvZGVyLnNpemUoKSk7Cit9CitpbmxpbmUgT3B0aW9uYWw8U3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNx
dWlyZShNb25vdG9uaWNUaW1lIHRpbWVvdXQpCit7CisgICAgZm9yICg7OykgeworICAgICAgICBz
aXplX3Qgc2VuZGVyTGltaXQgPSBjbGFtcGVkTGltaXQoc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5s
b2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBh
bGlnbmVkU3BhbihtX3NlbmRlck9mZnNldCwgc2VuZGVyTGltaXQpOworICAgICAgICBpZiAocmVz
dWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNpemUpIHsKKyAgICAgICAgICAgIGF1dG8gbm93ID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgICAgICAgICBpZiAobm93ID49IHRpbWVvdXQpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICAgICBz
aXplX3Qgb2xkU2VuZGVyTGltaXQgPSBzaGFyZWRSZWNlaXZlck9mZnNldCgpLmNvbXBhcmVFeGNo
YW5nZVN0cm9uZyhzZW5kZXJMaW1pdCwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJP
ZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6
bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICAgICAgaWYgKHNlbmRlckxpbWl0ID09IG9s
ZFNlbmRlckxpbWl0KQorICAgICAgICAgICAgICAgIG1fYnVmZmVyLnNlbmRlcldhaXRTZW1hcGhv
cmUoKS53YWl0Rm9yKHRpbWVvdXQgLSBub3cpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgc2VuZGVyTGltaXQgPSBjbGFtcGVkTGltaXQob2xkU2VuZGVyTGltaXQpOworICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fc2VuZGVyT2Zmc2V0LCBzZW5kZXJM
aW1pdCk7CisgICAgICAgICAgICB9CisjZWxzZQorICAgICAgICAgICAgVGhyZWFkOjp5aWVsZCgp
OworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlc3VsdC5zaXplID49IG1pbmltdW1N
ZXNzYWdlU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Cit9CisKK2lubGluZSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtl
VXBSZWNlaXZlciBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpyZWxlYXNlKHNpemVfdCBzaXplKQor
eworICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCBtaW5pbXVtTWVzc2FnZVNpemUpOworICAgIHNp
emVfdCBleHBlY3RlZFJlY2VpdmVyTGltaXQgPSBtX3NlbmRlck9mZnNldDsKKyAgICBtX3NlbmRl
ck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9zZW5kZXJPZmZzZXQpICsgc2l6ZSk7
CisgICAgQVNTRVJUKG1fc2VuZGVyT2Zmc2V0IDwgZGF0YVNpemUoKSk7CisgICAgLy8gSWYgdGhl
IHJlY2VpdmVyIHdyb3RlIG92ZXIgdGhlIHNlbmRlck9mZnNldCB3aXRoIHNlbmRlck9mZnNldFJl
Y2VpdmVySXNTbGVlcGluZ1RhZywgd2Uga25vdyBpdCBpcyBzbGVlcGluZy4KKyAgICBzaXplX3Qg
cmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNlbmRlck9mZnNldCgpLmV4Y2hhbmdlKG1fc2VuZGVyT2Zm
c2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICBpZiAocmVjZWl2ZXJMaW1pdCAh
PSBleHBlY3RlZFJlY2VpdmVyTGltaXQpCisgICAgICAgIHJldHVybiBXYWtlVXBSZWNlaXZlcjo6
WWVzOworICAgIHJldHVybiBXYWtlVXBSZWNlaXZlcjo6Tm87Cit9CisKK2lubGluZSBTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjpTcGFuIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OmFsaWduZWRTcGFu
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAgICBBU1NFUlQob2Zmc2V0IDwgZGF0
YVNpemUoKSk7CisgICAgQVNTRVJUKGxpbWl0IDwgZGF0YVNpemUoKSk7CisgICAgc2l6ZV90IGFs
aWduZWQgPSBhbGlnbk9mZnNldChvZmZzZXQpOworICAgIHNpemVfdCByZXN1bHRTaXplID0gMDsK
KyAgICBpZiAob2Zmc2V0IDwgbGltaXQpIHsKKyAgICAgICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0
ICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgIHJlc3VsdFNpemUgPSBzaXplKGFsaWdu
ZWQsIGxpbWl0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQg
fHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25l
ZCwgbGltaXQpOworICAgIH0KKyAgICByZXR1cm4geyBkYXRhKCkgKyBhbGlnbmVkLCByZXN1bHRT
aXplIH07Cit9CisKK2lubGluZSBzaXplX3QgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2l6ZShz
aXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgaWYgKCFsaW1pdCkKKyAgICAgICAg
cmV0dXJuIGRhdGFTaXplKCkgLSAxIC0gb2Zmc2V0OworICAgIGlmIChsaW1pdCA8PSBvZmZzZXQp
CisgICAgICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gb2Zmc2V0OworICAgIHJldHVybiBsaW1pdCAt
IG9mZnNldCAtIDE7Cit9CisKK2lubGluZSBzaXplX3QgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
dW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUoKSAtIDEpKTsKKyAgICByZXR1cm4gc3RkOjptaW4o
dW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkgLSAxKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ZDU4MTk0OWJmNTY0MzI5NWFiNzZjY2NjNjMzZTBmNGNhNGYxYjJkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci5jcHAKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgRmZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKworI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgSVBDIHsKKworc3RhdGljIFJlZjxXZWJL
aXQ6OlNoYXJlZE1lbW9yeT4gY3JlYXRlTWVtb3J5KHNpemVfdCBzaXplKQoreworICAgIGF1dG8g
bWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemUpOworICAgIGlmICgh
bWVtb3J5KQorICAgICAgICBDUkFTSCgpOworICAgIHJldHVybiBtZW1vcnkucmVsZWFzZU5vbk51
bGwoKTsKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cihzaXplX3QgbWVtb3J5U2l6ZSkKKyAgICA6IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoY3JlYXRl
TWVtb3J5KG1lbW9yeVNpemUpLCBtZW1vcnlTaXplKQoreworfQorCisjaWYgUExBVEZPUk0oQ09D
T0EpCitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyKFJlZjxX
ZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiBtZW1vcnksIHNpemVfdCBtZW1vcnlTaXplLCBTZW1hcGhv
cmUmJiBzZW5kZXJXYWl0U2VtYXBob3JlKQorICAgIDogbV9kYXRhU2l6ZShtZW1vcnlTaXplIC0g
aGVhZGVyU2l6ZSgpKQorICAgICwgbV9zaGFyZWRNZW1vcnkoV1RGTW92ZShtZW1vcnkpKQorICAg
ICwgbV9zZW5kZXJXYWl0U2VtYXBob3JlKFdURk1vdmUoc2VuZGVyV2FpdFNlbWFwaG9yZSkpCit7
Cit9CisjZW5kaWYKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYgbWVtb3J5LCBzaXplX3QgbWVtb3J5U2l6
ZSkKKyAgICA6IG1fZGF0YVNpemUobWVtb3J5U2l6ZSAtIGhlYWRlclNpemUoKSkKKyAgICAsIG1f
c2hhcmVkTWVtb3J5KFdURk1vdmUobWVtb3J5KSkKK3sKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3Ro
ZXIpID0gZGVmYXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6flN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIoKSA9IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXImIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3RoZXIp
Cit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgIG1fZGF0YVNpemUgPSBvdGhl
ci5tX2RhdGFTaXplOworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9IFdURk1vdmUob3RoZXIubV9z
aGFyZWRNZW1vcnkpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBtX3NlbmRlcldhaXRT
ZW1hcGhvcmUgPSBXVEZNb3ZlKG90aGVyLm1fc2VuZGVyV2FpdFNlbWFwaG9yZSk7CisjZW5kaWYK
KyAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIGlmICghbV9zaGFyZWRNZW1vcnktPmNyZWF0ZUhh
bmRsZShoYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUp
KQorICAgICAgICBDUkFTSCgpOworICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUg
aXBjSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBtX3NoYXJlZE1lbW9yeS0+c2l6ZSgpIH07Cisg
ICAgZW5jb2RlciA8PCBpcGNIYW5kbGU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgZW5jb2Rl
ciA8PCBtX3NlbmRlcldhaXRTZW1hcGhvcmUuY3JlYXRlU2VuZFJpZ2h0KCk7CisjZW5kaWYKK30K
KworT3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8V2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZT4gaXBjSGFuZGxlOworICAgIGRlY29kZXIgPj4gaXBjSGFuZGxl
OworICAgIGlmICghaXBjSGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbWFwaG9yZVNl
bmRSaWdodDsKKyAgICBkZWNvZGVyID4+IHNlbWFwaG9yZVNlbmRSaWdodDsKKyAgICBpZiAoIXNl
bWFwaG9yZVNlbmRSaWdodCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgor
ICAgIGlmIChpcGNIYW5kbGUtPmRhdGFTaXplIDwgaGVhZGVyU2l6ZSgpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6Om1hcChpcGNIYW5kbGUtPmhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRXcml0ZSk7CisgICAgaWYgKHNoYXJlZE1lbW9yeS0+c2l6ZSgpIDwgaXBjSGFu
ZGxlLT5kYXRhU2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICByZXR1cm4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7IHNoYXJlZE1lbW9y
eS5yZWxlYXNlTm9uTnVsbCgpLCBpcGNIYW5kbGUtPmRhdGFTaXplLCBTZW1hcGhvcmUgeyBXVEZN
b3ZlKCpzZW1hcGhvcmVTZW5kUmlnaHQpIH0gfTsKKyNlbHNlCisgICAgcmV0dXJuIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIgeyBzaGFyZWRNZW1vcnktPnJlbGVhc2VOb25OdWxsKCksIGlwY0hhbmRs
ZS0+ZGF0YVNpemUgfTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAxOWFkZTQ0
ODM0NWEzMGI4MGI2NjlmODcxNjNhNTZlMGQ2NWI4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaApAQCAtMCwwICsx
LDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5o
IgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+Cisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRl
ICJJUENTZW1hcGhvcmUuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgSVBDIHsKKworLy8gU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciBpcyBhIHNoYXJlZCAiYmktcGFydGl0ZSIgY2lyY3VsYXIgYnVmZmVy
IHN1cHBvcnRpbmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdlcywgc3BlY2lmaWMgZGF0YSBh
bGlnbm1lbnQgd2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUuCisvLyBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uIGFuZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHVzZSBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyIHRvIGNvbW11bmljYXRlLgorLy8KKy8vIFRoZSAiYmktcGFydGl0ZSIgaXMgaGVyZSB0byBt
ZWFuIHRoYXQgd3JpdGVzIGFuZCByZWFkcyB0byB0aGUgYnVmZmVyIG11c3QgYmUKKy8vIGNvbnRp
bnVvdXMuCisvLworLy8gVGhlIGNsaWVudCAoc2VuZGVyIG9yIHJlY2VpdmVyKSAiYWNxdWlyZXMi
IHNvbWUgYW1vdW50IG9mIGJ1ZmZlciBkYXRhLiBJZiBidWZmZXIgaGFzIG5vCisvLyBjYXBhY2l0
eSwgYWNxdWlyZSByZXR1cm5zIHdpdGggemVybyBjYXBhY2l0eS4gSWYgYnVmZmVyIGhhcyBhdCBs
ZWFzdCBhY3F1aXJlZAorLy8gY2FwYWNpdHksIGFsbCB0aGUgYXZhaWxhYmxlIGNhcGFjaXR5IGlz
IHJldHVybmVkLgorLy8KKy8vIFRoZSBjbGllbnQgInJlbGVhc2VzIiB0aGUgc29tZSBhbW91bnQg
b2YgZGF0YSwgYXQgbGVhc3QgdGhlIGFtb3VudCBhY3F1aXJlZCBidXQgcG90ZW50aWFsbHkKKy8v
IG1vcmUuCisvLworLy8gQm90aCBzZW5kZXIgYW5kIHJlY2VpdmVyIG11c3QgYWNxdWlyZSBzYW1l
IGFtb3VudCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhlIGFjcXVpcmUgc2VxdWVuY2Uu
CisvLyBJZiBzZW5kZXIgYWNxdWlyZXMgWCBhbmQgdGhlbiBZIGFtb3VudCwgcmVjZWl2ZXIgbXVz
dCBkbyB0aGUgc2FtZS4KKy8vCisvLyBUaGUgY2lyY3VsYXIgYnVmZmVyIGhhcyBmb2xsb3dpbmcg
aW1wbGVtZW50YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRoZSBkYXRhIGJldHdlZW4gW3NlbmRl
ck9mZnNldCwgcmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9mZnNldCA9PQorLy8gcmVjZWl2
ZXJPZmZzZXQsIHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4KKy8vICogUmVjZWl2ZXIgb3ducyB0
aGUgZGF0YSBiZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVyT2Zmc2V0Wy4KKy8vICogVGhl
IGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhlIGxhc3QgdmFs
dWUgaXMgcmVzZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxs
LiBGSVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBpZgorLy8gaXQg
d291bGQgdXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9mIHRoZSBob2xlIGFzIHRoZSBpbmRp
Y2F0b3IuIFRoaXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWduZWRTcGFuIGltcGxlbWVudGF0aW9u
IHRvIHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgorLy8gKiBBbGwgYXRvbWljIHZhcmlhYmxl
IGxvYWRzIGFyZSB1bnRydXN0ZWQsIHNvIHRoZXkncmUgY2xhbXBlZC4gVmlvbGF0aW9ucyBhcmUg
bm90IHJlcG9ydGVkLAorLy8gdGhvdWdoLgorLy8gU2VlIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
LgorY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6ZSk7CisgICAgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOworICAgIH5TdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKCk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgb3BlcmF0b3I9KFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisKKyAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qg
b2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8PSBkYXRhU2l6ZSgp
KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBkYXRhU2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90
IG1lc3NhZ2VBbGlnbm1lbnQ+CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQs
IHNpemVfdCBhY3F1aXJlU2l6ZSkgY29uc3QKKyAgICB7CisgICAgICAgIG9mZnNldCA9IHJvdW5k
VXBUb011bHRpcGxlT2Y8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0KTsKKyAgICAgICAgaWYgKG9m
ZnNldCArIGFjcXVpcmVTaXplID49IGRhdGFTaXplKCkpCisgICAgICAgICAgICBvZmZzZXQgPSAw
OworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAgIEF0b21pYzxzaXplX3Q+JiBz
ZW5kZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZW5kZXJPZmZzZXQ7IH0KKyAgICBBdG9t
aWM8c2l6ZV90PiYgcmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5yZWNlaXZlck9m
ZnNldDsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1
aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBoZWFkZXJTaXplKCk7IH0KKyAgICBz
aXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTaXplOyB9CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgU2VtYXBob3JlJiBzZW5kZXJXYWl0U2VtYXBob3JlKCkgeyByZXR1cm4g
bV9zZW5kZXJXYWl0U2VtYXBob3JlOyB9CisjZW5kaWYKKworICAgIC8vIFRhZyB2YWx1ZSBzdG9y
ZWQgaW4gSGVhZGVyOjpzZW5kZXJPZmZzZXQgd2hlbiByZWNlaXZlciBpcyBzbGVlcGluZywgZS5n
LiBub3QgcnVubmluZy4KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzZW5kZXJPZmZzZXRS
ZWNlaXZlcklzU2xlZXBpbmdUYWcgPSAxIDw8IDMxOworICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQg
aW4gSGVhZGVyOjpyZWNlaXZlck9mZnNldCB3aGVuIHNlbmRlciBpcyB3YWl0aW5nLCBlLmcuIHdh
aXRpbmcgb24KKyAgICAvLyBhIHNlbWFwaG9yZS4KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCByZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGluZ1RhZyA9IDEgPDwgMzE7CisKKyAgICB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIE9wdGlvbmFsPFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRNZW1v
cnk+JiYsIHNpemVfdCBtZW1vcnlTaXplLCBTZW1hcGhvcmUmJiBzZW5kZXJXYWl0U2VtYXBob3Jl
KTsKKyNlbmRpZgorICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVk
TWVtb3J5PiYmLCBzaXplX3QgbWVtb3J5U2l6ZSk7CisKKyAgICBzdHJ1Y3QgSGVhZGVyIHsKKyAg
ICAgICAgQXRvbWljPHNpemVfdD4gcmVjZWl2ZXJPZmZzZXQ7CisgICAgICAgIC8vIFBhZGRpbmcg
c28gdGhhdCB0aGUgdmFyaWFibGVzIG1vc3RseSBhY2Nlc3NlZCBieSBkaWZmZXJlbnQgcHJvY2Vz
c2VzIGRvIG5vdCBzaGFyZSBhIGNhY2hlIGxpbmUuCisgICAgICAgIC8vIFRoaXMgaXMgYW4gYXR0
ZW1wdCB0byBhdm9pZCBjYWNoZS1saW5lIGluZHVjZWQgcmVkdWN0aW9uIG9mIHBhcmFsbGVsIGFj
Y2Vzcy4KKyAgICAgICAgdWludDY0X3QgY2FjaGVMaW5lUGFkZGluZ1syXTsKKyAgICAgICAgQXRv
bWljPHNpemVfdD4gc2VuZGVyT2Zmc2V0OworICAgIH07CisgICAgSGVhZGVyJiBoZWFkZXIoKSBj
b25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxIZWFkZXIqPihtX3NoYXJlZE1lbW9yeS0+
ZGF0YSgpKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGhlYWRlclNpemUoKSB7IHJl
dHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihzdGQ6Om1heF9hbGlnbl90KT4oc2l6ZW9m
KEhlYWRlcikpOyB9CisKKyAgICBzaXplX3QgbV9kYXRhU2l6ZSB7IDAgfTsKKyAgICBSZWY8V2Vi
S2l0OjpTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIFNlbWFwaG9yZSBtX3NlbmRlcldhaXRTZW1hcGhvcmU7CisjZW5kaWYKK307CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25FbmNv
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI5MjMyZGVjZjZjNzkzYTQ1NzcxNjhlOTdlZmI1MWFhZmIzMmZkZWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25u
ZWN0aW9uRW5jb2Rlci5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJNZXNzYWdl
TmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBJUEMg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IHN0cnVjdCBBcmd1bWVudENvZGVyOwor
CisvLyBJUEMgZW5jb2RlciB3aGljaDoKKy8vICAtIEVuY29kZXMgdG8gYSBjYWxsZXIgYnVmZmVy
IHdpdGggZml4ZWQgc2l6ZSwgZG9lcyBub3QgcmVzaXplLCBzdG9wcyB3aGVuIHNpemUgcnVucyBv
dXQKKy8vICAtIERvZXMgbm90IGluaXRpYWxpemUgYWxpZ25tZW50IGdhcHMKKy8vCitjbGFzcyBT
dHJlYW1Db25uZWN0aW9uRW5jb2RlciBmaW5hbCB7CitwdWJsaWM6CisgICAgLy8gU3RyZWFtIG1l
c3NhZ2UgbmVlZHMgdG8gYmUgYXQgbGVhc3Qgc2l6ZSBvZiBTdHJlYW1TZXREZXN0aW5hdGlvbklE
IG1lc3NhZ2UuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VTaXpl
ID0gc2l6ZW9mKE1lc3NhZ2VOYW1lKSArIHNpemVvZih1aW50NjRfdCk7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IGFsaWdub2YoTWVzc2FnZU5hbWUpOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lQQ0VuY29kZXIgPSB0cnVlOworCisgICAgU3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ4X3QqIHN0
cmVhbSwgc2l6ZV90IHN0cmVhbUNhcGFjaXR5KQorICAgICAgICA6IG1fYnVmZmVyKHN0cmVhbSkK
KyAgICAgICAgLCBtX2J1ZmZlckNhcGFjaXR5KHN0cmVhbUNhcGFjaXR5KQorICAgIHsKKyAgICAg
ICAgKnRoaXMgPDwgbWVzc2FnZU5hbWU7CisgICAgfQorCisgICAgflN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyKCkgPSBkZWZhdWx0OworCisgICAgYm9vbCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCisgICAgewor
ICAgICAgICBzaXplX3QgYnVmZmVyUG9pbnRlciA9IHN0YXRpY19jYXN0PHNpemVfdD4ocmVpbnRl
cnByZXRfY2FzdDxpbnRwdHJfdD4obV9idWZmZXIgKyBtX2VuY29kZWRTaXplKSk7CisgICAgICAg
IHNpemVfdCBuZXdCdWZmZXJQb2ludGVyID0gcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm1lbnQs
IGJ1ZmZlclBvaW50ZXIpOworICAgICAgICBpZiAobmV3QnVmZmVyUG9pbnRlciA8IGJ1ZmZlclBv
aW50ZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGludHB0cl90IGFsaWdu
ZWRTaXplID0gbV9lbmNvZGVkU2l6ZSArIChuZXdCdWZmZXJQb2ludGVyIC0gYnVmZmVyUG9pbnRl
cik7CisgICAgICAgIGlmICghcmVzZXJ2ZShhbGlnbmVkU2l6ZSwgc2l6ZSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IG1fYnVmZmVyICsgYWxp
Z25lZFNpemU7CisgICAgICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOworICAgICAgICBt
X2VuY29kZWRTaXplID0gYWxpZ25lZFNpemUgKyBzaXplOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyJiBvcGVyYXRvcjw8KFQmJiB0KQorICAgIHsKKyAgICAgICAgQXJndW1lbnRDb2Rlcjxz
dGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Piwgdm9pZD46OmVu
Y29kZSgqdGhpcywgc3RkOjpmb3J3YXJkPFQ+KHQpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBBU1NFUlQoaXNWYWxpZCgpKTsgcmV0
dXJuIG1fZW5jb2RlZFNpemU7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlckNhcGFjaXR5OyB9CisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGlz
VmFsaWQoKTsgfQorcHJpdmF0ZToKKyAgICBib29sIHJlc2VydmUoc2l6ZV90IGFsaWduZWRTaXpl
LCBzaXplX3QgYWRkaXRpb25hbFNpemUpCisgICAgeworICAgICAgICBzaXplX3Qgc2l6ZSA9IGFs
aWduZWRTaXplICsgYWRkaXRpb25hbFNpemU7CisgICAgICAgIGlmIChzaXplIDwgYWxpZ25lZFNp
emUgfHwgc2l6ZSA+IG1fYnVmZmVyQ2FwYWNpdHkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyQ2Fw
YWNpdHkgPSAwOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICB1aW50OF90KiBtX2J1ZmZlcjsKKyAgICBzaXplX3Qg
bV9idWZmZXJDYXBhY2l0eTsKKyAgICBzaXplX3QgbV9lbmNvZGVkU2l6ZSB7IDAgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDkwYmMwMWE0
OGU3NTZmZWE2ZGUyZjdlY2JkMjdmZDljNzI5Y2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKQEAgLTAs
MCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgorCituYW1lc3BhY2UgSVBDIHsKKworU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZShjb25zdCBjaGFy
KiBuYW1lKQorICAgIDogbV9uYW1lKG5hbWUpCit7Cit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6ZGlzcGF0Y2goV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7
CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIG1fZnVuY3Rp
b25zLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAgICAgIEFTU0VSVCghbV9zaG91bGRR
dWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5vdCBzdXBwb3J0ZWQuCisgICAg
fQorICAgIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQoKTsKKworfQordm9pZCBTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlOjphZGRTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlJiBjb25uZWN0aW9uKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2sp
OworICAgICAgICBtX2Nvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9uKTsKKyAgICAgICAgQVNTRVJU
KCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBv
cnRlZC4KKyAgICB9CisgICAgd2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpOworfQorCit2b2lkIFN0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKG1fcHJvY2Vzc2lu
Z1RocmVhZCk7CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAg
IG1fY29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24pOworICAgICAgICBBU1NFUlQoIW1fc2hv
dWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVkLgor
ICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwo
KTsKKyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnN0b3AoKQor
eworICAgIG1fc2hvdWxkUXVpdCA9IHRydWU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYg
KCFtX3Byb2Nlc3NpbmdUaHJlYWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dha2VVcFNlbWFw
aG9yZS5zaWduYWwoKTsKKyAgICBtX3Byb2Nlc3NpbmdUaHJlYWQtPndhaXRGb3JDb21wbGV0aW9u
KCk7CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkID0gbnVsbHB0cjsKKyNlbmRpZgorfQorCit2b2lk
IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcCgpCit7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisjZW5kaWYKK30KKworSVBDOjpT
ZW1hcGhvcmUmIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFNlbWFwaG9yZSgpCit7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJuIG1fd2FrZVVwU2VtYXBob3JlOworI2Vs
c2UKKyAgICByZXR1cm4geyB9OworI2VuZGlmCit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpCit7CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgaWYgKG1fcHJvY2Vzc2luZ1RocmVhZCkgeworICAgICAgICBtX3dha2VVcFNlbWFwaG9y
ZS5zaWduYWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gdGFzayA9IFt0
aGlzXSgpIG11dGFibGUgeworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICBwcm9jZXNz
U3RyZWFtcygpOworICAgICAgICAgICAgaWYgKG1fc2hvdWxkUXVpdCkgeworICAgICAgICAgICAg
ICAgIHByb2Nlc3NTdHJlYW1zKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUud2FpdCgpOworICAgICAgICB9Cisg
ICAgfTsKKyAgICBtX3Byb2Nlc3NpbmdUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShtX25hbWUsIFdU
Rk1vdmUodGFzayksIFRocmVhZFR5cGU6OkdyYXBoaWNzLCBUaHJlYWQ6OlFPUzo6VXNlckludGVy
YWN0aXZlKTsKKyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnBy
b2Nlc3NTdHJlYW1zKCkKK3sKKyAgICBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRNZXNzYWdlTGlt
aXQgPSAxMDAwOworICAgIGJvb2wgaGFzTW9yZVRvUHJvY2VzcyA9IGZhbHNlOworICAgIGRvIHsK
KyAgICAgICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBmdW5jdGlvbnM7CisgICAgICAg
IEhhc2hTZXQ8UmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPj4gY29ubmVjdGlvbnM7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAg
ICAgICAgICAgIGZ1bmN0aW9ucy5zd2FwKG1fZnVuY3Rpb25zKTsKKyAgICAgICAgICAgIGNvbm5l
Y3Rpb25zID0gbV9jb25uZWN0aW9uczsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8mIGZ1
bmN0aW9uIDogZnVuY3Rpb25zKQorICAgICAgICAgICAgV1RGTW92ZShmdW5jdGlvbikoKTsKKwor
ICAgICAgICBoYXNNb3JlVG9Qcm9jZXNzID0gZmFsc2U7CisgICAgICAgIGZvciAoYXV0byYgY29u
bmVjdGlvbiA6IGNvbm5lY3Rpb25zKQorICAgICAgICAgICAgaGFzTW9yZVRvUHJvY2VzcyB8PSBj
b25uZWN0aW9uLT5kaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKGRlZmF1bHRNZXNzYWdlTGltaXQpID09
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpIYXNNb3JlTWVzc2FnZXM7CisgICAgfSB3aGls
ZSAoaGFzTW9yZVRvUHJvY2Vzcyk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjdi
YTNmMzQwMjkwZjMwMjRjNWI4OWEwZWEzZjgzMDA5Y2Q4MjZjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oCkBA
IC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklQ
Q1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlIDxhdG9taWM+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBJUEMgewor
CitjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9u
RGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZShjb25z
dCBjaGFyKik7CisgICAgflN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUoKSA9IGRlZmF1bHQ7Cisg
ICAgdm9pZCBhZGRTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJik7
CisgICAgdm9pZCByZW1vdmVTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlJik7CisKKyAgICB2b2lkIGRpc3BhdGNoKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHN0b3AoKTsKKworICAgIHZvaWQgd2FrZVVwKCk7CisKKyAgICBTZW1hcGhv
cmUmIHdha2VVcFNlbWFwaG9yZSgpOworcHJpdmF0ZToKKyAgICB2b2lkIHdha2VVcFByb2Nlc3Np
bmdUaHJlYWQoKTsKKyAgICB2b2lkIHByb2Nlc3NTdHJlYW1zKCk7CisKKyAgICBjb25zdCBjaGFy
KiBjb25zdCBtX25hbWU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgU2VtYXBob3JlIG1fd2Fr
ZVVwU2VtYXBob3JlOworI2VuZGlmCisgICAgUmVmUHRyPFRocmVhZD4gbV9wcm9jZXNzaW5nVGhy
ZWFkOworCisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9zaG91bGRRdWl0IHsgZmFsc2UgfTsKKwor
ICAgIExvY2sgbV9sb2NrOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fZnVuY3Rpb25z
OworICAgIEhhc2hTZXQ8UmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPj4gbV9jb25uZWN0
aW9uczsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjBkYTJmNGRhMmMxNWJhODliZTI3
OWU2YzIwMGM2NjI0MTRiY2VjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTI1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZTo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoQ29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSwgU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZSYgd29ya1F1ZXVlKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisg
ICAgLCBtX3dvcmtRdWV1ZSh3b3JrUXVldWUpCisgICAgLCBtX2J1ZmZlcihXVEZNb3ZlKHN0cmVh
bSkpCit7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2
aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpCit7CisgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0
aGlzLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIG1fd29ya1F1ZXVlLmFkZFN0
cmVhbUNvbm5lY3Rpb24oKnRoaXMpOworfQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlOjpzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgbV93b3Jr
UXVldWUucmVtb3ZlU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2U6OmVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1
ZV9wdHI8RGVjb2Rlcj4mJiBtZXNzYWdlKQoreworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX291dE9mU3RyZWFtTWVzc2FnZXNMb2NrKTsKKyAgICAgICAgbV9vdXRPZlN0
cmVhbU1lc3NhZ2VzLmFwcGVuZChXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICB9CisgICAgbV93b3Jr
UXVldWUud2FrZVVwKCk7Cit9CisKK09wdGlvbmFsPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
OjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKCkKK3sKKyAgICBz
aXplX3QgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNlbmRlck9mZnNldCgpLmxvYWQoc3RkOjptZW1v
cnlfb3JkZXJfYWNxdWlyZSk7CisgICAgaWYgKHJlY2VpdmVyTGltaXQgPT0gU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9yZWNl
aXZlck9mZnNldCwgcmVjZWl2ZXJMaW1pdCk7CisgICAgaWYgKHJlc3VsdC5zaXplIDwgbWluaW11
bU1lc3NhZ2VTaXplKSB7CisgICAgICAgIHJlY2VpdmVyTGltaXQgPSBzaGFyZWRTZW5kZXJPZmZz
ZXQoKS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcocmVjZWl2ZXJMaW1pdCwgU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9yeV9v
cmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAgICAgQVNTRVJU
KCEocmVjZWl2ZXJMaW1pdCAmIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJl
Y2VpdmVySXNTbGVlcGluZ1RhZykpOworICAgICAgICByZWNlaXZlckxpbWl0ID0gY2xhbXBlZExp
bWl0KHJlY2VpdmVyTGltaXQpOworICAgICAgICByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3JlY2Vp
dmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0KTsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0LnNpemUg
Pj0gbWluaW11bU1lc3NhZ2VTaXplKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJl
bGVhc2Uoc2l6ZV90IHJlYWRTaXplKQoreworICAgIEFTU0VSVChyZWFkU2l6ZSk7CisgICAgcmVh
ZFNpemUgPSBzdGQ6Om1heChyZWFkU2l6ZSwgbWluaW11bU1lc3NhZ2VTaXplKTsKKyAgICBzaXpl
X3QgcmVjZWl2ZXJPZmZzZXQgPSB3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1fcmVjZWl2ZXJPZmZz
ZXQpICsgcmVhZFNpemUpOworICAgIHNpemVfdCBvbGRSZWNlaXZlck9mZnNldCA9IHNoYXJlZFJl
Y2VpdmVyT2Zmc2V0KCkuZXhjaGFuZ2UocmVjZWl2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVy
X2FjcV9yZWwpOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgLy8gSWYgdGhlIHNlbmRlciB3
cm90ZSBvdmVyIHJlY2VpdmVyT2Zmc2V0LCBpdCBtZWFucyB0aGUgc2VuZGVyIGlzIHdhaXRpbmcu
CisgICAgaWYgKG9sZFJlY2VpdmVyT2Zmc2V0ICE9IG1fcmVjZWl2ZXJPZmZzZXQpCisgICAgICAg
IG1fYnVmZmVyLnNlbmRlcldhaXRTZW1hcGhvcmUoKS5zaWduYWwoKTsKKyNlbmRpZgorCisgICAg
bV9yZWNlaXZlck9mZnNldCA9IHJlY2VpdmVyT2Zmc2V0OworfQorCitTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZTo6U3BhbiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4o
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQoreworICAgIEFTU0VSVChvZmZzZXQgPCBkYXRh
U2l6ZSgpKTsKKyAgICBBU1NFUlQobGltaXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBzaXplX3QgYWxp
Z25lZCA9IGFsaWduT2Zmc2V0KG9mZnNldCk7CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSAwOwor
ICAgIGlmIChvZmZzZXQgPCBsaW1pdCkgeworICAgICAgICBpZiAob2Zmc2V0IDw9IGFsaWduZWQg
JiYgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25l
ZCwgbGltaXQpOworICAgIH0gZWxzZSBpZiAob2Zmc2V0ID4gbGltaXQpIHsKKyAgICAgICAgaWYg
KGFsaWduZWQgPj0gb2Zmc2V0IHx8IGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgIHJlc3Vs
dFNpemUgPSBzaXplKGFsaWduZWQsIGxpbWl0KTsKKyAgICB9CisgICAgcmV0dXJuIHsgZGF0YSgp
ICsgYWxpZ25lZCwgcmVzdWx0U2l6ZSB9OworfQorCitzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OnNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQoreworICAgIGlmIChv
ZmZzZXQgPD0gbGltaXQpCisgICAgICAgIHJldHVybiBsaW1pdCAtIG9mZnNldDsKKyAgICByZXR1
cm4gZGF0YVNpemUoKSAtIG9mZnNldDsKK30KKworc2l6ZV90IFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjpjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdAoreworICAg
IEFTU0VSVCh1bnRydXN0ZWRMaW1pdCA8IChkYXRhU2l6ZSgpIC0gMSkpOworICAgIHJldHVybiBz
dGQ6Om1pbih1bnRydXN0ZWRMaW1pdCwgZGF0YVNpemUoKSAtIDEpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDIwYjkyMTM2ZmY2YjZhOWI5ZTE5OGRjOTczYjNkM2E2ZWE1NjYyOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaApAQCAtMCwwICsxLDI4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJF
bmNvZGVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCisj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1l
c3BhY2UgSVBDIHsKKworY2xhc3MgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTsKKworY2xhc3Mg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+LCBwcm90ZWN0ZWQgTWVzc2FnZVJlY2VpdmVRdWV1
ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2Up
OworcHVibGljOgorICAgIH5TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSgpIG92ZXJyaWRlID0g
ZGVmYXVsdDsKKworICAgIENvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nvbm5l
Y3Rpb247IH0KKworICAgIGVudW0gRGlzcGF0Y2hSZXN1bHQgOiBib29sIHsKKyAgICAgICAgSGFz
Tm9NZXNzYWdlcywKKyAgICAgICAgSGFzTW9yZU1lc3NhZ2VzCisgICAgfTsKKyAgICB2aXJ0dWFs
IERpc3BhdGNoUmVzdWx0IGRpc3BhdGNoU3RyZWFtTWVzc2FnZXMoc2l6ZV90IG1lc3NhZ2VMaW1p
dCkgPSAwOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHZvaWQg
c2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLik7CisK
K3Byb3RlY3RlZDoKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShJUEM6OkNvbm5lY3Rp
b24mLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUm
KTsKKworICAgIHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlc0lt
cGwoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKworICAgIC8vIE1lc3Nh
Z2VSZWNlaXZlUXVldWUKKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJikgZmluYWw7CisKKyAgICBzdHJ1Y3QgU3BhbiB7CisgICAg
ICAgIHVpbnQ4X3QqIGRhdGE7CisgICAgICAgIHNpemVfdCBzaXplOworICAgIH07CisgICAgT3B0
aW9uYWw8U3Bhbj4gdHJ5QXF1aXJlKCk7CisKKyAgICB2b2lkIHJlbGVhc2Uoc2l6ZV90IHJlYWRT
aXplKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtaW5pbXVtTWVzc2FnZVNpemUgPSBT
dHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWluaW11bU1lc3NhZ2VTaXplOworICAgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
cjo6bWVzc2FnZUFsaWdubWVudDsKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxp
bWl0KTsKKyAgICBzaXplX3QgY2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29u
c3Q7CisgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIud3JhcE9mZnNldChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNp
emVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VB
bGlnbm1lbnQ+KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAgIEF0b21pYzxzaXpl
X3Q+JiBzaGFyZWRTZW5kZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZW5kZXJPZmZzZXQo
KTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0dXJu
IG1fYnVmZmVyLnJlY2VpdmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQorCisgICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gbV9jb25uZWN0aW9uOworICAgIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIG1fd29ya1F1
ZXVlOworCisgICAgc2l6ZV90IG1fcmVjZWl2ZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKKworICAgIExvY2sgbV9vdXRPZlN0cmVhbU1lc3NhZ2Vz
TG9jazsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IG1fb3V0T2ZTdHJlYW1N
ZXNzYWdlczsKKworICAgIGZyaWVuZCBjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOwor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgordm9pZCBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZTo6c2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1
bWVudHMmJi4uLiBhcmd1bWVudHMpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kaW5n
IHRvIGJ1ZmZlci4KKyAgICBhdXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4o
SVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CisgICAg
KCplbmNvZGVyIDw8IC4uLiA8PCBhcmd1bWVudHMpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZFN5
bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsKK30KKworLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlv
biByZXByZXNlbnRzIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gc3RyZWFtIHNlbmRlciBhbmQgcmVj
ZWl2ZXIsIGFzIHVzZWQgYnkgdGhlIHJlY2VpdmVyLgorLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlv
bjoKKy8vICAqIEhvbGRzIHRoZSBtZXNzYWdlcyB0b3dhcmRzIHRoZSByZWNlaXZlci4KKy8vICAq
IFNlbmRzIHRoZSByZXBsaWVzIGJhY2sgdG8gdGhlIHNlbmRlciB2aWEgdGhlIHN0cmVhbSBvciBu
b3JtYWwgQ29ubmVjdGlvbiBmYWxsYmFjay4KKy8vCisvLyBSZWNlaXZlciB0ZW1wbGF0ZSBjb250
cmFjdDoKKy8vICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZSYsIERlY29kZXImKTsKKy8vCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4K
K2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29u
bmVjdGlvbj4gY3JlYXRlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpKTsKKyAg
ICB9CisgICAgflN0cmVhbVNlcnZlckNvbm5lY3Rpb24oKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAg
ICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXImLCBSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIC8vIFN0b3BzIHRoZSBtZXNzYWdlIHJlY2VpcHQu
IE5vdGU6IGFscmVhZHkgcmVjZWl2ZWQgbWVzc2FnZXMgbWlnaHQgc3RpbGwgYmUgZGVsaXZlcmVk
LgorICAgIHZvaWQgc3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCk7CisKKyAgICAvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSBvdmVy
cmlkZXMuCisgICAgRGlzcGF0Y2hSZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3Qg
bWVzc2FnZUxpbWl0KSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJl
YW1CdWZmZXIsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICAgICAg
OiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1
ZmZlciksIHdvcmtRdWV1ZSkKKyAgICB7CisgICAgfQorICAgIGJvb2wgcHJvY2Vzc1NldFN0cmVh
bURlc3RpbmF0aW9uSUQoRGVjb2RlciYmLCBSZWZQdHI8UmVjZWl2ZXI+JiBjdXJyZW50UmVjZWl2
ZXIpOworICAgIGJvb2wgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiwgUmVjZWl2ZXIm
KTsKKyAgICBib29sIGRpc3BhdGNoT3V0T2ZTdHJlYW1NZXNzYWdlKERlY29kZXImJik7CisgICAg
TG9jayBtX3JlY2VpdmVyc0xvY2s7CisgICAgdXNpbmcgUmVjZWl2ZXJzTWFwID0gSGFzaE1hcDxz
dGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+LCBSZWY8UmVjZWl2ZXI+PjsKKyAgICBSZWNlaXZl
cnNNYXAgbV9yZWNlaXZlcnM7CisKKyAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklE
ID0gMDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYg
cmVjZWl2ZXIsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpCit7CisgICAgeworICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9y
ZWNlaXZlcnMuY29udGFpbnMoa2V5KSk7CisgICAgICAgIG1fcmVjZWl2ZXJzLmFkZChrZXksIG1h
a2VSZWYocmVjZWl2ZXIpKTsKKyAgICB9CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6
OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPFJlY2VpdmVyPjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0
aW5hdGlvbklEKTsKKyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICBBU1NFUlQobV9yZWNlaXZlcnMuY29udGFp
bnMoa2V5KSk7CisgICAgbV9yZWNlaXZlcnMucmVtb3ZlKGtleSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFJlY2VpdmVyPgorU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OkRpc3BhdGNoUmVz
dWx0IFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3Nh
Z2VzKHNpemVfdCBtZXNzYWdlTGltaXQpCit7CisgICAgUmVmUHRyPFJlY2VpdmVyPiBjdXJyZW50
UmVjZWl2ZXI7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBXVEY6OmlzVmFsaWQoUmVjZWl2ZXJO
YW1lKS4KKyAgICB1aW50OF90IGN1cnJlbnRSZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50
OF90PihSZWNlaXZlck5hbWU6OkludmFsaWQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtZXNzYWdlTGltaXQ7ICsraSkgeworICAgICAgICBhdXRvIHNwYW4gPSB0cnlBcXVpcmUoKTsK
KyAgICAgICAgaWYgKCFzcGFuKQorICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpI
YXNOb01lc3NhZ2VzOworICAgICAgICBJUEM6OkRlY29kZXIgZGVjb2RlciB7IHNwYW4tPmRhdGEs
IHNwYW4tPnNpemUsIG1fY3VycmVudERlc3RpbmF0aW9uSUQgfTsKKyAgICAgICAgaWYgKCFkZWNv
ZGVyLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAg
cmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICB9CisgICAgICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3Rp
bmF0aW9uSUQpIHsKKyAgICAgICAgICAgIGlmICghcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9u
SUQoV1RGTW92ZShkZWNvZGVyKSwgY3VycmVudFJlY2VpdmVyKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3Nh
Z2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKSB7CisgICAgICAgICAgICBpZiAoIWRp
c3BhdGNoT3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChjdXJyZW50UmVjZWl2ZXJOYW1lICE9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkgeworICAg
ICAgICAgICAgY3VycmVudFJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9
IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFjdXJyZW50UmVjZWl2ZXIpIHsKKyAg
ICAgICAgICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4o
Y3VycmVudFJlY2VpdmVyTmFtZSksIG1fY3VycmVudERlc3RpbmF0aW9uSUQpOworICAgICAgICAg
ICAgaWYgKCFSZWNlaXZlcnNNYXA6OmlzVmFsaWRLZXkoa2V5KSkgeworICAgICAgICAgICAgICAg
IG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhh
c05vTWVzc2FnZXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgICAgICBjdXJyZW50UmVjZWl2ZXIgPSBt
X3JlY2VpdmVycy5nZXQoa2V5KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNl
aXZlcikgeworICAgICAgICAgICAgLy8gVmFsaWQgc2NlbmFyaW8gaXMgd2hlbiByZWNlaXZlciBo
YXMgYmVlbiByZW1vdmVkLCBidXQgdGhlcmUgYXJlIG1lc3NhZ2VzIGZvciBpdCBpbiB0aGUgYnVm
ZmVyLgorICAgICAgICAgICAgLy8gRklYTUU6IFNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgcmVjZWl2
ZXIsIHdlIGRvbid0IGtub3cgaG93IHRvIGRlY29kZSB0aGUgbWVzc2FnZS4KKyAgICAgICAgICAg
IC8vIFRoaXMgbWVhbnMgd2UgbXVzdCB0aW1lb3V0IGV2ZXJ5IHJlY2VpdmVyIGluIHRoZSBzdHJl
YW0gY29ubmVjdGlvbi4KKyAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBhc3NlcnQgdGhhdCB0
aGUgcmVjZWl2ZXJzIGFyZSBlbXB0eSwgYXMgd2Ugb25seSBoYXZlIHVwIHRvIG9uZSByZWNlaXZl
ciBpbgorICAgICAgICAgICAgLy8gYSBzdHJlYW0gY29ubmVjdGlvbiB1bnRpbCBwb3NzaWJpbGl0
eSBvZiBza2lwcGluZyBpcyBpbXBsZW1lbnRlZCBwcm9wZXJseS4KKyAgICAgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgICAgIEFTU0VSVCht
X3JlY2VpdmVycy5pc0VtcHR5KCkpOworICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0
OjpIYXNOb01lc3NhZ2VzOworICAgICAgICB9CisgICAgICAgIGlmICghZGlzcGF0Y2hTdHJlYW1N
ZXNzYWdlKFdURk1vdmUoZGVjb2RlciksICpjdXJyZW50UmVjZWl2ZXIpKQorICAgICAgICAgICAg
cmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgIH0KKyAgICByZXR1cm4g
RGlzcGF0Y2hSZXN1bHQ6Okhhc01vcmVNZXNzYWdlczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
UmVjZWl2ZXI+Citib29sIFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9jZXNz
U2V0U3RyZWFtRGVzdGluYXRpb25JRChEZWNvZGVyJiYgZGVjb2RlciwgUmVmUHRyPFJlY2VpdmVy
PiYgY3VycmVudFJlY2VpdmVyKQoreworICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVzdGluYXRpb25JRCkpIHsKKyAgICAgICAgbV9jb25u
ZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VO
YW1lKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChtX2N1cnJlbnRE
ZXN0aW5hdGlvbklEICE9IGRlc3RpbmF0aW9uSUQpIHsKKyAgICAgICAgbV9jdXJyZW50RGVzdGlu
YXRpb25JRCA9IGRlc3RpbmF0aW9uSUQ7CisgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxw
dHI7CisgICAgfQorICAgIHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9v
bCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
KERlY29kZXImJiBkZWNvZGVyLCBSZWNlaXZlciYgcmVjZWl2ZXIpCit7CisgICAgcmVjZWl2ZXIu
ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKnRoaXMsIGRlY29kZXIpOworICAgIGlmICghZGVjb2Rl
ci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9v
bCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1l
c3NhZ2UoRGVjb2RlciYmIGRlY29kZXIpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
IG1lc3NhZ2U7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZT
dHJlYW1NZXNzYWdlc0xvY2spOworICAgICAgICBpZiAobV9vdXRPZlN0cmVhbU1lc3NhZ2VzLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbWVzc2FnZSA9IG1f
b3V0T2ZTdHJlYW1NZXNzYWdlcy50YWtlRmlyc3QoKTsKKyAgICB9CisgICAgaWYgKCFtZXNzYWdl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8UmVjZWl2ZXI+IHJlY2VpdmVy
OworICAgIHsKKyAgICAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1
aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCBtZXNzYWdlLT5kZXN0aW5h
dGlvbklEKCkpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9j
ayk7CisgICAgICAgIHJlY2VpdmVyID0gbV9yZWNlaXZlcnMuZ2V0KGtleSk7CisgICAgfQorICAg
IGlmIChyZWNlaXZlcikgeworICAgICAgICByZWNlaXZlci0+ZGlkUmVjZWl2ZVN0cmVhbU1lc3Nh
Z2UoKnRoaXMsICptZXNzYWdlKTsKKyAgICAgICAgaWYgKCFtZXNzYWdlLT5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgLy8gSWYgcmVjZWl2ZXIgZG9lcyBub3QgZXhpc3QgaWYgaXQg
aGFzIGJlZW4gcmVtb3ZlZCBidXQgbWVzc2FnZXMgYXJlIHN0aWxsIHBlbmRpbmcgdG8gYmUKKyAg
ICAvLyBwcm9jZXNzZWQuIEl0J3Mgb2sgdG8gc2tpcCBzdWNoIG1lc3NhZ2VzLgorICAgIC8vIEZJ
WE1FOiBOb3RlLCBjb3JyZXNwb25kaW5nIHNraXAgaXMgbm90IHBvc3NpYmxlIGF0IHRoZSBtb21l
bnQgZm9yIHN0cmVhbSBtZXNzYWdlcy4KKyAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZl
clBvc2l0aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaAppbmRleCA3ODU0ZmE4ZjE4NjhmYjhlNDU2MjI4
OWZkZGY2ZjI3OTVhZjJkOTBkLi44M2Q5OWYwY2JjOGZlMDQ4MjBiNDc4M2M5YzA3NmFiNTdhM2Vh
YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9y
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmgKQEAg
LTI1LDkgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVy
LmgiCiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNs
dWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBhNmZmZjQ3ZDM0NWRlY2JkZjkxZTYxYzI3M2I4NjJi
ZjBiZjNjZjZjLi5kNWZlOWExYjhiOWJmZmFjYjY2OTBmYmIyMmViNDgzMjEyNGZjYWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTI0LDggKzI0LDkgQEAg
aW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIAorZnJvbSBtb2RlbCBp
bXBvcnQgTWVzc2FnZVJlY2VpdmVyLCBNZXNzYWdlCiBmcm9tIHdlYmtpdCBpbXBvcnQgcGFyc2Vy
Ci1mcm9tIHdlYmtpdC5tb2RlbCBpbXBvcnQgQlVJTFRJTl9BVFRSSUJVVEUsIEFTWU5DX0FUVFJJ
QlVURSwgU1lOQ0hST05PVVNfQVRUUklCVVRFCitmcm9tIHdlYmtpdC5tb2RlbCBpbXBvcnQgQlVJ
TFRJTl9BVFRSSUJVVEUsIEFTWU5DX0FUVFJJQlVURSwgU1lOQ0hST05PVVNfQVRUUklCVVRFLCBT
VFJFQU1fQVRUUklCVVRFLCBXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURQogCiBfbGljZW5zZV9o
ZWFkZXIgPSAiIiIvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgpAQCAtNTMsMTMgKzU0LDExIEBAIF9saWNlbnNlX2hlYWRlciA9ICIi
Ii8qCiAKICIiIgogCi1XQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rp
b24nCiBXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSA9ICdXYW50c0Rpc3BhdGNoTWVz
c2FnZScKIFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFID0gJ1dhbnRzQXN5
bmNEaXNwYXRjaE1lc3NhZ2UnCiBMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFID0gJ0xlZ2FjeVJl
Y2VpdmVyJwogTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFID0gJ05vdFJlZkNvdW50
ZWQnCiAKLQogZGVmIHJlY2VpdmVyX2VudW1lcmF0b3Jfb3JkZXJfa2V5KHJlY2VpdmVyX25hbWUp
OgogICAgIGlmIHJlY2VpdmVyX25hbWUgPT0gJ0lQQyc6CiAgICAgICAgIHJldHVybiAxCkBAIC0y
MDYsNyArMjA1LDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVy
LCBtZXNzYWdlKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICB1c2luZyBBc3luY1Jl
cGx5ID0gJXNBc3luY1JlcGx5O1xuJyAlIG1lc3NhZ2UubmFtZSkKICAgICAgICAgZWxpZiBtZXNz
YWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKToKICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICB1c2luZyBEZWxheWVkUmVwbHkgPSAlc0RlbGF5ZWRSZXBseTtcbicg
JSBtZXNzYWdlLm5hbWUpCi0gICAgICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJP
Tk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUp
OgorICAgICAgICBpZiAobWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVU
RSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSkpIGFuZCBub3QgcmVj
ZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToKICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYnKQogICAgICAgICAgICAgaWYgbGVuKHNlbmRfcGFyYW1l
dGVycyk6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLCAlcycgJSBjb21wbGV0aW9u
X2hhbmRsZXJfcGFyYW1ldGVycykKQEAgLTI1NCw2ICsyNTMsNyBAQCBkZWYgdHlwZXNfdGhhdF9j
YW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgIHJldHVybiBmcm96ZW5zZXQoWwogICAg
ICAgICAnSVBDOjpEYXRhUmVmZXJlbmNlJywKICAgICAgICAgJ0lQQzo6Rm9udFJlZmVyZW5jZScs
CisgICAgICAgICdJUEM6OlNlbWFwaG9yZScsCiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywKICAg
ICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdTdHJpbmcnLApAQCAtNTYzLDEwICs1NjMsMTUg
QEAgZGVmIHN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgICAg
ICBkaXNwYXRjaF9mdW5jdGlvbiArPSAnQXN5bmMnCiAKICAgICB3YW50c19jb25uZWN0aW9uID0g
bWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5o
YXNfYXR0cmlidXRlKFdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFKQorICAgIG1heWJlX3JlcGx5
X2VuY29kZXIgPSAiLCAqcmVwbHlFbmNvZGVyIgorICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1
dGUoU1RSRUFNX0FUVFJJQlVURSk6CisgICAgICAgIG1heWJlX3JlcGx5X2VuY29kZXIgPSAnJwor
ICAgIGVsaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3Ig
bWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgIG1heWJlX3Jl
cGx5X2VuY29kZXIgPSAnLCByZXBseUVuY29kZXInCiAKICAgICByZXN1bHQgPSBbXQogICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjol
czo6JXM6Om5hbWUoKSkge1xuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQotICAg
IHJlc3VsdC5hcHBlbmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglc2RlY29k
ZXIsICVzcmVwbHlFbmNvZGVyLCB0aGlzLCAmJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlvbiwg
cmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnY29ubmVjdGlvbiwgJyBpZiB3YW50c19jb25u
ZWN0aW9uIGVsc2UgJycsICcnIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19B
VFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpIGVsc2Ug
JyonLCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKSkpCisgICAgcmVzdWx0LmFw
cGVuZCgnICAgICAgICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzZGVjb2RlciVzLCB0aGlz
LCAmJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5u
YW1lLCAnY29ubmVjdGlvbiwgJyBpZiB3YW50c19jb25uZWN0aW9uIGVsc2UgJycsIG1heWJlX3Jl
cGx5X2VuY29kZXIsIGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpKSkKICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybjtcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IH1cbicpCiAgICAgcmV0dXJuIHN1cnJvdW5kX2luX2NvbmRpdGlvbignJy5qb2luKHJlc3VsdCks
IG1lc3NhZ2UuY29uZGl0aW9uKQpAQCAtODYzLDcgKzg2OCw3IEBAIGRlZiBnZW5lcmF0ZV9tZXNz
YWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRl
cnMgIT0gTm9uZSBhbmQgKG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJV
VEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpKToKICAgICAgICAg
ICAgIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpCiAKLSAgICBpZiBk
ZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzOgorICAgIGlmIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2Fn
ZXMgYW5kIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgogICAg
ICAgICByZXN1bHQuYXBwZW5kKCduYW1lc3BhY2UgTWVzc2FnZXMge1xuXG5uYW1lc3BhY2UgJXMg
e1xuXG4nICUgcmVjZWl2ZXIubmFtZSkKIAogICAgICAgICBmb3IgbWVzc2FnZSBpbiBkZWxheWVk
X29yX2FzeW5jX21lc3NhZ2VzOgpAQCAtOTExLDI1ICs5MTYsNDQgQEAgZGVmIGdlbmVyYXRlX21l
c3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhc3lu
Y19tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkKIAotICAgIGlmIGFzeW5jX21lc3NhZ2VzIG9yIHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpIG9y
IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRS
SUJVVEUpOgotICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlJXNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxu
JyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1
dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykpCisgICAgaWYgcmVjZWl2ZXIu
aGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgn
dm9pZCAlczo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZSYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZl
ci5uYW1lKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKLSAgICAgICAgaWYgbm90IHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKToK
KyAgICAgICAgYXNzZXJ0KHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVD
RUlWRVJfQVRUUklCVVRFKSkKKyAgICAgICAgYXNzZXJ0KG5vdCByZWNlaXZlci5oYXNfYXR0cmli
dXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSkKKyAgICAgICAgYXNzZXJ0KG5v
dCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRU
UklCVVRFKSkKKworICAgICAgICByZXN1bHQgKz0gW2FzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJl
Y2VpdmVyLCBtZXNzYWdlKSBmb3IgbWVzc2FnZSBpbiBhc3luY19tZXNzYWdlc10KKyAgICAgICAg
cmVzdWx0ICs9IFtzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3Ig
bWVzc2FnZSBpbiBzeW5jX21lc3NhZ2VzXQorCisgICAgICAgIGlmIChyZWNlaXZlci5zdXBlcmNs
YXNzKToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZVN0cmVh
bU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xhc3Mp
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9Q
QVJBTShkZWNvZGVyKTtcbicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VE
X1BBUkFNKGNvbm5lY3Rpb24pO1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCisg
ICAgZWxpZiBhc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJ
U1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRT
X0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKKyAgICAgICAgcmVjZWl2ZV92YXJp
YW50ID0gcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNF
SVZFUl9BVFRSSUJVVEUpIGVsc2UgJycKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6
ZGlkUmVjZWl2ZSVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVj
b2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZV92YXJpYW50KSkKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKKyAgICAgICAgaWYgbm90IChyZWNlaXZlci5oYXNf
YXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIu
aGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKSk6CiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7XG4nKQogCiAgICAg
ICAgIHJlc3VsdCArPSBbYXN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2Up
IGZvciBtZXNzYWdlIGluIGFzeW5jX21lc3NhZ2VzXQorCiAgICAgICAgIGlmIHJlY2VpdmVyLmhh
c19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVy
Lmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChkaXNwYXRjaE1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlcikpXG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBy
ZXR1cm47XG4nKQogICAgICAgICBpZiAocmVjZWl2ZXIuc3VwZXJjbGFzcyk6Ci0gICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgJXM6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNsYXNzKSkKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTtc
bicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcywgcmVjZWl2ZV92YXJpYW50KSkKICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlv
bik7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShkZWNv
ZGVyKTtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7XG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQogCi0gICAgaWYgc3luY19t
ZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0Vf
QVRUUklCVVRFKToKKyAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRU
UklCVVRFKSBhbmQgKHN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5U
U19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCdc
bicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmVTeW5jJXNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNvZGVyKVxuJyAlIChyZWNlaXZl
ci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JF
Q0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0
ZXN0LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5w
eQppbmRleCBlNGRlZTdlYjBhZjcwOGZkNTA3ZjRjOTZmYWU0ZTI1ZTE2NTZjMDhiLi40NDQwOWI4
ODdkZjU3Mjc1MzFjYWY4MjcwZTU1YWJhYjQ5NzQxNDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKQEAgLTM5LDcgKzM5LDcgQEAg
dGVzdHNfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKG1vZHVsZV9kaXJlY3RvcnksICd0ZXN0cycp
CiAKIHJlc2V0X3Jlc3VsdHMgPSBGYWxzZQogCi1fdGVzdF9yZWNlaXZlcl9uYW1lcyA9IFsnVGVz
dFdpdGhTdXBlcmNsYXNzJywgJ1Rlc3RXaXRoTGVnYWN5UmVjZWl2ZXInLCAnVGVzdFdpdGhvdXRB
dHRyaWJ1dGVzJywgJ1Rlc3RXaXRoSWZNZXNzYWdlJywgJ1Rlc3RXaXRoU2VtYXBob3JlJ10KK190
ZXN0X3JlY2VpdmVyX25hbWVzID0gWydUZXN0V2l0aFN1cGVyY2xhc3MnLCAnVGVzdFdpdGhMZWdh
Y3lSZWNlaXZlcicsICdUZXN0V2l0aG91dEF0dHJpYnV0ZXMnLCAnVGVzdFdpdGhJZk1lc3NhZ2Un
LCAnVGVzdFdpdGhTZW1hcGhvcmUnLCAnVGVzdFdpdGhTdHJlYW0nLCAnVGVzdFdpdGhTdHJlYW1C
dWZmZXInXQogCiAKIGRlZiByZWNlaXZlcl9oZWFkZXJfZmlsZV9uYW1lKHJlY2VpdmVyX25hbWUp
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKaW5kZXggYWMzODY4OTA1Y2ZjZDMw
YThjNjM2ZjNmZTA0N2E3NGE0YTMxNGE4My4uZmY1MzEyZTk3YWMwMTAwY2ZhOGJjOTY0ODFlN2Zh
NTMyYTJjZmMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2Rl
bC5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5CkBAIC0yNyw2
ICsyNyw4IEBAIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IENvdW50ZXIsIGRlZmF1bHRkaWN0CiBC
VUlMVElOX0FUVFJJQlVURSA9ICJCdWlsdGluIgogQVNZTkNfQVRUUklCVVRFID0gIkFzeW5jIgog
U1lOQ0hST05PVVNfQVRUUklCVVRFID0gJ1N5bmNocm9ub3VzJworU1RSRUFNX0FUVFJJQlVURSA9
ICJTdHJlYW0iCitXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24n
CiAKIGNsYXNzIE1lc3NhZ2VSZWNlaXZlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBuYW1lLCBzdXBlcmNsYXNzLCBhdHRyaWJ1dGVzLCBtZXNzYWdlcywgY29uZGl0aW9uKToKQEAg
LTcyLDcgKzc0LDkgQEAgaXBjX3JlY2VpdmVyID0gTWVzc2FnZVJlY2VpdmVyKG5hbWU9IklQQyIs
IHN1cGVyY2xhc3M9Tm9uZSwgYXR0cmlidXRlcz1bQlVJTFRJTl8KICAgICBNZXNzYWdlKCdXcmFw
cGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZycsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9B
VFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBN
ZXNzYWdlKCdTeW5jTWVzc2FnZVJlcGx5JywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FU
VFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdJbml0aWFsaXplQ29ubmVj
dGlvbicsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249
IlBMQVRGT1JNKENPQ09BKSIpLAotICAgIE1lc3NhZ2UoJ0xlZ2FjeVNlc3Npb25TdGF0ZScsIFtd
LCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSkKKyAg
ICBNZXNzYWdlKCdMZWdhY3lTZXNzaW9uU3RhdGUnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxU
SU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2UoJ1NldFN0cmVhbURl
c3RpbmF0aW9uSUQnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29u
ZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2UoJ1Byb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UnLCBb
XSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpCiBd
LCBjb25kaXRpb249Tm9uZSkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL01ha2VmaWxlIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9NYWtlZmlsZQppbmRleCBiMWRkNzk4ODY1YTUxNTQ5ODIwYjcwZGJkYjYxYWNkNmVhY2JjMWU4
Li5iMjk1YjhjNzhkYzJmYWQ1YmUxYjY5MTY3ZjViNTFhMmMwYjEyZWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKQEAgLTEsMiArMSwyIEBACiBhbGw6
Ci0JcHl0aG9uIC4uLy4uL2dlbmVyYXRlLW1lc3NhZ2UtcmVjZWl2ZXIucHkgLiBUZXN0V2l0aFN1
cGVyY2xhc3MgVGVzdFdpdGhMZWdhY3lSZWNlaXZlciBUZXN0V2l0aG91dEF0dHJpYnV0ZXMgVGVz
dFdpdGhJZk1lc3NhZ2UgVGVzdFdpdGhTZW1hcGhvcmUKKwlweXRob24gLi4vLi4vZ2VuZXJhdGUt
bWVzc2FnZS1yZWNlaXZlci5weSAuIFRlc3RXaXRoU3VwZXJjbGFzcyBUZXN0V2l0aExlZ2FjeVJl
Y2VpdmVyIFRlc3RXaXRob3V0QXR0cmlidXRlcyBUZXN0V2l0aElmTWVzc2FnZSBUZXN0V2l0aFNl
bWFwaG9yZSBUZXN0V2l0aFN0cmVhbSBUZXN0V2l0aFN0cmVhbUJ1ZmZlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCmluZGV4IDRj
NmVjMmU2Nzk0YzUxZWYyZGRhODNmYzYzYjY2MzkwZDA2ODZiMDIuLjZkMWJmNWYxZDJjYzZhZGQ4
YjEyZDU1YjZiODI3MzkwNDAzNDE2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKQEAgLTEzMCw2ICsxMzAsMTAgQEAgY29u
c3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUgbmFtZSkKICAgICAgICAgcmV0dXJuICJJ
bml0aWFsaXplQ29ubmVjdGlvbiI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lv
blN0YXRlOgogICAgICAgICByZXR1cm4gIkxlZ2FjeVNlc3Npb25TdGF0ZSI7CisgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJQ
cm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTZXRTdHJl
YW1EZXN0aW5hdGlvbklEOgorICAgICAgICByZXR1cm4gIlNldFN0cmVhbURlc3RpbmF0aW9uSUQi
OwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHk6CiAgICAgICAgIHJldHVy
biAiU3luY01lc3NhZ2VSZXBseSI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBl
cmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseToKQEAgLTIxNyw2ICsyMjEsOCBAQCBSZWNlaXZl
ck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgICAgICByZXR1
cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM7CiAgICAgY2FzZSBNZXNzYWdl
TmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5
U2Vzc2lvblN0YXRlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1l
c3NhZ2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRDoKICAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OgogICAgICAgICByZXR1cm4gUmVj
ZWl2ZXJOYW1lOjpJUEM7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNz
X1Rlc3RBc3luY01lc3NhZ2VSZXBseToKQEAgLTM5MCw2ICszOTYsMTAgQEAgYm9vbCBpc1ZhbGlk
TWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiAjZW5kaWYKICAgICBpZiAobWVz
c2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6
UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQp
CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3Nh
Z2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9NZXNzYWdlTmFtZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvTWVzc2FnZU5hbWVzLmgKaW5kZXggNTc3NjEyMTJmZGQyOWNmMWUwOWY3ZWIwMzcwMjc2ODZm
MWQ0OWE3My4uYzNlOTcwNTEyMTk4YjIyOTI4ODhiYjhiZmIwZDhkNzU0MGU2MmMzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCkBA
IC05MCw2ICs5MCw4IEBAIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdCB7CiAgICAg
LCBUZXN0V2l0aG91dEF0dHJpYnV0ZXNfVG91Y2hFdmVudAogICAgICwgSW5pdGlhbGl6ZUNvbm5l
Y3Rpb24KICAgICAsIExlZ2FjeVNlc3Npb25TdGF0ZQorICAgICwgUHJvY2Vzc091dE9mU3RyZWFt
TWVzc2FnZQorICAgICwgU2V0U3RyZWFtRGVzdGluYXRpb25JRAogICAgICwgU3luY01lc3NhZ2VS
ZXBseQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseQogICAg
ICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvblJlcGx5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3RyZWFtLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDBmNTI4YzY5Y2RlZmRkYTlj
NDg2NzkxMzhjNjM4YjhhYzBjYjMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisj
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVGVzdHMg
U3RyZWFtIHJlY2VpdmVyIGF0dHJpYnV0ZS4KK21lc3NhZ2VzIC0+IFRlc3RXaXRoU3RyZWFtIE5v
dFJlZkNvdW50ZWQgU3RyZWFtIHsKKyAgICB2b2lkIFNlbmRTdHJpbmcoU3RyaW5nIHVybCkKKyAg
ICB2b2lkIFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQoU3RyaW5nIHVybCkgLT4gKGludDY0X3QgcmV0
dXJuKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbUJ1ZmZlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTE3MGFjODlhMjVmMDM5MjE5ZmU0MTgxMDViMmMxZDA0YWUwYzdlOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZm
ZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjIFRlc3RzIFN0cmVhbSByZWNlaXZlciBhdHRyaWJ1dGUuCittZXNz
YWdlcyAtPiBUZXN0V2l0aFN0cmVhbUJ1ZmZlciAgeworICAgIHZvaWQgU2VuZFN0cmVhbUJ1ZmZl
cihJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWM5MjQwYTRl
YjFhYjU1NzQwOTYwMjI5MWRjMTI3MzE5ODdmMDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbUJ1ZmZlci5oIgorCisjaW5jbHVk
ZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJTdHJl
YW1Db25uZWN0aW9uQnVmZmVyLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNz
YWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBUZXN0V2l0aFN0cmVhbUJ1ZmZl
cjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhT
dHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI6Om5hbWUoKSkgeworICAgICAgICBJUEM6Omhh
bmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVm
ZmVyPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW1CdWZmZXI6OnNlbmRTdHJlYW1CdWZm
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9u
KTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2Fn
ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42YTI0ZWJkZDIwMGYzMzkwNDc3ZGZhZjdjZDg1NzE5MWJkNTNiMjg3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVk
ZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1l
c3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI7Cit9CisKK25hbWVzcGFj
ZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIgeworCitzdGF0aWMg
aW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJl
dHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXI7Cit9CisKK2NsYXNz
IFNlbmRTdHJlYW1CdWZmZXIgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6
dHVwbGU8Y29uc3QgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJj47CisKKyAgICBzdGF0aWMg
SVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdp
dGhTdHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZlcjsgfQorICAgIHN0YXRpYyBjb25zdCBib29s
IGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgU2VuZFN0cmVhbUJ1ZmZlcihjb25zdCBJ
UEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIHN0cmVhbSkKKyAgICAgICAgOiBtX2FyZ3VtZW50
cyhzdHJlYW0pCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
VGVzdFdpdGhTdHJlYW1CdWZmZXIKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdmYTJhZDdk
NTA2MzAwZjNjY2IzOTBmMTk3MjU5ZDkwZTY5M2YzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdl
c1JlcGxpZXMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
ICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZm
ZXIgeworCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyCit9IC8vIG5hbWVz
cGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44Mzk4ODU1YWQ1NmU5NTE5OTdjOWQyYWIzZjg4ODA5NGM4ODkyMzI2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0
cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbS5oIgorCisj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVk
ZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3ZvaWQgVGVzdFdpdGhTdHJlYW06OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0
cmVhbTo6U2VuZFN0cmluZzo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxN
ZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc+KGRlY29kZXIsIHRoaXMsICZUZXN0
V2l0aFN0cmVhbTo6c2VuZFN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRT
dHJpbmdTeW5jaHJvbml6ZWQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkPihkZWNvZGVy
LCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURf
UEFSQU0oY29ubmVjdGlvbik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGJmZWJh
YjIzNzJjMWY2NjA1YzU1ODk0NTkzOGJmMWU0ZTdhYWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgK
QEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxp
ZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisKK25hbWVz
cGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0geworCitzdGF0aWMgaW5s
aW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVy
biBJUEM6OlJlY2VpdmVyTmFtZTo6VGVzdFdpdGhTdHJlYW07Cit9CisKK2NsYXNzIFNlbmRTdHJp
bmcgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3Ry
aW5nJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBD
OjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZzsgfQorICAgIHN0YXRpYyBj
b25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgU2VuZFN0cmluZyhjb25z
dCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0K
KworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOworfTsKKworY2xhc3MgU2VuZFN0cmluZ1N5bmNocm9uaXplZCB7CitwdWJsaWM6
CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsKKworICAg
IHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1l
OjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkOyB9CisgICAgc3RhdGljIGNv
bnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxp
bnQ2NF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGludDY0X3Q+
OworICAgIGV4cGxpY2l0IFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQoY29uc3QgU3RyaW5nJiB1cmwp
CisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307
CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYzVhMDc4
ZGUwMWVjMTQzMGY4OTRmMjBjYjljMmY5MTU1ZTdjYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBs
aWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
CituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtIHsKKworCit9
IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CmluZGV4IDU5YmRkOTEwMWM5MWRlZGM5ODI0NTVlNzQ5YjI4MTQ0YzkzNTk0MDEuLjNh
NDM0MjBlYTFiMjE3YTBkYWI2NTZiNzdmNWViODQ0ZGI5ZWFlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAt
MTQ4LDYgKzE0OCwxMCBAQCBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBAbm8t
dW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNw
cCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwIEBuby11bmlmeQog
CiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgQG5vLXVuaWZ5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRl
eCBjMzMwNzgyNWIyMDA4NmRlZDRjODZjNjQ4OGNlNWRkNTdlYzBjMzU4Li44OTUyMDhjM2JjMjI2
ZDZmYjEyODYxZGE0MzdjZGEzODFmNDhkNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIlNhbmRi
b3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4
IDMwMWQwZWQ4MzBkYmVkOTA4Y2JiMjc4ODZmMDRhOGZlZWE5ZmQ4OWUuLjIzYWIxMGQ2M2E0ZjRh
M2ZkMjBjZWQ0ZDczMDE3M2Y0NzVkYzdmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAj
aW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRl
ICJVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTE4OGNiOTNiNDBkYjQ2ZTUwOTJkNWYwMzll
OGNiZWUzMThlZDEzYi4uYjY1NGEyM2FkNDkzNzNlMmI2NDVhMzM4NWJjZWZjMWFmMmUxYWMyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMzMxLDYgKzEzMzEsMTcgQEAKIAkJN0I0ODNGMjAyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3Nh
Z2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgg
Ki87IH07CiAJCTdCNDgzRjIxMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
NDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLzsg
fTsKIAkJN0I0ODNGMjIyNUNEREE5QzAwMTIwNDg2IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlck1lc3Nh
Z2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBGdW5jdGlvbkRpc3BhdGNoZXJNZXNz
YWdlUmVjZWl2ZVF1ZXVlLmggKi87IH07CisJCTdCNzMxMjI4MjVDOTg4QUEwMDNCMjc5NiAvKiBT
ZW1hcGhvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0I3MzEyMjYyNUM5ODhBQTAwM0IyNzk2IC8qIFNlbWFwaG9yZS5jcHAgKi87IH07CisJCTdC
NzMxMjI5MjVDOTg4QUIwMDNCMjc5NiAvKiBTZW1hcGhvcmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjI3MjVDOTg4QUEwMDNCMjc5NiAvKiBT
ZW1hcGhvcmUuaCAqLzsgfTsKKwkJN0I3MzEyM0EyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
LmggKi87IH07CisJCTdCNzMxMjNCMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9u
V29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmNwcCAqLzsgfTsKKwkJN0I3MzEyM0MyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCNzMxMjMzMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggKi87
IH07CisJCTdCNzMxMjNEMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMx
MjM0MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCAqLzsgfTsK
KwkJN0I3MzEyM0UyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM1
MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggKi87IH07CisJ
CTdCNzMxMjNGMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM2MjVD
Qzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJN0I3
MzEyNDAyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzcyNUNDODUy
NDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovOyB9OworCQk3QjczMTI0
MTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzgyNUNDODUyNDAwM0Iy
Nzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKKwkJN0I3MzEyNDIyNUNDODUy
NTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzOTI1Q0M4NTI1MDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJE
OTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUw
IC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFB
OTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUy
IC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QzFCQTMzRTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlv
bmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mx
QkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTQ1MzMs
NiArNDU0NCwxOCBAQAogCQk3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0
ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIEZ1bmN0aW9uRGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZl
UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25EaXNwYXRj
aGVyTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjczMTIyNjI1Qzk4OEFBMDAzQjI3OTYgLyogU2VtYXBob3Jl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlbWFwaG9yZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjI3MjVDOTg4QUEwMDNCMjc5NiAv
KiBTZW1hcGhvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VtYXBob3Jl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjJBMjVDOTg4QzYwMDNCMjc5
NiAvKiBTZW1hcGhvcmVEYXJ3aW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2VtYXBob3JlRGFyd2luLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzMyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENv
bm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNDI1Q0M4
NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzUyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1DbGllbnRDb25uZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzcyNUNDODUyNDAw
M0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbVNl
cnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzky
NUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qjkw
NDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTQw
LDYgKzY5NjMsMTUgQEAKIAkJCQk1Q0M1REI5MTIxNDg4RTE2MDA2Q0I4QTggLyogU2hhcmVkQnVm
ZmVyQ29weS5oICovLAogCQkJCTJEQzE4NTVFREJGQjg1MEJBMEI2RDA2RCAvKiBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmNwcCAqLywKIAkJCQkyREMxODgxQUNCQ0FCNUQ1N0M1QzZFRjAgLyog
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oICovLAorCQkJCTdCNzMxMjM2MjVDQzg1MjQwMDNC
Mjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk3QjczMTIzMzI1Q0M4
NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oICovLAorCQkJCTdCNzMxMjM0
MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCAqLywKKwkJCQk3
QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovLAor
CQkJCTdCNzMxMjM5MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5o
ICovLAorCQkJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlLmNwcCAqLywKKwkJCQk3QjczMTIzNTI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5oICovLAorCQkJCTdCNzMxMjM3MjVDQzg1MjQwMDNCMjc5NiAvKiBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk3QjczMTIzODI1Q0M4NTI0MDAzQjI3
OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oICovLAogCQkJCTFBRTAwRDY5MTgzMjdDMTIw
MDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwICovLAogCQkJCTFBRTAwRDZBMTgzMjdDMTIw
MDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuaCAqLywKIAkJCSk7CkBAIC0xMjAwNyw2ICsxMjAz
OSwxMSBAQAogCQkJCTkzNkIwNTk4MjMwMzkwOTcwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM2OEVFREYyMzAzQTlFRDAwQkRCMTFBIC8qIFN0b3Jh
Z2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NUY0RTA2MjMwQjJF
OTUwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJN0I3MzEyM0MyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjNBMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTI0MjI1Q0M4NTI1MDAz
QjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdC
NzMxMjNFMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3QjczMTI0MTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENkMxODMyN0MxMjAwMDg3REQ3
IC8qIFN0cmluZ1JlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk2QkQ4NUQxNTAxOUJD
MzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMx
ODYyMkIzNTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMzgzNiw2ICsxMzg3MywxMCBAQAogCQkJCTkzRDZCNzgyMjU0Q0ND
RjQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTMzNERFRDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFy
ZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM2OEVFREUyMzAz
QTkwMjAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTdCNzMxMjNGMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRD
b25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjNEMjVDQzg1MjUwMDNCMjc5
NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMx
MjNCMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTdCNzMxMjQwMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgzMjEyQjZBNzEwMEY0OTNG
RCAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3NTEyMTI2
QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkQxMUI3NTIyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggMGU1
M2VmMzdkNWQwYmJkNmI2NTg2YTRmODM1ZjkxYzI2ZGRhNjYyMC4uYTYwOTRjMTUwNjEwMDlmMjM2
NGQ4ZTQ3N2U1OTJhYTU3NTJmNTc1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwCkBAIC00OCwxMyArNDgsMTYgQEAgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdAog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1
dGVzKSk7CiB9CiAKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0g
MSA8PCAyMTsKKwogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCiAgICAgOiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShhdHRycykKICAgICAsIG1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oJmdwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKGdw
dVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgZGVmYXVsdFN0cmVhbVNpemUpCiB7CiAg
ICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBncHVQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwotICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
LCAwKTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBtX3N0cmVhbUNvbm5lY3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAwKTsKIH0K
IAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkoKQpAQCAtMTY5LDcgKzE3Miw3IEBAIEdDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEVycm9yKCkKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Vycm9yV2hl
bkNvbnRleHRJc0xvc3QsIE5PX0VSUk9SKTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZhaWxhYmxl
RXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2Vt
YXBob3JlJiYgc2VtYXBob3JlLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcm
JiByZXF1ZXN0ZWRFeHRlbnNpb25zKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTE3OCw2ICsxODEsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcmJiBhdmFpbGFibAog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVCghbV9kaWRJbml0aWFsaXplKTsKKyAg
ICBtX3N0cmVhbUNvbm5lY3Rpb24uc2V0V2FrZVVwU2VtYXBob3JlKFdURk1vdmUoc2VtYXBob3Jl
KSk7CiAgICAgbV9kaWRJbml0aWFsaXplID0gdHJ1ZTsKICAgICBpbml0aWFsaXplKGF2YWlsYWJs
ZUV4dGVuc2lvbnMsIHJlcXVlc3RlZEV4dGVuc2lvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaAppbmRleCA2MTBlYjAxNWI1MTNlZGZjZjExODA5MzE2ZmE4MmJl
NGM0ZDdiNWM2Li5iNDQwYjAwYjkxZjYwNjFhNThkZmYxMzhmOGJiYjY0Yjc2NTYyZWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMjksMTAgKzI5LDExIEBA
CiAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNs
dWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAiU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmg+CkBAIC0zMzQsMTkgKzMzNSwxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBt
ZXNzYWdlKQogICAgIHsKLSAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9uLnNlbmQoV1RGTW92
ZShtZXNzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CiAgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgV0FSTl9VTlVTRURf
UkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3Nh
Z2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCiAgICAgewotICAgICAgICByZXR1cm4gY29u
bmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCBkZWZhdWx0U2VuZFRpbWVvdXQs
IElQQzo6U2VuZFN5bmNPcHRpb246OkRpc3BhdGNoSW5SZWNlaXZlT3JkZXIpOworICAgICAgICBy
ZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9uLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1v
dmUocmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKICAgICB9CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpOyB9CiAKIHByaXZhdGU6
CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCB3YXNDcmVhdGVkKGJv
b2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVx
dWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgdm9pZCB3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwg
SVBDOjpTZW1hcGhvcmUmJiwgU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYg
cmVxdWVzdGVkRXh0ZW5zaW9ucyk7CiAgICAgdm9pZCB3YXNMb3N0KCk7CiAgICAgdm9pZCB3YXND
aGFuZ2VkKCk7CiAKQEAgLTM2MCw4ICszNjAsOCBAQCBwcml2YXRlOgogICAgIEdQVVByb2Nlc3ND
b25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIGJvb2wgbV9kaWRJbml0aWFs
aXplIHsgZmFsc2UgfTsKICAgICBHQ0dMZW51bSBtX2Vycm9yV2hlbkNvbnRleHRJc0xvc3QgPSBO
T19FUlJPUjsKLQogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciB7IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSB9OworICAgIElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBtX3N0cmVhbUNvbm5lY3Rpb247
CiB9OwogCiAvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdlYktpdCBJUEMgdHlw
ZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggYTdjNjQxMmFjOTQ2ZTI1OGNlMDEzOGJjNDdiYzM4NjIxOTUwMjFkNy4uZjQzZWMwYTJlYWEz
ODRlNGVkZThkZDQ0MGQ5ZWZlMDI4YWNiN2JmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCiBtZXNzYWdlcyAtPiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIHZvaWQgV2FzQ3Jl
YXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcg
cmVxdWVzdGFibGVFeHRlbnNpb25zKQorICAgIHZvaWQgV2FzQ3JlYXRlZChib29sIGRpZFN1Y2Nl
ZWQsIElQQzo6U2VtYXBob3JlIHN0cmVhbVdha2VVcFNlbWFwaG9yZSwgU3RyaW5nIGF2YWlsYWJs
ZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCiAgICAgdm9pZCBXYXNM
b3N0KCkKICAgICB2b2lkIFdhc0NoYW5nZWQoKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmgKaW5kZXgg
ZTRjY2NmMGRjNTdlYzg0ZWE2ZWM0ZGE5ODM0Y2NjYzRhNWE1MTk3My4uODk4ZTIwZDE3NTQ0YjI4
YTk0Y2NmNDYzNjhkNGRlMmZmNWUyYzIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNp
bmNsdWRlICJMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViTUROU1JlZ2lz
dGVyLmgiCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggZWM1OGIxOGY5NGMyZWU3Y2M0ZjBhYTliNWZhNzY1MWJlN2Y5YjAyYy4uNWM1ZjNmMDZkMDUx
MTM0MzY4ZjVlZDdlMDRhOTczMmViMzI1YzI2OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAyLTA1ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHBy
b2Nlc3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3Nh
Z2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2
NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hcmsgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wgbWVzc2FnZSByZWNlaXZlciBhcyAiU3RyZWFtIiwKKyAgICAgICAgYSBuZXcgdmFyaWFudCBv
ZiByZWNlaXZlci4KKworICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoKKwog
MjAyMS0wMi0wNCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgc2hvdWxkIHN1cHBvcnQgbG9zaW5nIHRo
ZSBjb250ZXh0IGFuZCBzaG91bGQgbG9zZSB0aGUgY29udGV4dCBvbiB0aW1lb3V0cwpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9n
ZW5lcmF0ZS1ncHVwLXdlYmdsCmluZGV4IGFlZGVlZDNkNmUyNWJhNGUxZDg1ZjM0YWIyZDllM2Fj
ZWJiNDRmZGMuLjdhN2JmNTQ0NGY3MzdiMTQ5YWQxODQ5MWI1NGUwYjc2YWFjMGQwZDYgMTAwNzU1
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorKysgYi9Ub29scy9TY3Jp
cHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTg5LDcgKzg5LDcgQEAgY29udGV4dF9tZXNzYWdl
c190ZW1wbGF0ZSA9ICgKICAgICB0ZW1wbGF0ZV9wcmVhbWJsZQogICAgICsgIiIiI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAgIHZvaWQgUmVzaGFwZShpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3lu
Y2hyb25vdXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420612</attachid>
            <date>2021-02-17 01:01:34 -0800</date>
            <delta_ts>2021-02-17 02:27:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210217110131.patch</filename>
            <type>text/plain</type>
            <size>163232</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjNDg4MWE0MDdiNmI0NjYz
N2U1MzM0MGMyZGEwZmE5ZjQ2MGJiNDEuLmNkNmM5N2RkZjZlNjY1YjU5NTczZjMzY2ZmMWVmNTcz
M2FlMDdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2Vz
IGFuZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJl
Y2VpdmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNl
aXZlZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAg
cHJvY2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVu
dGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hy
b25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQg
dGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhh
dmluZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAg
IGluIHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0
IGluIGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBv
bmUgMm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJl
IHdpbGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24K
KyAgICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFy
IHRocmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJv
cHRpbWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAg
cHJvY2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2Ug
dG8gaGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGlj
aXBhdGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8g
c2FtZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1p
emF0aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFz
IHBhcnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAg
IEluIEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sg
cXVldWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQg
d2lsbCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24g
cGVyIGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAg
ICBTZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRp
b24gd2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYg
dGhlIG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUg
aXQgdGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91
dCBvZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9u
IGFycml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAg
ICBtZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2ls
bCBzdG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxs
IGNvbnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4g
cHJvY2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0
cmVhbSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1l
c3NhZ2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMg
c2VuZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0g
Y29ubmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9y
ZS4gVGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlz
IHdhaXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6
CisgICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAg
cG9pbnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAg
IC0gV2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2gg
fjYwZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVl
VW5pbml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4g
dGhlIHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0
aW9ucyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1
ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpzZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVl
dWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBtdWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0
aGUgSVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmls
aXR5IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xp
ZW50LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6
CisgICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNv
bnN0cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZm
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAo
SVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNw
ZWNpZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFy
ZSB1bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRo
cm91Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAg
ICAgVGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBp
cyByZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2Fz
ZSB3aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRo
ZSBzdHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAg
ICAgICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2Fr
ZXVwIHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNl
bWFwaG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24u
IEFsbCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2
ZSB0aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhl
eSBoYXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVz
dGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rp
b246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dCBjb25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0
YSB0aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVN
ZW1vcnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAo
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0
aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZl
ci4KKyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90
aCB0aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4K
KyAgICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1
cCwgdGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFs
bCB0aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAi
aG9sZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBv
ZiAiYnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAg
ICAgIGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBj
b250YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAg
ICAgRm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBw
cm9jZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUg
b2YgdGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwg
c2xlZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3
aWxsIHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdp
bGwgd2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9m
ZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXpl
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
cyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9j
ZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1l
c3NhZ2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUg
bWVzc2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRo
ZSBidWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRo
YXQgdGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1h
bCBJUEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3Nh
Z2UgdW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdT
dHJlYW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFz
CisgICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxs
IG1lc3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1l
c3NhZ2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAg
ICAgIGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUg
c3RyZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJ
UEMgbWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNz
ZWQuCisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0
aW9uSUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJl
YW0gbWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAg
ICAgIHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJl
YW1EZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVk
LgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZm
ZXI6OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5
bmNocm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToK
KyAgICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0
IG9mIHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6
On5TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZSk6CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVs
ZCBzaW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0x
NiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgYnVpbGQgZml4IGFmdGVyIHIyNzI5MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkNTc3ZTQzNDk5ZjE4
MTQ3OTFjOGEwZWY3MWNiMzRhMDI0YTFmYWUyLi5kYjc3MjM4MTQ0Y2E4YTMwZmY2ZWFjOWY4MmY1
YzQ5ZGNkMjFiMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2Rl
ckFWRlByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogewogICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0o
KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAgICAgIHJldHVybiBJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zMjYsMjEgKzMyNiwxMSBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAotR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RGTW92
ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25uZWN0
KCk7Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUo
c3RyZWFtKSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWJiMGQwMDhmM2Q3MTI5MjE3YjhlOTZl
ZmExOWJkNTFmZmFmYTE2Ny4uZDAyZTk3ODc3NTdjZDZmYzQ1YTlmOTg5NmU1YjExODdmOTViN2Jl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNz
aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKIAogI2luY2x1ZGUgPFdl
YkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWlu
Z01hbmFnZXIuaD4KQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtMjA2LDIwICsyMDcsMTAg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9Owog
I2VuZGlmCiAKLSAgICBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7Ci0gICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOwot
ICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoKTsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBI
YXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKKyAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKICNp
ZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBI
YXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CiAgICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKICNl
bmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDMwZjVjMjk4ODYyMTRmOTEwNGYxYWZhMDgzNWIyMzhhMzZkYzZlZjEuLmY2MzBi
MWJhZmUwZDJjMmVjNDAwMzdkOWE3YTdjNzIzZDI1OTk5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5n
QmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQ
Qzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgIHZvaWQgUmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRl
cywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQogICAgIHZvaWQg
UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNlbmRpZgogICAgIHZvaWQgQ2xlYXJO
b3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA3OWIzNDU5NmZi
ZjJkMGRmYzk4MTg2NTFiZGNmZWI0YjBhMGM4NzVkLi4xM2ViMWUyZjU3MTMzMDI3M2Q4NTdkNTMy
NWQzMTdiMzdlZDE1Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTMxLDU1ICsz
MSw3NyBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBvbmUgZ2xvYmFsIFdlYkdMIHByb2Nl
c3NpbmcgaW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiBy
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZT4gaW5zdGFuY2UoIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsKKyAgICByZXR1cm4gaW5zdGFuY2Uu
Z2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJikK
IHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNl
bmRpZgogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92
ZShjb250ZXh0KSkKLSAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0
cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0p
CisgICAgOiBtX3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMPjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3Ry
ZWFtV29ya1F1ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAg
ICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhp
cyk7Ci0gICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwotICAgIFN0cmluZyBleHRlbnNp
b25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMp
OwotICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmlu
ZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwg
ZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQogewotICAgIGlmIChh
dXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmdldCgpKQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVCghbV9zdHJlYW1Db25uZWN0aW9uKTsKKyAg
ICBBU1NFUlQoIW1fY29udGV4dCk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKLSAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmdldCgpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAg
cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbYXR0cmli
dXRlcyA9IFdURk1vdmUoYXR0cmlidXRlcyksIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlSW5pdGlhbGl6
ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICB9KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24t
PnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAg
ICAgIHJldHVybiAmZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOwotICAg
IHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9z
dHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3Ry
ZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHJlZkZyb21D
b25uZWN0aW9uKV0oKSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtRdWV1ZVVuaW5pdGlh
bGl6ZSgpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3Jr
UXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0
dHJpYnV0ZXMpCit7CisgICAgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0
cmlidXRlcykpOworICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRD
bGllbnQoKnRoaXMpOworICAgICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0
U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICAgICAgU3RyaW5nIHJl
cXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6
UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSwgZXh0ZW5zaW9u
cywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFsc2UsIElQ
Qzo6U2VtYXBob3JlIHsgfSwgIiIsICIiKSk7CiB9CiAKLXVpbnQ2NF90IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVVbmluaXRpYWxpemUoKQogewotICAgIHJldHVy
biBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIG1fY29udGV4
dCA9IG51bGxwdHI7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKQEAgLTg4LDcgKzExMCw3
IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKQEAgLTk4LDcgKzEyMCw3IEBAIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMDAxNTlhYzhiNTg2YThiNjJhM2RkYTNhNTcw
MDRlODgzZTE1NmQwOC4uNTJlNDc2OTEwYTRlYWQwMDM5Y2UwYzFhYTU1ZTRmNDQ2YTA0OTU2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLQorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CkBAIC00OSwzMSArNDgsMjEgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0KIC8v
IEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdl
cyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBo
aWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KIC8vIFRo
ZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ci0gICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyCi0gICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpD
bGllbnQgeworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+LCBwcml2YXRlIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKIAotICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKyAg
ICAvLyBJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+
IHRlbXBsYXRlIGNvbnRyYWN0IGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgZGlkUmVjZWl2ZVN0
cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2Rl
ciYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVz
LgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBm
aW5hbDsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZp
bmFsOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgotICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAg
dm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsK
IAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQg
ZGlkQ29tcG9zaXRlKCkgZmluYWw7CkBAIC05NSw4ICs4NCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBO
T0xJTlQKIAotICAgIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250
ZXh0OwotICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOworICAgIHZvaWQgd29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3Jt
V29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JikgeyB9OworICAgIHZvaWQgd29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2UpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOyB9CisKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj4gbV9zdHJlYW1Db25uZWN0
aW9uOworICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250
ZXh0OwogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
bgppbmRleCA3YTE5MjVkYmIyN2FiZjNkMzAzNGNiN2ZjYjM4YTNmMzkzZTNkY2ZhLi40NzAyYzY0
Zjc1ZTQ3NmNmZjFhMTAwMDUwNzU1MDk2YmRjZTc4OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAvLyBUaGlzIGZpbGUgaXMg
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFJlc2hhcGUoaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQ
cmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNo
cm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggOGUyZDFmYzY1
MTg2MjgzOTVlOTc0MWM0NGU3YWM4NTFiMDhlZjYyNy4uYzRlNDExMjYxOTViMzUyOThhZWFmMmZj
YWVmMjBhZGZiNDMxZDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApA
QCAtMzksMTAgKzM5LDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wsIHByaXZh
dGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gewogcHVibGlj
OgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoKSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBvdmVycmlkZXMuCisgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOwogICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmln
aHQmJik+JiYpIGZpbmFsOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4gb3ZlcnJpZGVzLgpAQCAtNTYsMTYgKzU3LDIzIEBAIHByaXZhdGU6CiAKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcikKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2EoYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKSk7CisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3Rh
bmNlLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5j
ZTsKIH0KIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woYXR0cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykpCitSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgV1RGTW92ZShzdHJlYW0pKQogewogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQoreworICAgIG1fY29udGV4dCA9IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKFdURk1vdmUoYXR0cmlidXRlcyks
IHRoaXMpOworfQorCiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVy
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQogewogICAgIHJl
dHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5k
ZXggMmM3NjI1MTg2YWVlMTVkNzcyYjc2NGJkZDU1OWYwYTFjMjcwYmQ0MS4uYmI3NDIxYTdkNmZk
NGFhMjk3YTk2YjViMjc0ZGQ5OGQ2NGYwZGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApA
QCAtODMsNyArODMsNyBAQCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5n
QmFja2VuZCgpCiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtyZW1vdGVSZXNvdXJjZUNhY2hl
ID0gV1RGTW92ZShtX3JlbW90ZVJlc291cmNlQ2FjaGUpXSB7IH0pOwogfQogCi12b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpc2Nvbm5lY3QoKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCkBAIC0yNjgsNiArMjY4LDggQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3
YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXMKICAgICBh
dXRvIGluaXRpYWxIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoYXJndW1l
bnRzLml0ZW1CdWZmZXJJZGVudGlmaWVyKTsKICAgICBNRVNTQUdFX0NIRUNLKGluaXRpYWxIYW5k
bGUsICJNaXNzaW5nIGluaXRpYWwgc2hhcmVkIGRpc3BsYXkgbGlzdCBoYW5kbGUiKTsKIAorICAg
IEFTU0VSVCghbV9wZW5kaW5nV2FrZXVwSW5mbyk7CisKICAgICBkZXN0aW5hdGlvbkltYWdlQnVm
ZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3Rz
KCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBhcmd1bWVudHMub2Zmc2V0LCAqaW5pdGlhbEhhbmRs
ZSwgYXJndW1lbnRzLnJlYXNvbik7CiAgICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBiN2FlZTI2Mjc3MDViYjlh
Y2MxMDE5ZDcxNTVlZjI3ZTE1M2QyYjI4Li5hNGFhN2I0Nzg3NTVhOWJiNWUyOTNmZDFiYzgyOGNj
ZGZlMjQ5NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKTsKICAgICB2aXJ0dWFsIH5SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKCk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAK
ICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4g
bV9yZW1vdGVSZXNvdXJjZUNhY2hlOyB9CiAKQEAgLTc4LDggKzc5LDYgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbik7CiAKLSAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKLQogcHJpdmF0ZToKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgK
aW5kZXggNDk3MTcxYjU2NDI2ODkyODk1MjEwNmJkN2VlYTU0YmVlOTNiZWUyMy4uYjBjZjcwZjA2
ZTExOGUwMjFkODY0ZGViOThkNDE0ZWZiYTllN2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpZiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENSZXNvbHZl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUlRDTW9uaXRvci5oIgogI2luY2x1ZGUg
IlJUQ05ldHdvcmsuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIu
aAppbmRleCAzMjA3NmFmZDAyYTg5OGExZTM5ZGUyODNlMTAyYjg1OTQ3ZjhlZGM3Li41MzM1MGY5
ZjdjOGMxMmJlNjI3NTk5OWM3ZWJmYzNjN2UwOTFiY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJE
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRz
Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNzUs
NiArNzYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBB
cmd1bWVudENvZGVyIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENv
ZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+
PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1
ZSksIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CkBAIC05MSw2ICs5Myw3IEBAIHN0cnVjdCBBcmd1
bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGlj
X3Y8VD4+PiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxU
LCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4geworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIFQgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51
bTxUPihXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPFQ+KHZhbHVlKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGIwYTQzZGU5ZDdhMTM3
MjE2YTE5YmY3ZDBiZDVlMTkxMTNiNWRhNjguLmFlZTg5ZTYyNjk2YzU2MGYwYTE4YmZiMWQ2NzY5
MTY1MGU3ZmYyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgog
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xMTEsNyArMTEyLDcgQEAgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgQXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENT
dHJpbmcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVy
Pgogdm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBTcGVjaWFsIGNhc2UgdGhlIG51bGwgc3Ry
aW5nLgpAQCAtMTMwLDYgKzEzMSwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVsc2UKICAg
ICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFy
KSwgYWxpZ25vZihVQ2hhcikpOwogfQordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJp
bmc+OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwordGVtcGxhdGUK
K3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29k
ZXI+KFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIGlubGluZSBPcHRpb25hbDxTdHJpbmc+
IGRlY29kZVN0cmluZ1RleHQoRGVjb2RlciYgZGVjb2RlciwgdWludDMyX3QgbGVuZ3RoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjBlYjE3YTBm
ZDgyNjBkNDBiZWM3ZmNkYWFlYTIzYmM1ZTg2NWUwOS4uZjg1Njk4MDczZGQwNDViMjgxNmUxNjEw
Y2E0OTk2YTVkNGVlNmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5oCkBAIC01NSw2ICs1NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBT
aW1wbGVBcmd1bWVudENvZGVyIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVu
dD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4gewogICAg
IHVzaW5nIEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkK
ICAgICB7CiAgICAgICAgIGlmICghRXh0ZW50KQpAQCAtNzQsNiArNzUsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVy
ZW5jZTxULCBFeHRlbgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+PiB7CiAgICAg
dXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVu
Y2VEeW5hbWljRXh0ZW50PjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5
cGUmIGFycmF5UmVmZXJlbmNlKQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI2Niw2ICsyNjgsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6
OnBhaXI8VCwgVT4+IHsKIAogdGVtcGxhdGU8c2l6ZV90IGluZGV4LCB0eXBlbmFtZS4uLiBFbGVt
ZW50cz4KIHN0cnVjdCBUdXBsZUVuY29kZXIgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29k
ZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6
dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3Rk
OjpnZXQ8c2l6ZW9mLi4uKEVsZW1lbnRzKSAtIGluZGV4Pih0dXBsZSk7CkBAIC0yNzUsNiArMjc4
LDcgQEAgc3RydWN0IFR1cGxlRW5jb2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1l
bnRzPgogc3RydWN0IFR1cGxlRW5jb2RlcjwwLCBFbGVtZW50cy4uLj4geworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYpCiAgICAgewogICAgIH0KQEAgLTMzOCw2ICszNDIs
NyBAQCBzdHJ1Y3QgVHVwbGVEZWNvZGVyPDA+IHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEVsZW1lbnRzPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4g
eworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkK
ICAgICB7CiAgICAgICAgIFR1cGxlRW5jb2RlcjxzaXplb2YuLi4oRWxlbWVudHMpLCBFbGVtZW50
cy4uLj46OmVuY29kZShlbmNvZGVyLCB0dXBsZSk7CkBAIC0zNzQsNiArMzc5LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXVEY6OktleVZhbHUKIHRlbXBsYXRlPGJvb2wgZml4ZWRTaXplRWxlbWVudHMsIHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBz
aXplX3QgbWluQ2FwYWNpdHk+IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2RlcjxmYWxz
ZSwgVCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+IHsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHk+JiB2ZWN0b3IpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih2ZWN0b3Iuc2l6ZSgpKTsKQEAgLTQxMSw2ICs0MTcsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJm
bG93SGFuZGxlciwgc2l6ZV90IG1pbgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eT4gc3RydWN0IFZlY3RvckFyZ3VtZW50Q29kZXI8dHJ1ZSwgVCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiB2
ZWN0b3IpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2
ZWN0b3Iuc2l6ZSgpKTsKQEAgLTc1Myw2ICs3NjAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPENTdHJpbmc+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8U3RyaW5nPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFN0cmluZyYpOwogICAgIHN0YXRpYyBP
cHRpb25hbDxTdHJpbmc+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDhiNzQzMTRhYzA0YTU1YTQ4YmQwOTM2MjljMzYyMjA3
MWUwZjJjNTAuLjFkMmVhNDg1YTk5OGFlMjY0NDZhM2FlNjAwZTA0ZjMwY2E4ZTFkNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCisjaW5jbHVk
ZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNz
YWdlRmxhZ3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIgpAQCAtOTMwLDgg
KzkzMSwxMyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYg
ZGVjb2RlcikKIAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwotCisgICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgeworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2Fn
ZU5hbWVdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPmlzVmFs
aWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5tX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UocHJvdGVjdGVkVGhpcywgbWVzc2Fn
ZU5hbWUpOworICAgICAgICB9KTsKKyAgICB9CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDQ4
NTUyMDEyNDdjMjVkZjg1NTJjNWE1NGEwNDY3N2I4ZDcyYjgyY2EuLmZlOWNhMzE4NjA2ZmRlZGM2
MWQyMWQwN2RmMGY4YWIxYmZlOTNiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmgKQEAgLTMwLDEwICszMCw5IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0j
aW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgpAQCAtMzEyLDYgKzMxMSw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJlY2VpdmVyJiwg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpOworICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBh
bnkgdGhyZWFkLgorICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVz
c2FnZU5hbWUpOwogcHJpdmF0ZToKICAgICBDb25uZWN0aW9uKElkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2ZXIsIENsaWVudCYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIp
OwpAQCAtMzM5LDcgKzM0MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShEZWNv
ZGVyJik7CiAgICAgdm9pZCBkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImKTsKLSAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKICAgICB2b2lk
IGRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBh
bnkgdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCA4MGEw
Zjc1YzcwNTcyYmY0YzI0ODUyNmZlZDJmZWZiMDk3Y2RjOGY5Li40ZGUwNTA5OGM0NjMyYWQ0NWY0
ZTg1M2Y2N2U5ZWUzZTc3MTM2ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVy
LmNwcApAQCAtOTAsNiArOTAsMTcgQEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGUKICAgICAgICAg
bWFya0ludmFsaWQoKTsKIH0KIAorRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJl
YW0sIHNpemVfdCBzdHJlYW1TaXplLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgIDogbV9i
dWZmZXIgeyBzdHJlYW0gfQorICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CisgICAgLCBt
X2J1ZmZlckVuZCB7IG1fYnVmZmVyICsgc3RyZWFtU2l6ZSB9CisgICAgLCBtX2J1ZmZlckRlYWxs
b2NhdG9yKFtdIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KSB7IH0pCisgICAgLCBtX2Rlc3RpbmF0
aW9uSUQoZGVzdGluYXRpb25JRCkKK3sKKyAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkK
KyAgICAgICAgcmV0dXJuOworfQorCiBEZWNvZGVyOjp+RGVjb2RlcigpCiB7CiAgICAgQVNTRVJU
KG1fYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA2Njk4NWJj
Mzg3ZDc0MzkxMzcwMWIxMTdiOTE4MDBiOWEyNzcxYWI4Li5iM2M2YWM4YTJkNWFjYmEyYzIxNTI4
ZGZlYjE4YzY0MTVjZWRkMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBA
IC01MSw2ICs1MSw3IEBAIGNsYXNzIERlY29kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCosIHNp
emVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKICAgICBleHBsaWNpdCBEZWNvZGVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9j
YXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKKyAg
ICBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIH5EZWNvZGVyKCk7CiAKICAgICBEZWNvZGVyKGNvbnN0
IERlY29kZXImKSA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1l
c3NhZ2UuaAppbmRleCBlYThhZDQ1YzA5ZWI2ODJlMGU4NjIzYjkzNGQ1ZTBlOWM3MDI2MjJhLi45
Mjk2M2UyMWUxZDcxN2Y2NGE4MjE5YzUyODliYWYwNTNmMDk5NDg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNs
dWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0xNjQsNiArMTY1
LDI4IEBAIHZvaWQgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlCiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNv
bm5lY3Rpb24sIFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBvYmplY3QsIGZ1bmN0aW9uKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
QywgdHlwZW5hbWUgTUY+Cit2b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0
LCBNRiBmdW5jdGlvbikKK3sKKyAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElEKSB7Cisg
ICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6
VHlwZT4gYXJndW1lbnRzOworICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOworICAgIGlmICghYXJn
dW1lbnRzKSB7CisgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxl
ciA9IFtzeW5jUmVxdWVzdElELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1
dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBs
eShzeW5jUmVxdWVzdElELCBhcmdzLi4uKTsKKyAgICB9OworICAgIGNhbGxNZW1iZXJGdW5jdGlv
bihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0
LCBmdW5jdGlvbik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVu
YW1lIE1GPgogdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
RGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNl
aXZlUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2EwNTZhMDIwMWMyYWQwZTc0OTBlYzdkN2ZlYmJkZDc3
MTA5N2IxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0
eT4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgSVBDIHsKKworLy8gU2NvcGVkIGhvbGRlciBmb3Igb2JqZWN0cyB0aGF0IGhhdmUgYWN0
aXZlIG1lc3NhZ2UgcmVjZWl2ZSBxdWV1ZXMuIEVuZm9yY2VzIHRoYXQKKy8vIG9uY2UgaG9sZGVy
IHN0b3BzIGhvbGRpbmcgdGhlIG9iamVjdCwgdGhlIG1lc3NhZ2UgcXVldWUgc2hvdWxkIGJlIHJl
bW92ZWQuCisvLyBUaGUgY29udmVudGlvbiBpcyB0byBjYWxsIHN0b3BMaXN0ZW5pbmdGb3JJUEMo
KSBmb3IgdGhlIG9iamVjdC4KKy8vIE9wdGlvbmFsbHkgdGhlIG9iamVjdCBjYW4gb2J0YWluIHRo
ZSBvd25pbmcgcmVmZXJlbmNlIHRoYXQgd2FzIHVzZWQgdG8gaG9sZCB0aGUgb2JqZWN0CisvLyBp
biBvcmRlciB0byBhdHRlbXB0IHRvIGF2b2lkIG5lZWRsZXNzIGRlc3RydWN0aW9uIG9mIHRoZSBv
YmplY3QgaW4gaG9sZGVyIHRocmVhZC4KKy8vIFRoaXMgdXNlZnVsIGluIHRoZSBjYXNlIHRoZSBz
dG9wIGludm9rZXMgYSBjbGVhbnVwIHRhc2sgaW4gdGhlIG1lc3NhZ2UgaGFuZGxlcgorLy8gdGhy
ZWFkLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhvbGRlclR5cGUgPSBSZWZQdHI8
VD4+CitjbGFzcyBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAg
ICBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKCkgPSBkZWZhdWx0OworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPgorICAgIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoVSYm
IG9iamVjdCkKKyAgICAgICAgOiBtX29iamVjdChXVEZNb3ZlKG9iamVjdCkpCisgICAgeworICAg
IH0KKyAgICBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUmJiBvdGhlcikKKyAgICAgICAgOiBtX29iamVjdChzdGQ6OmV4Y2hhbmdl
KG90aGVyLm1fb2JqZWN0LCBudWxscHRyKSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWUmIG9wZXJhdG9yPShTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlJiYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAg
ICAgICAgICAgIHJlc2V0KCk7CisgICAgICAgICAgICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9vYmplY3QsIG51bGxwdHIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICB9CisgICAgflNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoKQorICAgIHsK
KyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAg
ICBpZiAoIW1fb2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdG9wTGlzdGVu
aW5nRm9ySVBDQW5kUmVsZWFzZShtX29iamVjdCk7CisgICAgfQorICAgIFQqIGdldCgpIGNvbnN0
IHsgcmV0dXJuIG1fb2JqZWN0LmdldCgpOyB9Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+CisgICAgc3RhdGljIGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYg
b2JqZWN0KSAtPiBkZWNsdHlwZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0LnJl
bGVhc2VOb25OdWxsKCkpLCB2b2lkKCkpCisgICAgeworICAgICAgICBvYmplY3QtPnN0b3BMaXN0
ZW5pbmdGb3JJUEMob2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxl
YXNlKFUmIG9iamVjdCkgLT4gZGVjbHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKFdU
Rk1vdmUob2JqZWN0KSksIHZvaWQoKSkKKyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3Rl
bmluZ0ZvcklQQyhXVEZNb3ZlKG9iamVjdCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPgorICAgIHN0YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9i
amVjdCkgLT4gZGVjbHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKCksIHZvaWQoKSkK
KyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQygpOworICAgICAgICBv
YmplY3QgPSBudWxscHRyOworICAgIH0KKyAgICBIb2xkZXJUeXBlIG1fb2JqZWN0OworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoc3Rk
Ojp1bmlxdWVfcHRyPFQ+JiYpIC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwg
c3RkOjp1bmlxdWVfcHRyPFQ+PjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Njb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVmPFQ+JiYpIC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNl
aXZlUXVldWU8VCwgUmVmUHRyPFQ+PjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGY1Y2Rm
MDA4ZTVhN2YyZDJmMTAyYTIzNWMzYzIyNTE3MzM3NmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
dHJlYW1DbGllbnRDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIHNpemVfdCBzaXplKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBt
X2J1ZmZlcihzaXplKQoreworICAgIC8vIFJlYWQgc3RhcnRzIGZyb20gMCB3aXRoIGxpbWl0IG9m
IDAgYW5kIHJlYWRlciBzbGVlcGluZy4KKyAgICBzaGFyZWRTZW5kZXJPZmZzZXQoKS5zdG9yZShT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcs
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAg
d2l0aCBhIGxpbWl0IG9mIHRoZSB3aG9sZSBidWZmZXIuCisgICAgc2hhcmVkUmVjZWl2ZXJPZmZz
ZXQoKS5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30KKwordm9pZCBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBz
ZW1hcGhvcmUpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUg
PSBXVEZNb3ZlKHNlbWFwaG9yZSk7CisjZW5kaWYKKyAgICB3YWtlVXBSZWNlaXZlcigpOworfQor
Cit2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Ondha2VVcFJlY2VpdmVyKCkKK3sKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBpZiAobV93YWtlVXBTZW1hcGhvcmUpCisgICAgICAgIG1fd2Fr
ZVVwU2VtYXBob3JlLT5zaWduYWwoKTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWRmZmZlZWYzYTA5OTVhMWIxODJhNWNmOWU4NjA3MDA5ODZiYzUxZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApA
QCAtMCwwICsxLDI0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVj
b2Rlci5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1l
cy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJl
YW1Db25uZWN0aW9uRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorbmFtZXNwYWNlIElQQyB7CisKKy8vIEEgbWVzc2Fn
ZSBzdHJlYW0gaXMgYSBoYWxmLWR1cGxleCB0d28td2F5IHN0cmVhbSBvZiBtZXNzYWdlcyB0byBh
IGJldHdlZW4gYSBzZW5kZXIgYW5kIHRoZQorLy8gZGVzdGluYXRpb24gcmVjZWl2ZXIuCisvLwor
Ly8gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBjYW4gc2VuZCBtZXNzYWdlcyBhbmQgcmVjZWl2ZSBz
eW5jaHJvbm91cyByZXBsaWVzCisvLyB0aHJvdWdoIHRoaXMgbWVzc2FnZSBzdHJlYW0gb3IgdGhy
b3VnaCBJUEM6OkNvbm5lY3Rpb24uCisvLworLy8gVGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdp
bGwgcmVjZWl2ZSBtZXNzYWdlcyBpbiBvcmRlciBfZm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdl
c18uCisvLyBUaGUgd2hvbGUgSVBDOjpDb25uZWN0aW9uIG1lc3NhZ2Ugb3JkZXIgaXMgbm90IHBy
ZXNlcnZlZC4KKworY2xhc3MgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBmaW5hbCB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtQ2xpZW50Q29ubmVjdGlvbik7CitwdWJsaWM6CisgICAg
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiwgc2l6ZV90IGJ1ZmZlclNpemUpOwor
CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgc3RyZWFtQnVmZmVyKCkgeyByZXR1cm4gbV9i
dWZmZXI7IH0KKyAgICB2b2lkIHNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGJvb2wgc2VuZChUJiYgbWVz
c2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQp
OworCisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3Vs
dDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIFNlbmRTeW5jUmVz
dWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCBPYmplY3RJZGVu
dGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKK3ByaXZhdGU6Cisg
ICAgc3RydWN0IFNwYW4geworICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXplX3Qg
c2l6ZTsKKyAgICB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdl
U2l6ZSA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyOjptZXNzYWdlQWxpZ25tZW50OworICAgIGJvb2wgdHJ5U2VuZERlc3RpbmF0aW9u
SURJZk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIHRpbWVvdXQp
OworICAgIHZvaWQgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmKTsKKworICAg
IE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KTsKKyAgICBl
bnVtIGNsYXNzIFdha2VVcFJlY2VpdmVyIDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAgICBZ
ZXMKKyAgICB9OworICAgIFdha2VVcFJlY2VpdmVyIHJlbGVhc2Uoc2l6ZV90IHdyaXRlU2l6ZSk7
CisgICAgdm9pZCB3YWtlVXBSZWNlaXZlcigpOworCisgICAgU3BhbiBhbGlnbmVkU3BhbihzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBzaXplKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVk
TGltaXQpIGNvbnN0OworCisgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNldChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFs
aWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zm
c2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAg
IEF0b21pYzxzaXplX3Q+JiBzaGFyZWRTZW5kZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5z
ZW5kZXJPZmZzZXQoKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNl
dCgpIHsgcmV0dXJuIG1fYnVmZmVyLnJlY2VpdmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQorCisgICAgQ29ubmVj
dGlvbiYgbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQg
eyAwIH07CisKKyAgICBzaXplX3QgbV9zZW5kZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPcHRpb25h
bDxTZW1hcGhvcmU+IG1fd2FrZVVwU2VtYXBob3JlOworI2VuZGlmCit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5k
KFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFUOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5
bmMhIik7CisgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1l
Ojpub3coKSArIHRpbWVvdXQ7CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVk
KGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsK
KyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB7CisgICAgICAgIFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG1lc3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBzcGFuLT5k
YXRhLCBzcGFuLT5zaXplIH07CisgICAgICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBtZXNzYWdl
LmFyZ3VtZW50cygpKSB7CisgICAgICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2Uo
bWVzc2FnZUVuY29kZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0g
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAgICAgICAg
ICAgICB3YWtlVXBSZWNlaXZlcigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9CisgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3Bh
bikpOworICAgIGlmICghbV9jb25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGlu
YXRpb25JRCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpTZW5kU3luY1Jlc3VsdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBk
ZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpCit7CisgICAgc3RhdGljX2Fzc2VydChUOjpp
c1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOworICAgIE1vbm90b25pY1RpbWUgYWJzb2x1
dGVUaW1lb3V0ID0gTW9ub3RvbmljVGltZTo6bm93KCkgKyB0aW1lb3V0OworICAgIGlmICghdHJ5
U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZChkZXN0aW5hdGlvbklELnRvVUludDY0KCksIGFic29s
dXRlVGltZW91dCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byBzcGFuID0gdHJ5QWNx
dWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHNlbmQgdGhyb3VnaCBzdHJlYW0uCisgICAgLy8g
RklYTUU6IGltcGxlbWVudCByZWNlaXZlIHRocm91Z2ggc3RyZWFtLgorICAgIHNlbmRQcm9jZXNz
T3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoKnNwYW4pKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
Y29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVz
dGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKKyAgICBBU1NFUlQocmVzdWx0KTsKKyAg
ICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworfQorCitpbmxpbmUgYm9vbCBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjp0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0KQoreworICAgIGlmIChkZXN0aW5h
dGlvbklEID09IG1fY3VycmVudERlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNw
YW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBl
bmNvZGVyIHsgTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQsIHNwYW4tPmRhdGEs
IHNwYW4tPnNpemUgfTsKKyAgICBpZiAoIShlbmNvZGVyIDw8IGRlc3RpbmF0aW9uSUQpKSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBTaXplIG9mIHRoZSBtaW5pbXVtIGFsbG9j
YXRpb24gaXMgaW5jb3JyZWN0LiBMaWtlbHkgYW4gYWxpZ25tZW50IGlzc3VlLgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShlbmNv
ZGVyLnNpemUoKSk7CisgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpXYWtlVXBSZWNlaXZlcjo6WWVzKQorICAgICAgICB3YWtlVXBSZWNlaXZlcigpOworICAg
IG1fY3VycmVudERlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgIHJldHVybiB0cnVl
OworfQorCitpbmxpbmUgdm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091
dE9mU3RyZWFtTWVzc2FnZShTcGFuJiYgc3BhbikKK3sKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5j
b2RlciBlbmNvZGVyIHsgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UsIHNw
YW4uZGF0YSwgc3Bhbi5zaXplIH07CisgICAgLy8gTm90IG5vdGlmeWluZyBvbiB3YWtlIHVwIHNp
bmNlIHRoZSBvdXQtb2Ytc3RyZWFtIG1lc3NhZ2Ugd2lsbCBkbyB0aGF0LgorICAgICh2b2lkKSBy
ZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKK30KK2lubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKE1vbm90
b25pY1RpbWUgdGltZW91dCkKK3sKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNpemVfdCBzZW5k
ZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChzaGFyZWRSZWNlaXZlck9mZnNldCgpLmxvYWQoc3RkOjpt
ZW1vcnlfb3JkZXJfYWNxdWlyZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFu
KG1fc2VuZGVyT2Zmc2V0LCBzZW5kZXJMaW1pdCk7CisgICAgICAgIGlmIChyZXN1bHQuc2l6ZSA8
IG1pbmltdW1NZXNzYWdlU2l6ZSkgeworICAgICAgICAgICAgYXV0byBub3cgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKKyAgICAgICAgICAgIGlmIChub3cgPj0gdGltZW91dCkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIHNpemVfdCBvbGRT
ZW5kZXJMaW1pdCA9IHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25n
KHNlbmRlckxpbWl0LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpyZWNlaXZlck9mZnNldFNlbmRl
cklzV2FpdGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3Jk
ZXJfYWNxX3JlbCk7CisgICAgICAgICAgICBpZiAoc2VuZGVyTGltaXQgPT0gb2xkU2VuZGVyTGlt
aXQpCisgICAgICAgICAgICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLndhaXRG
b3IodGltZW91dCAtIG5vdyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBz
ZW5kZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChvbGRTZW5kZXJMaW1pdCk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKKyAg
ICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisjZW5kaWYK
KyAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXpl
KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVy
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnJlbGVhc2Uoc2l6ZV90IHNpemUpCit7CisgICAgc2l6
ZSA9IHN0ZDo6bWF4KHNpemUsIG1pbmltdW1NZXNzYWdlU2l6ZSk7CisgICAgc2l6ZV90IGV4cGVj
dGVkUmVjZWl2ZXJMaW1pdCA9IG1fc2VuZGVyT2Zmc2V0OworICAgIG1fc2VuZGVyT2Zmc2V0ID0g
d3JhcE9mZnNldChhbGlnbk9mZnNldChtX3NlbmRlck9mZnNldCkgKyBzaXplKTsKKyAgICBBU1NF
UlQobV9zZW5kZXJPZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICAvLyBJZiB0aGUgcmVjZWl2ZXIg
d3JvdGUgb3ZlciB0aGUgc2VuZGVyT2Zmc2V0IHdpdGggc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1Ns
ZWVwaW5nVGFnLCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgorICAgIHNpemVfdCByZWNlaXZlckxp
bWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkuZXhjaGFuZ2UobV9zZW5kZXJPZmZzZXQsIHN0ZDo6
bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgIGlmIChyZWNlaXZlckxpbWl0ICE9IGV4cGVjdGVk
UmVjZWl2ZXJMaW1pdCkKKyAgICAgICAgcmV0dXJuIFdha2VVcFJlY2VpdmVyOjpZZXM7CisgICAg
cmV0dXJuIFdha2VVcFJlY2VpdmVyOjpObzsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OlNwYW4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6YWxpZ25lZFNwYW4oc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxpbWl0KQoreworICAgIEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsK
KyAgICBBU1NFUlQobGltaXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBzaXplX3QgYWxpZ25lZCA9IGFs
aWduT2Zmc2V0KG9mZnNldCk7CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSAwOworICAgIGlmIChv
ZmZzZXQgPCBsaW1pdCkgeworICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgJiYgYWxpZ25l
ZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVk
IDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7
CisgICAgfQorICAgIHJldHVybiB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30K
KworaW5saW5lIHNpemVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzaXplKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAgICBpZiAoIWxpbWl0KQorICAgICAgICByZXR1cm4gZGF0
YVNpemUoKSAtIDEgLSBvZmZzZXQ7CisgICAgaWYgKGxpbWl0IDw9IG9mZnNldCkKKyAgICAgICAg
cmV0dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7CisgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0IC0g
MTsKK30KKworaW5saW5lIHNpemVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjbGFtcGVkTGlt
aXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdAoreworICAgIEFTU0VSVCh1bnRydXN0ZWRM
aW1pdCA8IChkYXRhU2l6ZSgpIC0gMSkpOworICAgIHJldHVybiBzdGQ6Om1pbih1bnRydXN0ZWRM
aW1pdCwgZGF0YVNpemUoKSAtIDEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkNTgx
OTQ5YmY1NjQzMjk1YWI3NmNjY2M2MzNlMGY0Y2E0ZjFiMmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApAQCAt
MCwwICsxLDExMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBGZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitzdGF0aWMgUmVmPFdlYktpdDo6U2hhcmVk
TWVtb3J5PiBjcmVhdGVNZW1vcnkoc2l6ZV90IHNpemUpCit7CisgICAgYXV0byBtZW1vcnkgPSBX
ZWJLaXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZSk7CisgICAgaWYgKCFtZW1vcnkpCisg
ICAgICAgIENSQVNIKCk7CisgICAgcmV0dXJuIG1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpOworfQor
CitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyKHNpemVfdCBt
ZW1vcnlTaXplKQorICAgIDogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihjcmVhdGVNZW1vcnkobWVt
b3J5U2l6ZSksIG1lbW9yeVNpemUpCit7Cit9CisKKyNpZiBQTEFURk9STShDT0NPQSkKK1N0cmVh
bUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hh
cmVkTWVtb3J5PiYmIG1lbW9yeSwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNlbmRl
cldhaXRTZW1hcGhvcmUpCisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXpl
KCkpCisgICAgLCBtX3NoYXJlZE1lbW9yeShXVEZNb3ZlKG1lbW9yeSkpCisgICAgLCBtX3NlbmRl
cldhaXRTZW1hcGhvcmUoV1RGTW92ZShzZW5kZXJXYWl0U2VtYXBob3JlKSkKK3sKK30KKyNlbmRp
ZgorCitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyKFJlZjxX
ZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiBtZW1vcnksIHNpemVfdCBtZW1vcnlTaXplKQorICAgIDog
bV9kYXRhU2l6ZShtZW1vcnlTaXplIC0gaGVhZGVyU2l6ZSgpKQorICAgICwgbV9zaGFyZWRNZW1v
cnkoV1RGTW92ZShtZW1vcnkpKQoreworfQorCitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyKFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBvdGhlcikgPSBkZWZh
dWx0OworCitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjp+U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcigp
ID0gZGVmYXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcjo6b3BlcmF0b3I9KFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBvdGhlcikKK3sKKyAgICBp
ZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgbV9kYXRhU2l6ZSA9IG90aGVyLm1fZGF0YVNp
emU7CisgICAgICAgIG1fc2hhcmVkTWVtb3J5ID0gV1RGTW92ZShvdGhlci5tX3NoYXJlZE1lbW9y
eSk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIG1fc2VuZGVyV2FpdFNlbWFwaG9yZSA9
IFdURk1vdmUob3RoZXIubV9zZW5kZXJXYWl0U2VtYXBob3JlKTsKKyNlbmRpZgorICAgIH0KKyAg
ICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgV2ViS2l0OjpTaGFyZWRNZW1vcnk6Okhh
bmRsZSBoYW5kbGU7CisgICAgaWYgKCFtX3NoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRs
ZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSkpCisgICAgICAg
IENSQVNIKCk7CisgICAgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGUg
eyBXVEZNb3ZlKGhhbmRsZSksIG1fc2hhcmVkTWVtb3J5LT5zaXplKCkgfTsKKyAgICBlbmNvZGVy
IDw8IGlwY0hhbmRsZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBlbmNvZGVyIDw8IG1fc2Vu
ZGVyV2FpdFNlbWFwaG9yZS5jcmVhdGVTZW5kUmlnaHQoKTsKKyNlbmRpZgorfQorCitPcHRpb25h
bDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlPiBpcGNIYW5kbGU7CisgICAgZGVjb2RlciA+PiBpcGNIYW5kbGU7CisgICAgaWYg
KCFpcGNIYW5kbGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VtYXBob3JlU2VuZFJpZ2h0Owor
ICAgIGRlY29kZXIgPj4gc2VtYXBob3JlU2VuZFJpZ2h0OworICAgIGlmICghc2VtYXBob3JlU2Vu
ZFJpZ2h0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisgICAgaWYgKGlw
Y0hhbmRsZS0+ZGF0YVNpemUgPCBoZWFkZXJTaXplKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6bWFw
KGlwY0hhbmRsZS0+aGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZFdyaXRlKTsKKyAgICBpZiAoc2hhcmVkTWVtb3J5LT5zaXplKCkgPCBpcGNIYW5kbGUtPmRhdGFT
aXplKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIHJldHVybiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHsgc2hhcmVkTWVtb3J5LnJlbGVhc2VO
b25OdWxsKCksIGlwY0hhbmRsZS0+ZGF0YVNpemUsIFNlbWFwaG9yZSB7IFdURk1vdmUoKnNlbWFw
aG9yZVNlbmRSaWdodCkgfSB9OworI2Vsc2UKKyAgICByZXR1cm4gU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciB7IHNoYXJlZE1lbW9yeS0+cmVsZWFzZU5vbk51bGwoKSwgaXBjSGFuZGxlLT5kYXRhU2l6
ZSB9OworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDE5YWRlNDQ4MzQ1YTMwYjgw
YjY2OWY4NzE2M2E1NmUwZDY1Yjg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCkBAIC0wLDAgKzEsMTMxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVk
ZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIklQQ1NlbWFw
aG9yZS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBJUEMgeworCisvLyBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyIGlzIGEgc2hhcmVkICJiaS1wYXJ0aXRlIiBjaXJjdWxhciBidWZmZXIgc3VwcG9ydGlu
ZworLy8gdmFyaWFibGUgbGVuZ3RoIG1lc3NhZ2VzLCBzcGVjaWZpYyBkYXRhIGFsaWdubWVudCB3
aXRoIG1hbmRhdGVkIG1pbmltdW0gc2l6ZS4KKy8vIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5k
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gdXNlIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgdG8gY29t
bXVuaWNhdGUuCisvLworLy8gVGhlICJiaS1wYXJ0aXRlIiBpcyBoZXJlIHRvIG1lYW4gdGhhdCB3
cml0ZXMgYW5kIHJlYWRzIHRvIHRoZSBidWZmZXIgbXVzdCBiZQorLy8gY29udGludW91cy4KKy8v
CisvLyBUaGUgY2xpZW50IChzZW5kZXIgb3IgcmVjZWl2ZXIpICJhY3F1aXJlcyIgc29tZSBhbW91
bnQgb2YgYnVmZmVyIGRhdGEuIElmIGJ1ZmZlciBoYXMgbm8KKy8vIGNhcGFjaXR5LCBhY3F1aXJl
IHJldHVybnMgd2l0aCB6ZXJvIGNhcGFjaXR5LiBJZiBidWZmZXIgaGFzIGF0IGxlYXN0IGFjcXVp
cmVkCisvLyBjYXBhY2l0eSwgYWxsIHRoZSBhdmFpbGFibGUgY2FwYWNpdHkgaXMgcmV0dXJuZWQu
CisvLworLy8gVGhlIGNsaWVudCAicmVsZWFzZXMiIHRoZSBzb21lIGFtb3VudCBvZiBkYXRhLCBh
dCBsZWFzdCB0aGUgYW1vdW50IGFjcXVpcmVkIGJ1dCBwb3RlbnRpYWxseQorLy8gbW9yZS4KKy8v
CisvLyBCb3RoIHNlbmRlciBhbmQgcmVjZWl2ZXIgbXVzdCBhY3F1aXJlIHNhbWUgYW1vdW50IG9m
IGRhdGEgYXQgdGhlIHNhbWUgc3RlcCBvZiB0aGUgYWNxdWlyZSBzZXF1ZW5jZS4KKy8vIElmIHNl
bmRlciBhY3F1aXJlcyBYIGFuZCB0aGVuIFkgYW1vdW50LCByZWNlaXZlciBtdXN0IGRvIHRoZSBz
YW1lLgorLy8KKy8vIFRoZSBjaXJjdWxhciBidWZmZXIgaGFzIGZvbGxvd2luZyBpbXBsZW1lbnRh
dGlvbjoKKy8vICogU2VuZGVyIG93bnMgdGhlIGRhdGEgYmV0d2VlbiBbc2VuZGVyT2Zmc2V0LCBy
ZWNlaXZlck9mZnNldFsuIFdoZW4gc2VuZGVyT2Zmc2V0ID09CisvLyByZWNlaXZlck9mZnNldCwg
c2VuZGVyIG93bnMgYWxsIHRoZSBkYXRhLgorLy8gKiBSZWNlaXZlciBvd25zIHRoZSBkYXRhIGJl
dHdlZW4gW3JlY2VpdmVyT2Zmc2V0LCBzZW5kZXJPZmZzZXRbLgorLy8gKiBUaGUgYnVmZmVyIGNh
biBob2xkIG1heGltdW0gb2Ygc2l6ZSAtIDEgdmFsdWVzLiBUaGUgbGFzdCB2YWx1ZSBpcyByZXNl
cnZlZCBmb3IKKy8vIGluZGljYXRpbmcgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwuIEZJWE1FOiBN
YXliZSB3b3VsZCBiZSBzaW1wbGVyIGltcGxlbWVudGF0aW9uIGlmCisvLyBpdCB3b3VsZCB1c2Ug
dGhlICJ3cmFwIiBmbGFnIGluc3RlYWQgb2YgdGhlIGhvbGUgYXMgdGhlIGluZGljYXRvci4gVGhp
cyB3b3VsZCBtb3ZlCisvLyB0aGUgYWxpZ25lZFNwYW4gaW1wbGVtZW50YXRpb24gdG8gdGhlIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisvLyAqIEFsbCBhdG9taWMgdmFyaWFibGUgbG9hZHMgYXJl
IHVudHJ1c3RlZCwgc28gdGhleSdyZSBjbGFtcGVkLiBWaW9sYXRpb25zIGFyZSBub3QgcmVwb3J0
ZWQsCisvLyB0aG91Z2guCisvLyBTZWUgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuCitjbGFzcyBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKHNpemVfdCBtZW1vcnlTaXplKTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyKFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgflN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIoKTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBvcGVyYXRvcj0oU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYmKTsKKworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IGRhdGFTaXplKCkpOworICAgICAg
ICBpZiAob2Zmc2V0ID09IGRhdGFTaXplKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgbWVzc2FnZUFs
aWdubWVudD4KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGFj
cXVpcmVTaXplKSBjb25zdAorICAgIHsKKyAgICAgICAgb2Zmc2V0ID0gcm91bmRVcFRvTXVsdGlw
bGVPZjxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQpOworICAgICAgICBpZiAob2Zmc2V0ICsgYWNx
dWlyZVNpemUgPj0gZGF0YVNpemUoKSkKKyAgICAgICAgICAgIG9mZnNldCA9IDA7CisgICAgICAg
IHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgQXRvbWljPHNpemVfdD4mIHNlbmRlck9mZnNl
dCgpIHsgcmV0dXJuIGhlYWRlcigpLnNlbmRlck9mZnNldDsgfQorICAgIEF0b21pYzxzaXplX3Q+
JiByZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIGhlYWRlcigpLnJlY2VpdmVyT2Zmc2V0OyB9Cisg
ICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3QqPiht
X3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSArIGhlYWRlclNpemUoKTsgfQorICAgIHNpemVfdCBkYXRh
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVNpemU7IH0KKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBTZW1hcGhvcmUmIHNlbmRlcldhaXRTZW1hcGhvcmUoKSB7IHJldHVybiBtX3NlbmRlcldh
aXRTZW1hcGhvcmU7IH0KKyNlbmRpZgorCisgICAgLy8gVGFnIHZhbHVlIHN0b3JlZCBpbiBIZWFk
ZXI6OnNlbmRlck9mZnNldCB3aGVuIHJlY2VpdmVyIGlzIHNsZWVwaW5nLCBlLmcuIG5vdCBydW5u
aW5nLgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNlbmRlck9mZnNldFJlY2VpdmVySXNT
bGVlcGluZ1RhZyA9IDEgPDwgMzE7CisgICAgLy8gVGFnIHZhbHVlIHN0b3JlZCBpbiBIZWFkZXI6
OnJlY2VpdmVyT2Zmc2V0IHdoZW4gc2VuZGVyIGlzIHdhaXRpbmcsIGUuZy4gd2FpdGluZyBvbgor
ICAgIC8vIGEgc2VtYXBob3JlLgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHJlY2VpdmVy
T2Zmc2V0U2VuZGVySXNXYWl0aW5nVGFnID0gMSA8PCAzMTsKKworICAgIHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cj4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiwgc2l6
ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNlbmRlcldhaXRTZW1hcGhvcmUpOworI2VuZGlm
CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYs
IHNpemVfdCBtZW1vcnlTaXplKTsKKworICAgIHN0cnVjdCBIZWFkZXIgeworICAgICAgICBBdG9t
aWM8c2l6ZV90PiByZWNlaXZlck9mZnNldDsKKyAgICAgICAgLy8gUGFkZGluZyBzbyB0aGF0IHRo
ZSB2YXJpYWJsZXMgbW9zdGx5IGFjY2Vzc2VkIGJ5IGRpZmZlcmVudCBwcm9jZXNzZXMgZG8gbm90
IHNoYXJlIGEgY2FjaGUgbGluZS4KKyAgICAgICAgLy8gVGhpcyBpcyBhbiBhdHRlbXB0IHRvIGF2
b2lkIGNhY2hlLWxpbmUgaW5kdWNlZCByZWR1Y3Rpb24gb2YgcGFyYWxsZWwgYWNjZXNzLgorICAg
ICAgICB1aW50NjRfdCBjYWNoZUxpbmVQYWRkaW5nWzJdOworICAgICAgICBBdG9taWM8c2l6ZV90
PiBzZW5kZXJPZmZzZXQ7CisgICAgfTsKKyAgICBIZWFkZXImIGhlYWRlcigpIGNvbnN0IHsgcmV0
dXJuICpyZWludGVycHJldF9jYXN0PEhlYWRlcio+KG1fc2hhcmVkTWVtb3J5LT5kYXRhKCkpOyB9
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaGVhZGVyU2l6ZSgpIHsgcmV0dXJuIHJvdW5k
VXBUb011bHRpcGxlT2Y8c2l6ZW9mKHN0ZDo6bWF4X2FsaWduX3QpPihzaXplb2YoSGVhZGVyKSk7
IH0KKworICAgIHNpemVfdCBtX2RhdGFTaXplIHsgMCB9OworICAgIFJlZjxXZWJLaXQ6OlNoYXJl
ZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgU2VtYXBo
b3JlIG1fc2VuZGVyV2FpdFNlbWFwaG9yZTsKKyNlbmRpZgorfTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjkyMzJkZWNmNmM3OTNhNDU3NzE2OGU5N2VmYjUxYWFmYjMyZmRlZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25FbmNv
ZGVyLmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgor
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI7CisKKy8vIElQQyBl
bmNvZGVyIHdoaWNoOgorLy8gIC0gRW5jb2RlcyB0byBhIGNhbGxlciBidWZmZXIgd2l0aCBmaXhl
ZCBzaXplLCBkb2VzIG5vdCByZXNpemUsIHN0b3BzIHdoZW4gc2l6ZSBydW5zIG91dAorLy8gIC0g
RG9lcyBub3QgaW5pdGlhbGl6ZSBhbGlnbm1lbnQgZ2FwcworLy8KK2NsYXNzIFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyIGZpbmFsIHsKK3B1YmxpYzoKKyAgICAvLyBTdHJlYW0gbWVzc2FnZSBuZWVk
cyB0byBiZSBhdCBsZWFzdCBzaXplIG9mIFN0cmVhbVNldERlc3RpbmF0aW9uSUQgbWVzc2FnZS4K
KyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtaW5pbXVtTWVzc2FnZVNpemUgPSBzaXplb2Yo
TWVzc2FnZU5hbWUpICsgc2l6ZW9mKHVpbnQ2NF90KTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBtZXNzYWdlQWxpZ25tZW50ID0gYWxpZ25vZihNZXNzYWdlTmFtZSk7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzSVBDRW5jb2RlciA9IHRydWU7CisKKyAgICBTdHJlYW1Db25uZWN0
aW9uRW5jb2RlcihNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDhfdCogc3RyZWFtLCBzaXpl
X3Qgc3RyZWFtQ2FwYWNpdHkpCisgICAgICAgIDogbV9idWZmZXIoc3RyZWFtKQorICAgICAgICAs
IG1fYnVmZmVyQ2FwYWNpdHkoc3RyZWFtQ2FwYWNpdHkpCisgICAgeworICAgICAgICAqdGhpcyA8
PCBtZXNzYWdlTmFtZTsKKyAgICB9CisKKyAgICB+U3RyZWFtQ29ubmVjdGlvbkVuY29kZXIoKSA9
IGRlZmF1bHQ7CisKKyAgICBib29sIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCkKKyAgICB7CisgICAgICAgIHNp
emVfdCBidWZmZXJQb2ludGVyID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihyZWludGVycHJldF9jYXN0
PGludHB0cl90PihtX2J1ZmZlciArIG1fZW5jb2RlZFNpemUpKTsKKyAgICAgICAgc2l6ZV90IG5l
d0J1ZmZlclBvaW50ZXIgPSByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdubWVudCwgYnVmZmVyUG9p
bnRlcik7CisgICAgICAgIGlmIChuZXdCdWZmZXJQb2ludGVyIDwgYnVmZmVyUG9pbnRlcikKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaW50cHRyX3QgYWxpZ25lZFNpemUgPSBt
X2VuY29kZWRTaXplICsgKG5ld0J1ZmZlclBvaW50ZXIgLSBidWZmZXJQb2ludGVyKTsKKyAgICAg
ICAgaWYgKCFyZXNlcnZlKGFsaWduZWRTaXplLCBzaXplKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgdWludDhfdCogYnVmZmVyID0gbV9idWZmZXIgKyBhbGlnbmVkU2l6ZTsK
KyAgICAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7CisgICAgICAgIG1fZW5jb2RlZFNp
emUgPSBhbGlnbmVkU2l6ZSArIHNpemU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImIG9w
ZXJhdG9yPDwoVCYmIHQpCisgICAgeworICAgICAgICBBcmd1bWVudENvZGVyPHN0ZDo6cmVtb3Zl
X2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+LCB2b2lkPjo6ZW5jb2RlKCp0aGlz
LCBzdGQ6OmZvcndhcmQ8VD4odCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IEFTU0VSVChpc1ZhbGlkKCkpOyByZXR1cm4gbV9lbmNv
ZGVkU2l6ZTsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyQ2Fw
YWNpdHk7IH0KKyAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZCgpOyB9
Citwcml2YXRlOgorICAgIGJvb2wgcmVzZXJ2ZShzaXplX3QgYWxpZ25lZFNpemUsIHNpemVfdCBh
ZGRpdGlvbmFsU2l6ZSkKKyAgICB7CisgICAgICAgIHNpemVfdCBzaXplID0gYWxpZ25lZFNpemUg
KyBhZGRpdGlvbmFsU2l6ZTsKKyAgICAgICAgaWYgKHNpemUgPCBhbGlnbmVkU2l6ZSB8fCBzaXpl
ID4gbV9idWZmZXJDYXBhY2l0eSkgeworICAgICAgICAgICAgbV9idWZmZXJDYXBhY2l0eSA9IDA7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIHVpbnQ4X3QqIG1fYnVmZmVyOworICAgIHNpemVfdCBtX2J1ZmZlckNh
cGFjaXR5OworICAgIHNpemVfdCBtX2VuY29kZWRTaXplIHsgMCB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0OTBiYzAxYTQ4ZTc1NmZlYTZk
ZTJmN2VjYmQyN2ZkOWM3MjljZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcApAQCAtMCwwICsxLDE0MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1Db25uZWN0aW9u
V29ya1F1ZXVlOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlKGNvbnN0IGNoYXIqIG5hbWUpCisg
ICAgOiBtX25hbWUobmFtZSkKK3sKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
OjpkaXNwYXRjaChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3sKKyAgICB7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9mdW5jdGlvbnMuYXBwZW5k
KFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKCFtX3Nob3VsZFF1aXQpOyAvLyBS
ZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBvcnRlZC4KKyAgICB9CisgICAgd2Fr
ZVVwUHJvY2Vzc2luZ1RocmVhZCgpOworCit9Cit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWU6OmFkZFN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5l
Y3Rpb24pCit7CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAg
IG1fY29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24pOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxk
UXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVkLgorICAg
IH0KKyAgICB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7Cit9CisKK3ZvaWQgU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZTo6cmVtb3ZlU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZSYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQobV9wcm9jZXNzaW5nVGhyZWFkKTsK
KyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9jb25uZWN0
aW9ucy5yZW1vdmUoY29ubmVjdGlvbik7CisgICAgICAgIEFTU0VSVCghbV9zaG91bGRRdWl0KTsg
Ly8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5vdCBzdXBwb3J0ZWQuCisgICAgfQorI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25hbCgpOworI2VuZGlm
Cit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6c3RvcCgpCit7CisgICAgbV9z
aG91bGRRdWl0ID0gdHJ1ZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoIW1fcHJvY2Vz
c2luZ1RocmVhZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25h
bCgpOworICAgIG1fcHJvY2Vzc2luZ1RocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKKyAgICBt
X3Byb2Nlc3NpbmdUaHJlYWQgPSBudWxscHRyOworI2VuZGlmCit9CisKK3ZvaWQgU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZTo6d2FrZVVwKCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBt
X3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsKKyNlbmRpZgorfQorCitJUEM6OlNlbWFwaG9yZSYg
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6d2FrZVVwU2VtYXBob3JlKCkKK3sKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICByZXR1cm4gbV93YWtlVXBTZW1hcGhvcmU7CisjZWxzZQorICAgIHJl
dHVybiB7IH07CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3
YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAo
bV9wcm9jZXNzaW5nVGhyZWFkKSB7CisgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25hbCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byB0YXNrID0gW3RoaXNdKCkgbXV0
YWJsZSB7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIHByb2Nlc3NTdHJlYW1zKCk7
CisgICAgICAgICAgICBpZiAobV9zaG91bGRRdWl0KSB7CisgICAgICAgICAgICAgICAgcHJvY2Vz
c1N0cmVhbXMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBtX3dha2VVcFNlbWFwaG9yZS53YWl0KCk7CisgICAgICAgIH0KKyAgICB9OworICAg
IG1fcHJvY2Vzc2luZ1RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKG1fbmFtZSwgV1RGTW92ZSh0YXNr
KSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MsIFRocmVhZDo6UU9TOjpVc2VySW50ZXJhY3RpdmUpOwor
I2VuZGlmCit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6cHJvY2Vzc1N0cmVh
bXMoKQoreworICAgIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdE1lc3NhZ2VMaW1pdCA9IDEwMDA7
CisgICAgYm9vbCBoYXNNb3JlVG9Qcm9jZXNzID0gZmFsc2U7CisgICAgZG8geworICAgICAgICBE
ZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IGZ1bmN0aW9uczsKKyAgICAgICAgSGFzaFNldDxS
ZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+PiBjb25uZWN0aW9uczsKKyAgICAgICAgewor
ICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAgICAgICAg
ZnVuY3Rpb25zLnN3YXAobV9mdW5jdGlvbnMpOworICAgICAgICAgICAgY29ubmVjdGlvbnMgPSBt
X2Nvbm5lY3Rpb25zOworICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBm
dW5jdGlvbnMpCisgICAgICAgICAgICBXVEZNb3ZlKGZ1bmN0aW9uKSgpOworCisgICAgICAgIGhh
c01vcmVUb1Byb2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDog
Y29ubmVjdGlvbnMpCisgICAgICAgICAgICBoYXNNb3JlVG9Qcm9jZXNzIHw9IGNvbm5lY3Rpb24t
PmRpc3BhdGNoU3RyZWFtTWVzc2FnZXMoZGVmYXVsdE1lc3NhZ2VMaW1pdCkgPT0gU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2U6Okhhc01vcmVNZXNzYWdlczsKKyAgICB9IHdoaWxlIChoYXNNb3Jl
VG9Qcm9jZXNzKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmN2JhM2YzNDAyOTBm
MzAyNGM1Yjg5YTBlYTNmODMwMDljZDgyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgKQEAgLTAsMCArMSw2
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSVBDU2VtYXBob3Jl
LmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPGF0b21p
Yz4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25EaXNwYXRj
aGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIFN0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVy
IHsKK3B1YmxpYzoKKyAgICBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlKGNvbnN0IGNoYXIqKTsK
KyAgICB+U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSgpID0gZGVmYXVsdDsKKyAgICB2b2lkIGFk
ZFN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmKTsKKyAgICB2b2lk
IHJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmKTsKKwor
ICAgIHZvaWQgZGlzcGF0Y2goV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZv
aWQgc3RvcCgpOworCisgICAgdm9pZCB3YWtlVXAoKTsKKworICAgIFNlbWFwaG9yZSYgd2FrZVVw
U2VtYXBob3JlKCk7Citwcml2YXRlOgorICAgIHZvaWQgd2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgp
OworICAgIHZvaWQgcHJvY2Vzc1N0cmVhbXMoKTsKKworICAgIGNvbnN0IGNoYXIqIGNvbnN0IG1f
bmFtZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBTZW1hcGhvcmUgbV93YWtlVXBTZW1hcGhv
cmU7CisjZW5kaWYKKyAgICBSZWZQdHI8VGhyZWFkPiBtX3Byb2Nlc3NpbmdUaHJlYWQ7CisKKyAg
ICBzdGQ6OmF0b21pYzxib29sPiBtX3Nob3VsZFF1aXQgeyBmYWxzZSB9OworCisgICAgTG9jayBt
X2xvY2s7CisgICAgRGVxdWU8RnVuY3Rpb248dm9pZCgpPj4gbV9mdW5jdGlvbnM7CisgICAgSGFz
aFNldDxSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+PiBtX2Nvbm5lY3Rpb25zOworfTsK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGRhMmY0ZGEyYzE1YmE4OWJlMjc5ZTZjMjAwYzY2
MjQxNGJjZWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5o
IgorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWUuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
JiB3b3JrUXVldWUpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fd29y
a1F1ZXVlKHdvcmtRdWV1ZSkKKyAgICAsIG1fYnVmZmVyKFdURk1vdmUoc3RyZWFtKSkKK3sKK30K
Kwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdl
c0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkK
K3sKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsIHJlY2Vp
dmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgbV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVj
dGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BS
ZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZl
UXVldWUocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBtX3dvcmtRdWV1ZS5yZW1v
dmVTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiYmIG1lc3NhZ2UpCit7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOworICAgICAgICBtX291dE9mU3RyZWFtTWVzc2Fn
ZXMuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAgIH0KKyAgICBtX3dvcmtRdWV1ZS53YWtl
VXAoKTsKK30KKworT3B0aW9uYWw8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4+IFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUoKQoreworICAgIHNpemVfdCByZWNl
aXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9h
Y3F1aXJlKTsKKyAgICBpZiAocmVjZWl2ZXJMaW1pdCA9PSBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3JlY2VpdmVyT2Zmc2V0
LCByZWNlaXZlckxpbWl0KTsKKyAgICBpZiAocmVzdWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNp
emUpIHsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNlbmRlck9mZnNldCgpLmNvbXBh
cmVFeGNoYW5nZVN0cm9uZyhyZWNlaXZlckxpbWl0LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpz
ZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9y
ZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICBBU1NFUlQoIShyZWNlaXZl
ckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1Ns
ZWVwaW5nVGFnKSk7CisgICAgICAgIHJlY2VpdmVyTGltaXQgPSBjbGFtcGVkTGltaXQocmVjZWl2
ZXJMaW1pdCk7CisgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fcmVjZWl2ZXJPZmZzZXQs
IHJlY2VpdmVyTGltaXQpOworICAgIH0KKworICAgIGlmIChyZXN1bHQuc2l6ZSA+PSBtaW5pbXVt
TWVzc2FnZVNpemUpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6cmVsZWFzZShzaXpl
X3QgcmVhZFNpemUpCit7CisgICAgQVNTRVJUKHJlYWRTaXplKTsKKyAgICByZWFkU2l6ZSA9IHN0
ZDo6bWF4KHJlYWRTaXplLCBtaW5pbXVtTWVzc2FnZVNpemUpOworICAgIHNpemVfdCByZWNlaXZl
ck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9yZWNlaXZlck9mZnNldCkgKyByZWFk
U2l6ZSk7CisgICAgc2l6ZV90IG9sZFJlY2VpdmVyT2Zmc2V0ID0gc2hhcmVkUmVjZWl2ZXJPZmZz
ZXQoKS5leGNoYW5nZShyZWNlaXZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7
CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAvLyBJZiB0aGUgc2VuZGVyIHdyb3RlIG92ZXIg
cmVjZWl2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBzZW5kZXIgaXMgd2FpdGluZy4KKyAgICBpZiAo
b2xkUmVjZWl2ZXJPZmZzZXQgIT0gbV9yZWNlaXZlck9mZnNldCkKKyAgICAgICAgbV9idWZmZXIu
c2VuZGVyV2FpdFNlbWFwaG9yZSgpLnNpZ25hbCgpOworI2VuZGlmCisKKyAgICBtX3JlY2VpdmVy
T2Zmc2V0ID0gcmVjZWl2ZXJPZmZzZXQ7Cit9CisKK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
OjpTcGFuIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjphbGlnbmVkU3BhbihzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgQVNTRVJUKG9mZnNldCA8IGRhdGFTaXplKCkpOwor
ICAgIEFTU0VSVChsaW1pdCA8IGRhdGFTaXplKCkpOworICAgIHNpemVfdCBhbGlnbmVkID0gYWxp
Z25PZmZzZXQob2Zmc2V0KTsKKyAgICBzaXplX3QgcmVzdWx0U2l6ZSA9IDA7CisgICAgaWYgKG9m
ZnNldCA8IGxpbWl0KSB7CisgICAgICAgIGlmIChvZmZzZXQgPD0gYWxpZ25lZCAmJiBhbGlnbmVk
IDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7
CisgICAgfSBlbHNlIGlmIChvZmZzZXQgPiBsaW1pdCkgeworICAgICAgICBpZiAoYWxpZ25lZCA+
PSBvZmZzZXQgfHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNp
emUoYWxpZ25lZCwgbGltaXQpOworICAgIH0KKyAgICByZXR1cm4geyBkYXRhKCkgKyBhbGlnbmVk
LCByZXN1bHRTaXplIH07Cit9CisKK3NpemVfdCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6
c2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgaWYgKG9mZnNldCA8PSBs
aW1pdCkKKyAgICAgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0OworICAgIHJldHVybiBkYXRhU2l6
ZSgpIC0gb2Zmc2V0OworfQorCitzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmNs
YW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHVu
dHJ1c3RlZExpbWl0IDwgKGRhdGFTaXplKCkgLSAxKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHVu
dHJ1c3RlZExpbWl0LCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MjBiOTIxMzZmZjZiNmE5YjllMTk4ZGM5NzNiM2QzYTZlYTU2NjI4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCkBA
IC0wLDAgKzEsMjgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIK
KyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKKyNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBJUEMg
eworCitjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOworCitjbGFzcyBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZT4sIHByb3RlY3RlZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSk7CitwdWJsaWM6
CisgICAgflN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKCkgb3ZlcnJpZGUgPSBkZWZhdWx0Owor
CisgICAgQ29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQor
CisgICAgZW51bSBEaXNwYXRjaFJlc3VsdCA6IGJvb2wgeworICAgICAgICBIYXNOb01lc3NhZ2Vz
LAorICAgICAgICBIYXNNb3JlTWVzc2FnZXMKKyAgICB9OworICAgIHZpcnR1YWwgRGlzcGF0Y2hS
ZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KSA9IDA7CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgdm9pZCBzZW5kU3luY1Jl
cGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYmLi4uKTsKKworcHJvdGVjdGVk
OgorICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKElQQzo6Q29ubmVjdGlvbiYsIFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYpOworCisgICAg
dm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQpOworICAgIHZvaWQgc3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgLy8gTWVzc2FnZVJlY2VpdmVR
dWV1ZQorICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiYmKSBmaW5hbDsKKworICAgIHN0cnVjdCBTcGFuIHsKKyAgICAgICAgdWludDhf
dCogZGF0YTsKKyAgICAgICAgc2l6ZV90IHNpemU7CisgICAgfTsKKyAgICBPcHRpb25hbDxTcGFu
PiB0cnlBcXVpcmUoKTsKKworICAgIHZvaWQgcmVsZWFzZShzaXplX3QgcmVhZFNpemUpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdl
QWxpZ25tZW50OworICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxp
bWl0KTsKKyAgICBzaXplX3Qgc2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAg
IHNpemVfdCBjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdDsKKyAgICBz
aXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci53
cmFwT2Zmc2V0KG9mZnNldCk7IH0KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9mZnNl
dCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFsaWdubWVudD4o
b2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9CisgICAgQXRvbWljPHNpemVfdD4mIHNoYXJl
ZFNlbmRlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9mZnNldCgpOyB9CisgICAg
QXRvbWljPHNpemVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIu
cmVjZWl2ZXJPZmZzZXQoKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5kYXRhU2l6ZSgpOyB9CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CisgICAgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgbV93b3JrUXVldWU7CisKKyAg
ICBzaXplX3QgbV9yZWNlaXZlck9mZnNldCB7IDAgfTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyIG1fYnVmZmVyOworCisgICAgTG9jayBtX291dE9mU3RyZWFtTWVzc2FnZXNMb2NrOworICAg
IERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9vdXRPZlN0cmVhbU1lc3NhZ2VzOwor
CisgICAgZnJpZW5kIGNsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU7Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlOjpzZW5kU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYmLi4u
IGFyZ3VtZW50cykKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHNlbmRpbmcgdG8gYnVmZmVy
LgorICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihJUEM6Ok1lc3Nh
Z2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKKyAgICAoKmVuY29kZXIg
PDwgLi4uIDw8IGFyZ3VtZW50cyk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdU
Rk1vdmUoZW5jb2RlcikpOworfQorCisvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHJlcHJlc2Vu
dHMgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBzdHJlYW0gc2VuZGVyIGFuZCByZWNlaXZlciwgYXMg
dXNlZCBieSB0aGUgcmVjZWl2ZXIuCisvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOgorLy8gICog
SG9sZHMgdGhlIG1lc3NhZ2VzIHRvd2FyZHMgdGhlIHJlY2VpdmVyLgorLy8gICogU2VuZHMgdGhl
IHJlcGxpZXMgYmFjayB0byB0aGUgc2VuZGVyIHZpYSB0aGUgc3RyZWFtIG9yIG5vcm1hbCBDb25u
ZWN0aW9uIGZhbGxiYWNrLgorLy8KKy8vIFJlY2VpdmVyIHRlbXBsYXRlIGNvbnRyYWN0OgorLy8g
ICB2b2lkIGRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
JiwgRGVjb2RlciYpOworLy8KK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorY2xhc3MgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBj
cmVhdGUoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0
cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyZWFtU2VydmVyQ29ubmVjdGlvbihjb25u
ZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSkpOworICAgIH0KKyAgICB+
U3RyZWFtU2VydmVyQ29ubmVjdGlvbigpIGZpbmFsID0gZGVmYXVsdDsKKworICAgIHZvaWQgc3Rh
cnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYsIFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCk7CisgICAgLy8gU3RvcHMgdGhlIG1lc3NhZ2UgcmVjZWlwdC4gTm90ZTogYWxy
ZWFkeSByZWNlaXZlZCBtZXNzYWdlcyBtaWdodCBzdGlsbCBiZSBkZWxpdmVyZWQuCisgICAgdm9p
ZCBzdG9wUmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKTsKKworICAgIC8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIG92ZXJyaWRlcy4KKyAg
ICBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNzYWdlTGlt
aXQpIGZpbmFsOworCitwcml2YXRlOgorICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlciwg
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQorICAgICAgICA6IFN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlKGNvbm5lY3Rpb24sIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgd29y
a1F1ZXVlKQorICAgIHsKKyAgICB9CisgICAgYm9vbCBwcm9jZXNzU2V0U3RyZWFtRGVzdGluYXRp
b25JRChEZWNvZGVyJiYsIFJlZlB0cjxSZWNlaXZlcj4mIGN1cnJlbnRSZWNlaXZlcik7CisgICAg
Ym9vbCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmLCBSZWNlaXZlciYpOworICAgIGJv
b2wgZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmKTsKKyAgICBMb2NrIG1fcmVj
ZWl2ZXJzTG9jazsKKyAgICB1c2luZyBSZWNlaXZlcnNNYXAgPSBIYXNoTWFwPHN0ZDo6cGFpcjx1
aW50OF90LCB1aW50NjRfdD4sIFJlZjxSZWNlaXZlcj4+OworICAgIFJlY2VpdmVyc01hcCBtX3Jl
Y2VpdmVyczsKKworICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgPSAwOworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b248UmVjZWl2ZXI+OjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyJiByZWNlaXZlciwg
UmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAg
ICB7CisgICAgICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhf
dD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgQVNTRVJUKCFtX3JlY2VpdmVycy5j
b250YWlucyhrZXkpKTsKKyAgICAgICAgbV9yZWNlaXZlcnMuYWRkKGtleSwgbWFrZVJlZihyZWNl
aXZlcikpOworICAgIH0KKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNl
aXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVj
ZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQp
OworICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVj
ZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3JlY2VpdmVyc0xvY2spOworICAgIEFTU0VSVChtX3JlY2VpdmVycy5jb250YWlucyhrZXkpKTsK
KyAgICBtX3JlY2VpdmVycy5yZW1vdmUoa2V5KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVj
ZWl2ZXI+CitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6RGlzcGF0Y2hSZXN1bHQgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoU3RyZWFtTWVzc2FnZXMoc2l6ZV90
IG1lc3NhZ2VMaW1pdCkKK3sKKyAgICBSZWZQdHI8UmVjZWl2ZXI+IGN1cnJlbnRSZWNlaXZlcjsK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IFdURjo6aXNWYWxpZChSZWNlaXZlck5hbWUpLgorICAg
IHVpbnQ4X3QgY3VycmVudFJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFJlY2Vp
dmVyTmFtZTo6SW52YWxpZCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1lc3NhZ2VM
aW1pdDsgKytpKSB7CisgICAgICAgIGF1dG8gc3BhbiA9IHRyeUFxdWlyZSgpOworICAgICAgICBp
ZiAoIXNwYW4pCisgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2Fn
ZXM7CisgICAgICAgIElQQzo6RGVjb2RlciBkZWNvZGVyIHsgc3Bhbi0+ZGF0YSwgc3Bhbi0+c2l6
ZSwgbV9jdXJyZW50RGVzdGluYXRpb25JRCB9OworICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxp
ZCgpKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgICAgICByZXR1cm4gRGlz
cGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRCkg
eworICAgICAgICAgICAgaWYgKCFwcm9jZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRChXVEZNb3Zl
KGRlY29kZXIpLCBjdXJyZW50UmVjZWl2ZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiBEaXNw
YXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OlBy
b2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGlmICghZGlzcGF0Y2hPdXRP
ZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnJlbnRSZWNlaXZlck5hbWUgIT0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB7CisgICAgICAgICAgICBj
dXJyZW50UmVjZWl2ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpOworICAgICAgICAgICAgY3VycmVudFJlY2VpdmVyID0gbnVsbHB0cjsK
KyAgICAgICAgfQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNlaXZlcikgeworICAgICAgICAgICAg
YXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihjdXJyZW50UmVj
ZWl2ZXJOYW1lKSwgbV9jdXJyZW50RGVzdGluYXRpb25JRCk7CisgICAgICAgICAgICBpZiAoIVJl
Y2VpdmVyc01hcDo6aXNWYWxpZEtleShrZXkpKSB7CisgICAgICAgICAgICAgICAgbV9jb25uZWN0
aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkpOworICAgICAgICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdl
czsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9y
ZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG1fcmVjZWl2ZXJz
LmdldChrZXkpOworICAgICAgICB9CisgICAgICAgIGlmICghY3VycmVudFJlY2VpdmVyKSB7Cisg
ICAgICAgICAgICAvLyBWYWxpZCBzY2VuYXJpbyBpcyB3aGVuIHJlY2VpdmVyIGhhcyBiZWVuIHJl
bW92ZWQsIGJ1dCB0aGVyZSBhcmUgbWVzc2FnZXMgZm9yIGl0IGluIHRoZSBidWZmZXIuCisgICAg
ICAgICAgICAvLyBGSVhNRTogU2luY2Ugd2UgZG8gbm90IGhhdmUgYSByZWNlaXZlciwgd2UgZG9u
J3Qga25vdyBob3cgdG8gZGVjb2RlIHRoZSBtZXNzYWdlLgorICAgICAgICAgICAgLy8gVGhpcyBt
ZWFucyB3ZSBtdXN0IHRpbWVvdXQgZXZlcnkgcmVjZWl2ZXIgaW4gdGhlIHN0cmVhbSBjb25uZWN0
aW9uLgorICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIGFzc2VydCB0aGF0IHRoZSByZWNlaXZl
cnMgYXJlIGVtcHR5LCBhcyB3ZSBvbmx5IGhhdmUgdXAgdG8gb25lIHJlY2VpdmVyIGluCisgICAg
ICAgICAgICAvLyBhIHN0cmVhbSBjb25uZWN0aW9uIHVudGlsIHBvc3NpYmlsaXR5IG9mIHNraXBw
aW5nIGlzIGltcGxlbWVudGVkIHByb3Blcmx5LgorICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICAgICAgQVNTRVJUKG1fcmVjZWl2ZXJz
LmlzRW1wdHkoKSk7CisgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVz
c2FnZXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFkaXNwYXRjaFN0cmVhbU1lc3NhZ2UoV1RG
TW92ZShkZWNvZGVyKSwgKmN1cnJlbnRSZWNlaXZlcikpCisgICAgICAgICAgICByZXR1cm4gRGlz
cGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgfQorICAgIHJldHVybiBEaXNwYXRjaFJl
c3VsdDo6SGFzTW9yZU1lc3NhZ2VzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4K
K2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnByb2Nlc3NTZXRTdHJlYW1E
ZXN0aW5hdGlvbklEKERlY29kZXImJiBkZWNvZGVyLCBSZWZQdHI8UmVjZWl2ZXI+JiBjdXJyZW50
UmVjZWl2ZXIpCit7CisgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDA7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkZXN0aW5hdGlvbklEKSkgeworICAgICAgICBtX2Nvbm5lY3Rpb24tPmRp
c3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG1fY3VycmVudERlc3RpbmF0aW9u
SUQgIT0gZGVzdGluYXRpb25JRCkgeworICAgICAgICBtX2N1cnJlbnREZXN0aW5hdGlvbklEID0g
ZGVzdGluYXRpb25JRDsKKyAgICAgICAgY3VycmVudFJlY2VpdmVyID0gbnVsbHB0cjsKKyAgICB9
CisgICAgcmVsZWFzZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29sIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UoRGVjb2RlciYm
IGRlY29kZXIsIFJlY2VpdmVyJiByZWNlaXZlcikKK3sKKyAgICByZWNlaXZlci5kaWRSZWNlaXZl
U3RyZWFtTWVzc2FnZSgqdGhpcywgZGVjb2Rlcik7CisgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQo
KSkgeworICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmVsZWFzZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29sIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaE91dE9mU3RyZWFtTWVzc2FnZShEZWNv
ZGVyJiYgZGVjb2RlcikKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVzc2FnZTsK
KyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vdXRPZlN0cmVhbU1lc3Nh
Z2VzTG9jayk7CisgICAgICAgIGlmIChtX291dE9mU3RyZWFtTWVzc2FnZXMuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtZXNzYWdlID0gbV9vdXRPZlN0cmVh
bU1lc3NhZ2VzLnRha2VGaXJzdCgpOworICAgIH0KKyAgICBpZiAoIW1lc3NhZ2UpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxSZWNlaXZlcj4gcmVjZWl2ZXI7CisgICAgewor
ICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1l
c3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSk7
CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAg
ICAgcmVjZWl2ZXIgPSBtX3JlY2VpdmVycy5nZXQoa2V5KTsKKyAgICB9CisgICAgaWYgKHJlY2Vp
dmVyKSB7CisgICAgICAgIHJlY2VpdmVyLT5kaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSgqdGhpcywg
Km1lc3NhZ2UpOworICAgICAgICBpZiAoIW1lc3NhZ2UtPmlzVmFsaWQoKSkgeworICAgICAgICAg
ICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShtZXNzYWdl
LT5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAvLyBJZiByZWNlaXZlciBkb2VzIG5vdCBleGlzdCBpZiBpdCBoYXMgYmVlbiBy
ZW1vdmVkIGJ1dCBtZXNzYWdlcyBhcmUgc3RpbGwgcGVuZGluZyB0byBiZQorICAgIC8vIHByb2Nl
c3NlZC4gSXQncyBvayB0byBza2lwIHN1Y2ggbWVzc2FnZXMuCisgICAgLy8gRklYTUU6IE5vdGUs
IGNvcnJlc3BvbmRpbmcgc2tpcCBpcyBub3QgcG9zc2libGUgYXQgdGhlIG1vbWVudCBmb3Igc3Ry
ZWFtIG1lc3NhZ2VzLgorICAgIHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24o
KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9jb2NvYS9NYWNoUG9ydC5oCmluZGV4IDc4NTRmYThmMTg2OGZiOGU0NTYyMjg5ZmRkZjZmMjc5
NWFmMmQ5MGQuLjgzZDk5ZjBjYmM4ZmUwNDgyMGI0NzgzYzljMDc2YWI1N2EzZWFiMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaApAQCAtMjUsOSArMjUs
OCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNs
dWRlICJBdHRhY2htZW50LmgiCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29k
ZXIuaCIKIAogbmFtZXNwYWNlIElQQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CmluZGV4IGVkMDhjNzM5NzcwMjIyZmM1YzRjNDZjMzM0NzhhYzEwMzAxYTk5ODgu
LmFjOWU3ODJlMjE4MzE4MWJjOTg1MzVkNWRlODRmZTgwNWFmMDdlOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjQsOCArMjQsOSBAQCBpbXBvcnQgY29s
bGVjdGlvbnMKIGltcG9ydCByZQogaW1wb3J0IHN5cwogCitmcm9tIG1vZGVsIGltcG9ydCBNZXNz
YWdlUmVjZWl2ZXIsIE1lc3NhZ2UKIGZyb20gd2Via2l0IGltcG9ydCBwYXJzZXIKLWZyb20gd2Vi
a2l0Lm1vZGVsIGltcG9ydCBCVUlMVElOX0FUVFJJQlVURSwgQVNZTkNfQVRUUklCVVRFLCBTWU5D
SFJPTk9VU19BVFRSSUJVVEUsIE1BSU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUKK2Zyb20gd2Vi
a2l0Lm1vZGVsIGltcG9ydCBCVUlMVElOX0FUVFJJQlVURSwgQVNZTkNfQVRUUklCVVRFLCBTWU5D
SFJPTk9VU19BVFRSSUJVVEUsIE1BSU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUsIFNUUkVBTV9B
VFRSSUJVVEUsIFdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFCiAKIF9saWNlbnNlX2hlYWRlciA9
ICIiIi8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCkBAIC01MywxMyArNTQsMTEgQEAgX2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKIAog
IiIiCiAKLVdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFID0gJ1dhbnRzQ29ubmVjdGlvbicKIFdB
TlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFID0gJ1dhbnRzRGlzcGF0Y2hNZXNzYWdlJwog
V0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUgPSAnV2FudHNBc3luY0Rpc3Bh
dGNoTWVzc2FnZScKIExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUgPSAnTGVnYWN5UmVjZWl2ZXIn
CiBOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUgPSAnTm90UmVmQ291bnRlZCcKIAot
CiBkZWYgcmVjZWl2ZXJfZW51bWVyYXRvcl9vcmRlcl9rZXkocmVjZWl2ZXJfbmFtZSk6CiAgICAg
aWYgcmVjZWl2ZXJfbmFtZSA9PSAnSVBDJzoKICAgICAgICAgcmV0dXJuIDEKQEAgLTIxMSw3ICsy
MTAsNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2ZXIsIG1lc3Nh
Z2UpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0
byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpNYWlu
VGhyZWFkO1xuJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkO1xuJykKLSAgICAgICAgaWYgbWVz
c2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNf
YXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgIGlmIChtZXNzYWdlLmhhc19hdHRy
aWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZ
TkNfQVRUUklCVVRFKSkgYW5kIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRS
SUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIHNlbmQo
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJicpCiAgICAg
ICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJzKToKICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcsICVzJyAlIGNvbXBsZXRpb25faGFuZGxlcl9wYXJhbWV0ZXJzKQpAQCAtMjU5LDYg
KzI1OCw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAg
ICAgcmV0dXJuIGZyb3plbnNldChbCiAgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAg
ICAgICAnSVBDOjpGb250UmVmZXJlbmNlJywKKyAgICAgICAgJ0lQQzo6U2VtYXBob3JlJywKICAg
ICAgICAgJ01hY2hTZW5kUmlnaHQnLAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAgICAgJ1N0
cmluZycsCkBAIC01NzEsMTAgKzU3MSwxNSBAQCBkZWYgc3luY19tZXNzYWdlX3N0YXRlbWVudChy
ZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdBc3luYycK
IAogICAgIHdhbnRzX2Nvbm5lY3Rpb24gPSBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05P
VVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoV0FOVFNfQ09OTkVDVElPTl9B
VFRSSUJVVEUpCisgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9ICIsICpyZXBseUVuY29kZXIiCisg
ICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToKKyAgICAgICAg
bWF5YmVfcmVwbHlfZW5jb2RlciA9ICcnCisgICAgZWxpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUo
U1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRU
UklCVVRFKToKKyAgICAgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9ICcsIHJlcGx5RW5jb2RlcicK
IAogICAgIHJlc3VsdCA9IFtdCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OiVzOjolczo6bmFtZSgpKSB7XG4nICUgKHJlY2VpdmVy
Lm5hbWUsIG1lc3NhZ2UubmFtZSkpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBJUEM6OiVz
PE1lc3NhZ2VzOjolczo6JXM+KCVzZGVjb2RlciwgJXNyZXBseUVuY29kZXIsIHRoaXMsICYlcyk7
XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICdj
b25uZWN0aW9uLCAnIGlmIHdhbnRzX2Nvbm5lY3Rpb24gZWxzZSAnJywgJycgaWYgbWVzc2FnZS5o
YXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmli
dXRlKEFTWU5DX0FUVFJJQlVURSkgZWxzZSAnKicsIGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIs
IG1lc3NhZ2UpKSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6
OiVzOjolcz4oJXNkZWNvZGVyJXMsIHRoaXMsICYlcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9u
LCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICdjb25uZWN0aW9uLCAnIGlmIHdhbnRzX2Nv
bm5lY3Rpb24gZWxzZSAnJywgbWF5YmVfcmVwbHlfZW5jb2RlciwgaGFuZGxlcl9mdW5jdGlvbihy
ZWNlaXZlciwgbWVzc2FnZSkpKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuO1xu
JykKICAgICByZXN1bHQuYXBwZW5kKCcgICAgfVxuJykKICAgICByZXR1cm4gc3Vycm91bmRfaW5f
Y29uZGl0aW9uKCcnLmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCkBAIC04NzQsNyAr
ODc5LDcgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAg
IGlmIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25lIGFuZCAobWVzc2FnZS5oYXNfYXR0
cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFT
WU5DX0FUVFJJQlVURSkpOgogICAgICAgICAgICAgZGVsYXllZF9vcl9hc3luY19tZXNzYWdlcy5h
cHBlbmQobWVzc2FnZSkKIAotICAgIGlmIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXM6CisgICAg
aWYgZGVsYXllZF9vcl9hc3luY19tZXNzYWdlcyBhbmQgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1
dGUoU1RSRUFNX0FUVFJJQlVURSk6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBN
ZXNzYWdlcyB7XG5cbm5hbWVzcGFjZSAlcyB7XG5cbicgJSByZWNlaXZlci5uYW1lKQogCiAgICAg
ICAgIGZvciBtZXNzYWdlIGluIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXM6CkBAIC05MjIsMjUg
KzkyNyw0NCBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgIGFzeW5jX21lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQogCi0g
ICAgaWYgYXN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQ
QVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19B
U1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
J3ZvaWQgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5h
bWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBl
bHNlICcnKSkKKyAgICBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUp
OgorICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2Fn
ZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUpKQogICAgICAgICByZXN1bHQuYXBwZW5k
KCd7XG4nKQotICAgICAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09V
TlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpOgorICAgICAgICBhc3NlcnQocmVjZWl2ZXIuaGFzX2F0
dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpKQorICAgICAgICBhc3Nl
cnQobm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRS
SUJVVEUpKQorICAgICAgICBhc3NlcnQobm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNf
QVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKQorCisgICAgICAgIHJlc3VsdCArPSBb
YXN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGlu
IGFzeW5jX21lc3NhZ2VzXQorICAgICAgICByZXN1bHQgKz0gW3N5bmNfbWVzc2FnZV9zdGF0ZW1l
bnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIHN5bmNfbWVzc2FnZXNdCisKKyAg
ICAgICAgaWYgKHJlY2VpdmVyLnN1cGVyY2xhc3MpOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgICVzOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTtc
bicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpO1xuJykKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7XG4nKQorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKyAgICBlbGlmIGFzeW5jX21lc3NhZ2VzIG9yIHJlY2Vp
dmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpIG9yIHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJV
VEUpOgorICAgICAgICByZWNlaXZlX3ZhcmlhbnQgPSByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVy
Lmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJworICAgICAg
ICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5u
YW1lLCByZWNlaXZlX3ZhcmlhbnQpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAg
ICAgICBpZiBub3QgKHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlW
RVJfQVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUp
KToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKTtcbicpCiAKICAgICAgICAgcmVzdWx0ICs9IFthc3luY19tZXNzYWdlX3N0
YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gYXN5bmNfbWVzc2FnZXNd
CisKICAgICAgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQ
QVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
aWYgKGRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKSlcbicpCiAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybjtcbicpCiAgICAgICAgIGlmIChyZWNlaXZl
ci5zdXBlcmNsYXNzKToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAlczo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xh
c3MpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZlJXNNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNsYXNzLCByZWNl
aXZlX3ZhcmlhbnQpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpO1xuJykKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJ31cbicpCiAKLSAgICBpZiBzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1
dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgorICAgIGlmIG5vdCByZWNlaXZl
ci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpIGFuZCAoc3luY19tZXNzYWdlcyBvciBy
ZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSk6
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9p
ZCAlczo6ZGlkUmVjZWl2ZVN5bmMlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBy
ZXBseUVuY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2
ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CmluZGV4IDQ4ZDhlMWI2MjdjYzMxYjE4ZmExYzUw
ZmFiZWVlZDk3MWJkMTViZTkuLmU4OWUxN2UxNDA3YjViNTY2YmMxOTJjNDBhOTlhMjhkOGJmOGRj
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5p
dHRlc3QucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0
dGVzdC5weQpAQCAtNDYsNiArNDYsOCBAQCBfdGVzdF9yZWNlaXZlcl9uYW1lcyA9IFsKICAgICAn
VGVzdFdpdGhJZk1lc3NhZ2UnLAogICAgICdUZXN0V2l0aFNlbWFwaG9yZScsCiAgICAgJ1Rlc3RX
aXRoSW1hZ2VEYXRhJywKKyAgICAnVGVzdFdpdGhTdHJlYW0nLAorICAgICdUZXN0V2l0aFN0cmVh
bUJ1ZmZlcicKIF0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21vZGVsLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQppbmRleCA0
ODAwZmE0ZWZjYTk2NzhhODlhZmM3ZTQzNGYyNmIzNDZjZThjZjZjLi41MDdlMDQyYTU3N2ZmOGEw
MjMzNzJjM2E2MDdhYjEwOGE1ZmE5Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21vZGVsLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9k
ZWwucHkKQEAgLTI4LDYgKzI4LDggQEAgQlVJTFRJTl9BVFRSSUJVVEUgPSAiQnVpbHRpbiIKIEFT
WU5DX0FUVFJJQlVURSA9ICJBc3luYyIKIE1BSU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUgPSAi
TWFpblRocmVhZENhbGxiYWNrIgogU1lOQ0hST05PVVNfQVRUUklCVVRFID0gJ1N5bmNocm9ub3Vz
JworU1RSRUFNX0FUVFJJQlVURSA9ICJTdHJlYW0iCitXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVU
RSA9ICdXYW50c0Nvbm5lY3Rpb24nCiAKIGNsYXNzIE1lc3NhZ2VSZWNlaXZlcihvYmplY3QpOgog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdXBlcmNsYXNzLCBhdHRyaWJ1dGVzLCBtZXNz
YWdlcywgY29uZGl0aW9uKToKQEAgLTczLDcgKzc1LDkgQEAgaXBjX3JlY2VpdmVyID0gTWVzc2Fn
ZVJlY2VpdmVyKG5hbWU9IklQQyIsIHN1cGVyY2xhc3M9Tm9uZSwgYXR0cmlidXRlcz1bQlVJTFRJ
Tl8KICAgICBNZXNzYWdlKCdXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZycsIFtdLCBbXSwg
YXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURV0sIGNv
bmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdTeW5jTWVzc2FnZVJlcGx5JywgW10sIFtdLCBh
dHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBNZXNz
YWdlKCdJbml0aWFsaXplQ29ubmVjdGlvbicsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9B
VFRSSUJVVEVdLCBjb25kaXRpb249IlBMQVRGT1JNKENPQ09BKSIpLAotICAgIE1lc3NhZ2UoJ0xl
Z2FjeVNlc3Npb25TdGF0ZScsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVd
LCBjb25kaXRpb249Tm9uZSkKKyAgICBNZXNzYWdlKCdMZWdhY3lTZXNzaW9uU3RhdGUnLCBbXSwg
W10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAorICAg
IE1lc3NhZ2UoJ1NldFN0cmVhbURlc3RpbmF0aW9uSUQnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JV
SUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2UoJ1Byb2Nlc3NP
dXRPZlN0cmVhbU1lc3NhZ2UnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRF
XSwgY29uZGl0aW9uPU5vbmUpCiBdLCBjb25kaXRpb249Tm9uZSkKIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQppbmRleCAyMWIzMGFlMjBmYTEwMzNmYTY2
NGUwM2FkYmQ4ODA4NmE2YzcyYzQyLi5lMTk3YmQzYzI2N2FlNDExYTQ1MDBkMGZmNjkzOTg2MDNh
NDUwODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01h
a2VmaWxlCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUK
QEAgLTYsNiArNiw4IEBAIFRFU1RTID0gXAogICAgIFRlc3RXaXRoSWZNZXNzYWdlIFwKICAgICBU
ZXN0V2l0aFNlbWFwaG9yZSBcCiAgICAgVGVzdFdpdGhJbWFnZURhdGEgXAorCVRlc3RXaXRoU3Ry
ZWFtIFwKKwlUZXN0V2l0aFN0cmVhbUJ1ZmZlciBcCiAjCiAKIGFsbDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcAppbmRleCA3ZDVh
ZmM5MThlNWIwNWI4ZjdhNWNkNjIzODUyYjVjMGUwYzE4YTAzLi4yZTdjYTE1ZTc0ZWJiZGE4NmM3
OWY4ZmMwYjhmMzhiNGI1Zjc1ODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCkBAIC0xMzQsNiArMTM0LDEwIEBAIGNvbnN0
IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lIG5hbWUpCiAgICAgICAgIHJldHVybiAiSW5p
dGlhbGl6ZUNvbm5lY3Rpb24iOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25T
dGF0ZToKICAgICAgICAgcmV0dXJuICJMZWdhY3lTZXNzaW9uU3RhdGUiOworICAgIGNhc2UgTWVz
c2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2U6CisgICAgICAgIHJldHVybiAiUHJv
Y2Vzc091dE9mU3RyZWFtTWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6U2V0U3RyZWFt
RGVzdGluYXRpb25JRDoKKyAgICAgICAgcmV0dXJuICJTZXRTdHJlYW1EZXN0aW5hdGlvbklEIjsK
ICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OgogICAgICAgICByZXR1cm4g
IlN5bmNNZXNzYWdlUmVwbHkiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJj
bGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CkBAIC0yMjQsNiArMjI4LDggQEAgUmVjZWl2ZXJO
YW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICAgICAgcmV0dXJu
IFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOwogICAgIGNhc2UgTWVzc2FnZU5h
bWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2FjeVNl
c3Npb25TdGF0ZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNz
YWdlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQ6CiAgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseToKICAgICAgICAgcmV0dXJuIFJlY2Vp
dmVyTmFtZTo6SVBDOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19U
ZXN0QXN5bmNNZXNzYWdlUmVwbHk6CkBAIC00MDEsNiArNDA3LDEwIEBAIGJvb2wgaXNWYWxpZE1l
c3NhZ2VOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogI2VuZGlmCiAgICAgaWYgKG1lc3Nh
Z2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZSkKICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlBy
b2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICht
ZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklEKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6U3luY01lc3NhZ2VSZXBseSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvTWVzc2FnZU5hbWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L01lc3NhZ2VOYW1lcy5oCmluZGV4IGVmZWEyMzAyZDY4N2JlNGY1MjI2OTBmNzhhM2M2NGY2MzZl
MzFmZDguLmEyMmJkMWNmZDdmNzNiZTllYWIxY2JiYzBmZjBjNmVmMDZhMDY0MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaApAQCAt
OTMsNiArOTMsOCBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3QgewogICAgICwg
VGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1RvdWNoRXZlbnQKICAgICAsIEluaXRpYWxpemVDb25uZWN0
aW9uCiAgICAgLCBMZWdhY3lTZXNzaW9uU3RhdGUKKyAgICAsIFByb2Nlc3NPdXRPZlN0cmVhbU1l
c3NhZ2UKKyAgICAsIFNldFN0cmVhbURlc3RpbmF0aW9uSUQKICAgICAsIFN5bmNNZXNzYWdlUmVw
bHkKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHkKICAgICAs
IFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb25SZXBseQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0
cmVhbS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQwZjUyOGM2OWNkZWZkZGE5YzQ4
Njc5MTM4YzYzOGI4YWMwY2IzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwy
NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisj
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRlc3RzIFN0
cmVhbSByZWNlaXZlciBhdHRyaWJ1dGUuCittZXNzYWdlcyAtPiBUZXN0V2l0aFN0cmVhbSBOb3RS
ZWZDb3VudGVkIFN0cmVhbSB7CisgICAgdm9pZCBTZW5kU3RyaW5nKFN0cmluZyB1cmwpCisgICAg
dm9pZCBTZW5kU3RyaW5nU3luY2hyb25pemVkKFN0cmluZyB1cmwpIC0+IChpbnQ2NF90IHJldHVy
bikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEx
NzBhYzg5YTI1ZjAzOTIxOWZlNDE4MTA1YjJjMWQwNGFlMGM3ZTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworIyBUZXN0cyBTdHJlYW0gcmVjZWl2ZXIgYXR0cmlidXRlLgorbWVzc2Fn
ZXMgLT4gVGVzdFdpdGhTdHJlYW1CdWZmZXIgIHsKKyAgICB2b2lkIFNlbmRTdHJlYW1CdWZmZXIo
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzljOTI0MGE0ZWIx
YWI1NTc0MDk2MDIyOTFkYzEyNzMxOTg3ZjA1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXIuaCIKKworI2luY2x1ZGUg
IkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2Fn
ZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgVGVzdFdpdGhTdHJlYW1CdWZmZXI6
OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
OworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3Ry
ZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5k
bGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZl
cj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpzZW5kU3RyZWFtQnVmZmVy
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7
CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2Vz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmEyNGViZGQyMDBmMzM5MDQ3N2RmYWY3Y2Q4NTcxOTFiZDUzYjI4Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUg
IlRlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIElQQyB7CitjbGFzcyBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOworfQorCituYW1lc3BhY2Ug
TWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyIHsKKworc3RhdGljIGlu
bGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1
cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOworfQorCitjbGFzcyBT
ZW5kU3RyZWFtQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1
cGxlPGNvbnN0IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciY+OworCisgICAgc3RhdGljIElQ
Qzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRo
U3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRTdHJlYW1CdWZmZXIoY29uc3QgSVBD
OjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBzdHJlYW0pCisgICAgICAgIDogbV9hcmd1bWVudHMo
c3RyZWFtKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2
YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFRl
c3RXaXRoU3RyZWFtQnVmZmVyCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1l
c3NhZ2VzUmVwbGllcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZmEyYWQ3ZDUw
NjMwMGYzY2NiMzkwZjE5NzI1OWQ5MGU2OTNmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNS
ZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAq
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVy
IHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbUJ1ZmZlcgorfSAvLyBuYW1lc3Bh
Y2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODM5ODg1NWFkNTZlOTUxOTk3YzlkMmFiM2Y4ODgwOTRjODg5MjMyNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJl
YW1NZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW0uaCIKKworI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUg
IkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2
b2lkIFRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJl
YW06OlNlbmRTdHJpbmc6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVz
c2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhTdHJlYW06OnNlbmRTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3Ry
aW5nU3luY2hyb25pemVkOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1l
c3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9uaXplZD4oZGVjb2Rlciwg
dGhpcywgJlRlc3RXaXRoU3RyZWFtOjpzZW5kU3RyaW5nU3luY2hyb25pemVkKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BB
UkFNKGNvbm5lY3Rpb24pOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBiZmViYWIy
MzcyYzFmNjYwNWM1NTg5NDU5MzhiZjFlNGU3YWFmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oCkBA
IC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVz
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworCituYW1lc3Bh
Y2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtIHsKKworc3RhdGljIGlubGlu
ZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4g
SVBDOjpSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtOworfQorCitjbGFzcyBTZW5kU3RyaW5n
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmlu
ZyY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6
TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmc7IH0KKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRTdHJpbmcoY29uc3Qg
U3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2Fy
Z3VtZW50czsKK307CisKK2NsYXNzIFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQgeworcHVibGljOgor
ICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CisKKyAgICBz
dGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6
VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZ1N5bmNocm9uaXplZDsgfQorICAgIHN0YXRpYyBjb25z
dCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8aW50
NjRfdCY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxpbnQ2NF90PjsK
KyAgICBleHBsaWNpdCBTZW5kU3RyaW5nU3luY2hyb25pemVkKGNvbnN0IFN0cmluZyYgdXJsKQor
ICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJn
dW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1l
bnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhT
dHJlYW1NZXNzYWdlc1JlcGxpZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmM1YTA3OGRl
MDFlYzE0MzBmODk0ZjIwY2I5YzJmOTE1NWU3Y2FiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGll
cy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKwor
bmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbSB7CisKKworfSAv
LyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0KK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAppbmRleCBmOWJhNWRjNzgyNGIxZTViMDNlNTNmOThiN2E3ZjhlNGRlZjIxYzY0Li40NTg5
MjZmMjViZDZkNTE2MmE3NTljZTBjNzNmOGVhMWViMTdkNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE1
MCw2ICsxNTAsMTAgQEAgUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAgQG5vLXVu
aWZ5CiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlci5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZS5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAg
QG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkKIAog
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIEBuby11bmlmeQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXgg
YzMzMDc4MjViMjAwODZkZWQ0Yzg2YzY0ODhjZTVkZDU3ZWMwYzM1OC4uODk1MjA4YzNiYzIyNmQ2
ZmIxMjg2MWRhNDM3Y2RhMzgxZjQ4ZDYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJTYW5kYm94
RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCAz
MDFkMGVkODMwZGJlZDkwOGNiYjI3ODg2ZjA0YThmZWVhOWZkODllLi4yM2FiMTBkNjNhNGY0YTNm
ZDIwY2VkNGQ3MzAxNzNmNDc1ZGM3ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
QVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2lu
Y2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
VVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwNjFhNjM3ZGI5M2JiMGFmYzZkOWM2NTE2YzNk
MDNlMjM1YjVjYzEuLmExYzc5MDMzMGVlMjVhZWYzZjlhZTVkNTBmNzhkMTlkMDJiZTIzNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTMyOCw2ICsxMzI4LDE2IEBACiAJCTdCNDgzRjIwMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdl
UmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICov
OyB9OwogCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4
M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi87IH07
CiAJCTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUUyNUNE
REE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi87IH07CisJCTdCNzMxMjNB
MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMTI1Q0M4NTIzMDAzQjI3
OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovOyB9OworCQk3QjczMTIzQjI1Q0M4NTI1
MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYg
LyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi87IH07CisJCTdCNzMxMjNDMjVDQzg1
MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMzI1Q0M4NTIzMDAzQjI3OTYgLyog
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9OworCQk3QjczMTIzRDI1Q0M4NTI1MDAzQjI3
OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5jcHAgKi87IH07CisJCTdCNzMxMjNFMjVDQzg1MjUwMDNCMjc5NiAv
KiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNTI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5oICovOyB9OworCQk3QjczMTIzRjI1Q0M4NTI1MDAzQjI3OTYgLyog
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbi5jcHAgKi87IH07CisJCTdCNzMxMjQwMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCNzMxMjM3MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmNwcCAqLzsgfTsKKwkJN0I3MzEyNDEyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
LmggKi87IH07CisJCTdCNzMxMjQyMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9u
RW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi87
IH07CisJCTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QkFCMTEwRjI1REQwMkIyMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAv
KiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1h
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0Uy
NDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtNDU0MCw2ICs0NTUwLDE1IEBACiAJCTdC
NDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0
ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qjcz
MTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzMyNUNDODUyMzAw
M0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzUy
NUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0I3MzEyMzcyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM4MjVDQzg1
MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY1MjU0
QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY3MjU0QUZF
MTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00NTQ3LDYgKzQ1NjYsNyBAQAogCQk3QjkwNDE2OTI1NEFGRUE3
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlG
dW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVG
MDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRh
dGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTg1LDEwICs3MDA1
LDIwIEBACiAJCQkJMUEzRUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1h
cC5oICovLAogCQkJCTFBQUIwMzc3MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmNw
cCAqLywKIAkJCQkxQUFCMDM3ODE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oICov
LAorCQkJCTdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlLmggKi8sCiAJCQkJMkRDMTgwMDFEOTBEREQxNUZDNjk5MUE5IC8qIFNoYXJlZEJ1
ZmZlckNvcHkuY3BwICovLAogCQkJCTVDQzVEQjkxMjE0ODhFMTYwMDZDQjhBOCAvKiBTaGFyZWRC
dWZmZXJDb3B5LmggKi8sCiAJCQkJMkRDMTg1NUVEQkZCODUwQkEwQjZEMDZEIC8qIFNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuY3BwICovLAogCQkJCTJEQzE4ODFBQ0JDQUI1RDU3QzVDNkVGMCAv
KiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggKi8sCisJCQkJN0I3MzEyMzYyNUNDODUyNDAw
M0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwICovLAorCQkJCTdCNzMxMjMzMjVD
Qzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggKi8sCisJCQkJN0I3MzEy
MzQyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwICovLAorCQkJ
CTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8s
CisJCQkJN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVy
LmggKi8sCisJCQkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWUuY3BwICovLAorCQkJCTdCNzMxMjM1MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlLmggKi8sCisJCQkJN0I3MzEyMzcyNUNDODUyNDAwM0IyNzk2IC8q
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTdCNzMxMjM4MjVDQzg1MjQwMDNC
Mjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi8sCiAJCQkJMUFFMDBENjkxODMyN0Mx
MjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFFMDBENkExODMyN0Mx
MjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oICovLAogCQkJKTsKQEAgLTEyMDY3LDYgKzEy
MDk3LDExIEBACiAJCQkJOTM2QjA1OTgyMzAzOTA5NzAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2Vy
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzY4RUVERjIzMDNBOUVEMDBCREIxMUEgLyogU3Rv
cmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY1RjRFMDYyMzBC
MkU5NTAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3QjczMTIzQzI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyM0EyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjQyMjVDQzg1MjUw
MDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MzEyM0UyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCBp
biBIZWFkZXJzICovLAorCQkJCTdCNzMxMjQxMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUwMEQ2QzE4MzI3QzEyMDAwODdE
RDcgLyogU3RyaW5nUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTZCRDg1RDE1MDE5
QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZE
MzE4NjIyQjM1MTZDMDA4RDBFOEIgLyogU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKQEAgLTEyMzY5LDYgKzEyNDA0LDcgQEAKIAkJCQk1Nzc3Mzk5NTI1ODAz
ODhGMDA1OTM0OEIgLyogV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxMkY1OEY2MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNThGODEyQTg4QTU0MDA2Mjk1
MzAgLyogV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0M0QzA4RDE4MTRBQzVDMDAzNjg4QjkgLyog
V0tCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QzRDMDk1MTgxNEI5RTYw
MDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzN0M0QzA4NzE4MTQ5QzVCMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtLmggaW4g
SGVhZGVycyAqLywKQEAgLTEzODk0LDYgKzEzOTMwLDEwIEBACiAJCQkJOTNENkI3ODIyNTRDQ0NG
NDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBMzM0REVEMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJl
YU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzY4RUVERTIzMDNB
OTAyMDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJN0I3MzEyM0YyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENv
bm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I3MzEyM0QyNUNDODUyNTAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I3MzEy
M0IyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJN0I3MzEyNDAyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODMyMTJCNkE3MTAwRjQ5M0ZE
IC8qIFN0cmluZ1JlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc1MTIxMjZB
MjgyMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTEtbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQky
RDExQjc1MjIxMjZBMjgyMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTEuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCBmMjli
ZTAwNmViN2I5NzY0Yjc4MmQ5MTYyNWM4MDE2MGZmOGYzNmYzLi5iMTliYzFlMGEwMTkwN2Y5Y2Vk
ZDYwYTU2NTc1ZmFkZjVjOWQ4ODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5jcHAKQEAgLTQ4LDEzICs0OCwxNiBAQCBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0
ZXMpKTsKIH0KIAorc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdFN0cmVhbVNpemUgPSAx
IDw8IDIxOworCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRycykKICAgICA6IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJzKQogICAgICwgbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBkZWZhdWx0U3RyZWFtU2l6ZSkKIHsKICAg
ICBncHVQcm9jZXNzQ29ubmVjdGlvbi5hZGRDbGllbnQoKnRoaXMpOwogICAgIGdwdVByb2Nlc3ND
b25uZWN0aW9uLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0gICAgY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciks
IDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3lu
Y1JlcGx5KTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCBtX3N0cmVhbUNvbm5lY3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAwLCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSk7CiB9CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5KCkKQEAgLTE2Myw3ICsxNjYsNyBAQCBHQ0dMZW51bSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcigpCiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9l
cnJvcldoZW5Db250ZXh0SXNMb3N0LCBOT19FUlJPUik7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2
YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCit2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJ
UEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSwgU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywg
U3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgp
KQogICAgICAgICByZXR1cm47CkBAIC0xNzIsNiArMTc1LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZh
aWxhYmwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoIW1fZGlkSW5pdGlhbGl6
ZSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLnNldFdha2VVcFNlbWFwaG9yZShXVEZNb3ZlKHNl
bWFwaG9yZSkpOwogICAgIG1fZGlkSW5pdGlhbGl6ZSA9IHRydWU7CiAgICAgaW5pdGlhbGl6ZShh
dmFpbGFibGVFeHRlbnNpb25zLCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggODMxYjRiMGFiMTM3ZTZhYWY4MzU5NmUw
YjBhMDc2ZGYxZTA5MTc2MS4uNzg5N2Y2Y2ZlODNjZWM1NWZmYTJmNjNhOTc0ZmFhN2YwMTNhYTkx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTI5LDEwICsy
OSwxMSBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorI2luY2x1ZGUgIlN0cmVhbUNsaWVudENvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZS5oPgpAQCAtMzM0LDE5ICszMzUsMTggQEAgcHJvdGVjdGVkOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2Vu
ZChUJiYgbWVzc2FnZSkKICAgICB7Ci0gICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUo
bWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksIElQQzo6
U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsK
LSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBtX3N0cmVhbUNvbm5lY3Rpb24u
c2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgZGVm
YXVsdFNlbmRUaW1lb3V0KTsKICAgICB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBX
QVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3lu
YyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBjb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShy
ZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgICAgIHJldHVybiBtX3N0cmVhbUNvbm5lY3Rpb24uc2VuZFN5bmMo
V1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwogICAgIH0KICAgICBJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCk7IH0KIAogcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4K
LSAgICB2b2lkIHdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcmJiBhdmFpbGFibGVF
eHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKKyAgICB2b2lkIHdhc0Ny
ZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSYmLCBTdHJpbmcmJiBhdmFpbGFi
bGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKICAgICB2b2lkIHdh
c0xvc3QoKTsKICAgICB2b2lkIHdhc0NoYW5nZWQoKTsKIApAQCAtMzYwLDggKzM2MCw4IEBAIHBy
aXZhdGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247
CiAgICAgYm9vbCBtX2RpZEluaXRpYWxpemUgeyBmYWxzZSB9OwogICAgIEdDR0xlbnVtIG1fZXJy
b3JXaGVuQ29udGV4dElzTG9zdCA9IE5PX0VSUk9SOwotCiAgICAgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIHsgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0
aW9uIG1fc3RyZWFtQ29ubmVjdGlvbjsKIH07CiAKIC8vIFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBm
b2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1n
cHVwLXdlYmdsIHNjcmlwdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhN2M2NDEyYWM5NDZlMjU4Y2UwMTM4YmM0N2JjMzg2
MjE5NTAyMWQ3Li5mNDNlYzBhMmVhYTM4NGU0ZWRlOGRkNDQwZDllZmUwMjhhY2I3YmZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VC
R0wpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgTm90UmVmQ291
bnRlZCB7Ci0gICAgdm9pZCBXYXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nIGF2YWls
YWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCisgICAgdm9pZCBX
YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUgc3RyZWFtV2FrZVVwU2Vt
YXBob3JlLCBTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0
ZW5zaW9ucykKICAgICB2b2lkIFdhc0xvc3QoKQogICAgIHZvaWQgV2FzQ2hhbmdlZCgpCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAppbmRleCA3YWFkN2RhMjA3
MGRlODNkMTRjNzFkZDk4MjQ3NGFhZjEwNmE3ZGI1Li5mMTM0MWRjZDI3NmQwYzEwMWU0NGJkZGEx
N2NlNDBiOGEzY2IzNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENOZXR3b3JrLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDTmV0d29yay5oCmluZGV4IGJiZTdmYzI2Y2YzMjM0NjY5NWU2MWZkMDFk
NmEwYjIzMmRlMGQxODguLmE2MTFkYWJmNGViYjU2ZTdhNDI1OTRkZDdiZDNiYjBjODFhNWM4MGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJX
ZWJSVENOZXR3b3JrLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ05ldHdvcmsuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDU29ja2V0RmFj
dG9yeS5oIgogI2luY2x1ZGUgIldlYk1ETlNSZWdpc3Rlci5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdhMzQwODhmMGRmZTE4ZmU3YjExNGFj
MWIwMzhiZDc4YjI0YzAzMGQuLjQwYjVlODc0ZTEwYWMyMDI1ZTlmNTUzZGFiZWY2NDU1ZWM4OTZk
ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMS0wMi0wNSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYkdMIEdQVSBwcm9jZXNzIElQQyBzaG91bGQgdXNlIHNoYXJl
ZCBtZW1vcnkgZm9yIGFzeW5jaHJvbm91cyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS83MjM0MDY1MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYXJrIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG1lc3NhZ2UgcmVjZWl2ZXIgYXMgIlN0
cmVhbSIsCisgICAgICAgIGEgbmV3IHZhcmlhbnQgb2YgcmVjZWl2ZXIuCisKKyAgICAgICAgKiBT
Y3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIwMjEtMDItMTYgIEFuZHJlcyBHb256YWxl
eiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBtYWtlSlNBcnJheSBpbiBi
b3RoIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMvSU9TLm1tLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsCmluZGV4IDU2ODVlOTA3NTM1M2ZkMWQyY2VhOTQ2MjA2YjU3ZTQ4YjQyNjYzZmQuLjgz
NDYyODIzNDAxYzE2ODMwNzIyYWViMzU0NWVjZmVlZmI2NGE4ODMgMTAwNzU1Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2wKQEAgLTg5LDcgKzg5LDcgQEAgY29udGV4dF9tZXNzYWdlc190ZW1wbGF0ZSA9
ICgKICAgICB0ZW1wbGF0ZV9wcmVhbWJsZQogICAgICsgIiIiI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBOb3RSZWZDb3VudGVkIHt7CittZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBO
b3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIFByZXBhcmVGb3JE
aXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAwNmU3NDc5YTJlNjU5ZTNhNzgzMDZkMzA0YmQyMTkzYTAyMWY2NTJlLi5hZGE1ZGM4NzI0
NDNjNzdhYmE0ZDIzODBjZjYyOGU0YTA2NzVlYjBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDItMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWJHTCBHUFUgcHJvY2VzcyBJUEMgc2hvdWxkIHVzZSBzaGFyZWQgbWVtb3J5IGZvciBhc3lu
Y2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxOTY0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIzNDA2NTE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFyayBmZXcgdGVz
dHMgYXMgbm90IHRpbWluZyBvdXQgbm93IHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIGlzIG5vdCBz
byBzbG93LgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAy
MS0wMi0xNiAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbc2VsZWN0b3JzXSA6Zm9jdXMtdmlzaWJsZSBwYXJzaW5nIGFuZCBleHBlcmltZW50YWwg
ZmxhZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggM2I5MGMy
YWJhYzFhZmUzNWRmODY0YTRhYmI5M2FiYjAwMjkwZmFhNC4uYTM3M2EwMjk5OTNiOGRhNzcwNzYw
NGQ5ZjA0N2NmYzkwZjBhYTA3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3Mv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0
YXRpb25zCkBAIC0yMzAsNyArMjMwLDYgQEAgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5z
aW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZQogd2ViZ2wv
MS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVv
Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2Vz
LXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8x
LjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0aC12
aWRlby5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9yZW5kZXJpbmcv
bWFueS1kcmF3LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNl
L3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbCBbIFRpbWVvdXQgXQogd2ViZ2wvMS4wLjMv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvZ2wtcGl4ZWxzdG9yZWkuaHRtbCBbIEZhaWx1cmUgXQogd2Vi
Z2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQt
d2l0aC1jYW52YXMtcmdiNTY1Lmh0bWwgWyBGYWlsdXJlIF0KQEAgLTI0OSw3ICsyNDgsNiBAQCB3
ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXgtaW1hZ2Utd2ViZ2wuaHRtbCBbIEZh
aWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4cGFyYW1ldGVyLXRl
c3QuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4
dHVyZS1hY3RpdmUtYmluZC0yLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1h
bmNlL3RleHR1cmVzL3RleHR1cmUtYWN0aXZlLWJpbmQuaHRtbCBbIEZhaWx1cmUgXQotd2ViZ2wv
MS4wLjMvY29uZm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBU
aW1lb3V0IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2NhbnZhcy9jYW52YXMtdGVzdC5odG1s
IFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9jYW52YXMvZHJhdy1zdGF0aWMt
d2ViZ2wtdG8tbXVsdGlwbGUtY2FudmFzLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4w
LjAvY29uZm9ybWFuY2UvY2FudmFzL2RyYXctd2ViZ2wtdG8tY2FudmFzLXRlc3QuaHRtbCBbIEZh
aWx1cmUgXQpAQCAtMjYxLDcgKzI1OSw2IEBAIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2V4dGVu
c2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVyZSBdCiB3ZWJn
bC8yLjAuMC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0
aC1jYW52YXMuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvZXh0ZW5z
aW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1cmUgXQog
d2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvcmVhZGluZy9yZWFkLXBpeGVscy10ZXN0Lmh0bWwgWyBG
YWlsdXJlIF0KLXdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tYW55LWRyYXctY2Fs
bHMuaHRtbCBbIFRpbWVvdXQgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtb2Jq
ZWN0LWdldC1jYWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90
ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYi1y
Z2ItdW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420623</attachid>
            <date>2021-02-17 02:27:53 -0800</date>
            <delta_ts>2021-02-17 03:33:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210217122751.patch</filename>
            <type>text/plain</type>
            <size>163997</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjNDg4MWE0MDdiNmI0NjYz
N2U1MzM0MGMyZGEwZmE5ZjQ2MGJiNDEuLmNkNmM5N2RkZjZlNjY1YjU5NTczZjMzY2ZmMWVmNTcz
M2FlMDdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2Vz
IGFuZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJl
Y2VpdmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNl
aXZlZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAg
cHJvY2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVu
dGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hy
b25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQg
dGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhh
dmluZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAg
IGluIHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0
IGluIGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBv
bmUgMm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJl
IHdpbGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24K
KyAgICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFy
IHRocmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJv
cHRpbWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAg
cHJvY2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2Ug
dG8gaGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGlj
aXBhdGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8g
c2FtZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1p
emF0aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFz
IHBhcnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAg
IEluIEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sg
cXVldWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQg
d2lsbCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24g
cGVyIGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAg
ICBTZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRp
b24gd2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYg
dGhlIG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUg
aXQgdGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91
dCBvZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9u
IGFycml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAg
ICBtZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2ls
bCBzdG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxs
IGNvbnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4g
cHJvY2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0
cmVhbSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1l
c3NhZ2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMg
c2VuZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0g
Y29ubmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9y
ZS4gVGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlz
IHdhaXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6
CisgICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAg
cG9pbnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAg
IC0gV2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2gg
fjYwZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVl
VW5pbml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4g
dGhlIHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0
aW9ucyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1
ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpzZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVl
dWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBtdWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0
aGUgSVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmls
aXR5IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xp
ZW50LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6
CisgICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNv
bnN0cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZm
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAo
SVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNw
ZWNpZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFy
ZSB1bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRo
cm91Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAg
ICAgVGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBp
cyByZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2Fz
ZSB3aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRo
ZSBzdHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAg
ICAgICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2Fr
ZXVwIHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNl
bWFwaG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24u
IEFsbCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2
ZSB0aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhl
eSBoYXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVz
dGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rp
b246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dCBjb25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0
YSB0aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVN
ZW1vcnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAo
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0
aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZl
ci4KKyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90
aCB0aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4K
KyAgICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1
cCwgdGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFs
bCB0aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAi
aG9sZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBv
ZiAiYnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAg
ICAgIGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBj
b250YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAg
ICAgRm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBw
cm9jZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUg
b2YgdGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwg
c2xlZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3
aWxsIHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdp
bGwgd2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9m
ZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXpl
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
cyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9j
ZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1l
c3NhZ2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUg
bWVzc2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRo
ZSBidWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRo
YXQgdGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1h
bCBJUEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3Nh
Z2UgdW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdT
dHJlYW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFz
CisgICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxs
IG1lc3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1l
c3NhZ2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAg
ICAgIGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUg
c3RyZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJ
UEMgbWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNz
ZWQuCisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0
aW9uSUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJl
YW0gbWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAg
ICAgIHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJl
YW1EZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVk
LgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZm
ZXI6OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5
bmNocm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToK
KyAgICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0
IG9mIHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6
On5TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZSk6CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVs
ZCBzaW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0x
NiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgYnVpbGQgZml4IGFmdGVyIHIyNzI5MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkNTc3ZTQzNDk5ZjE4
MTQ3OTFjOGEwZWY3MWNiMzRhMDI0YTFmYWUyLi5kYjc3MjM4MTQ0Y2E4YTMwZmY2ZWFjOWY4MmY1
YzQ5ZGNkMjFiMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2Rl
ckFWRlByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogewogICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0o
KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAgICAgIHJldHVybiBJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zMjYsMjEgKzMyNiwxMSBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAotR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RGTW92
ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25uZWN0
KCk7Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUo
c3RyZWFtKSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWJiMGQwMDhmM2Q3MTI5MjE3YjhlOTZl
ZmExOWJkNTFmZmFmYTE2Ny4uZDAyZTk3ODc3NTdjZDZmYzQ1YTlmOTg5NmU1YjExODdmOTViN2Jl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNz
aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKIAogI2luY2x1ZGUgPFdl
YkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWlu
Z01hbmFnZXIuaD4KQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtMjA2LDIwICsyMDcsMTAg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9Owog
I2VuZGlmCiAKLSAgICBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7Ci0gICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOwot
ICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoKTsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBI
YXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKKyAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKICNp
ZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBI
YXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CiAgICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKICNl
bmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDMwZjVjMjk4ODYyMTRmOTEwNGYxYWZhMDgzNWIyMzhhMzZkYzZlZjEuLmY2MzBi
MWJhZmUwZDJjMmVjNDAwMzdkOWE3YTdjNzIzZDI1OTk5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5n
QmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQ
Qzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgIHZvaWQgUmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRl
cywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQogICAgIHZvaWQg
UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNlbmRpZgogICAgIHZvaWQgQ2xlYXJO
b3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA3OWIzNDU5NmZi
ZjJkMGRmYzk4MTg2NTFiZGNmZWI0YjBhMGM4NzVkLi4xM2ViMWUyZjU3MTMzMDI3M2Q4NTdkNTMy
NWQzMTdiMzdlZDE1Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTMxLDU1ICsz
MSw3NyBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBvbmUgZ2xvYmFsIFdlYkdMIHByb2Nl
c3NpbmcgaW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiBy
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZT4gaW5zdGFuY2UoIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsKKyAgICByZXR1cm4gaW5zdGFuY2Uu
Z2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJikK
IHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNl
bmRpZgogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92
ZShjb250ZXh0KSkKLSAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0
cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0p
CisgICAgOiBtX3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMPjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3Ry
ZWFtV29ya1F1ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAg
ICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhp
cyk7Ci0gICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwotICAgIFN0cmluZyBleHRlbnNp
b25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMp
OwotICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmlu
ZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwg
ZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQogewotICAgIGlmIChh
dXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmdldCgpKQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVCghbV9zdHJlYW1Db25uZWN0aW9uKTsKKyAg
ICBBU1NFUlQoIW1fY29udGV4dCk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKLSAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmdldCgpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAg
cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbYXR0cmli
dXRlcyA9IFdURk1vdmUoYXR0cmlidXRlcyksIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlSW5pdGlhbGl6
ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICB9KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24t
PnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAg
ICAgIHJldHVybiAmZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOwotICAg
IHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9z
dHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3Ry
ZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHJlZkZyb21D
b25uZWN0aW9uKV0oKSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtRdWV1ZVVuaW5pdGlh
bGl6ZSgpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3Jr
UXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0
dHJpYnV0ZXMpCit7CisgICAgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0
cmlidXRlcykpOworICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRD
bGllbnQoKnRoaXMpOworICAgICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0
U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICAgICAgU3RyaW5nIHJl
cXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6
UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSwgZXh0ZW5zaW9u
cywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFsc2UsIElQ
Qzo6U2VtYXBob3JlIHsgfSwgIiIsICIiKSk7CiB9CiAKLXVpbnQ2NF90IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVVbmluaXRpYWxpemUoKQogewotICAgIHJldHVy
biBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIG1fY29udGV4
dCA9IG51bGxwdHI7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKQEAgLTg4LDcgKzExMCw3
IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKQEAgLTk4LDcgKzEyMCw3IEBAIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMDAxNTlhYzhiNTg2YThiNjJhM2RkYTNhNTcw
MDRlODgzZTE1NmQwOC4uNTJlNDc2OTEwYTRlYWQwMDM5Y2UwYzFhYTU1ZTRmNDQ2YTA0OTU2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLQorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CkBAIC00OSwzMSArNDgsMjEgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0KIC8v
IEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdl
cyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBo
aWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KIC8vIFRo
ZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ci0gICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyCi0gICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpD
bGllbnQgeworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+LCBwcml2YXRlIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKIAotICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKyAg
ICAvLyBJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+
IHRlbXBsYXRlIGNvbnRyYWN0IGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgZGlkUmVjZWl2ZVN0
cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2Rl
ciYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVz
LgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBm
aW5hbDsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZp
bmFsOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgotICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAg
dm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsK
IAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQg
ZGlkQ29tcG9zaXRlKCkgZmluYWw7CkBAIC05NSw4ICs4NCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBO
T0xJTlQKIAotICAgIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250
ZXh0OwotICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOworICAgIHZvaWQgd29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3Jt
V29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JikgeyB9OworICAgIHZvaWQgd29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2UpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOyB9CisKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj4gbV9zdHJlYW1Db25uZWN0
aW9uOworICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250
ZXh0OwogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
bgppbmRleCA3YTE5MjVkYmIyN2FiZjNkMzAzNGNiN2ZjYjM4YTNmMzkzZTNkY2ZhLi40NzAyYzY0
Zjc1ZTQ3NmNmZjFhMTAwMDUwNzU1MDk2YmRjZTc4OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAvLyBUaGlzIGZpbGUgaXMg
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFJlc2hhcGUoaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQ
cmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNo
cm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggOGUyZDFmYzY1
MTg2MjgzOTVlOTc0MWM0NGU3YWM4NTFiMDhlZjYyNy4uYzRlNDExMjYxOTViMzUyOThhZWFmMmZj
YWVmMjBhZGZiNDMxZDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApA
QCAtMzksMTAgKzM5LDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wsIHByaXZh
dGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gewogcHVibGlj
OgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoKSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBvdmVycmlkZXMuCisgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOwogICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmln
aHQmJik+JiYpIGZpbmFsOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4gb3ZlcnJpZGVzLgpAQCAtNTYsMTYgKzU3LDIzIEBAIHByaXZhdGU6CiAKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcikKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2EoYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKSk7CisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3Rh
bmNlLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5j
ZTsKIH0KIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woYXR0cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykpCitSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgV1RGTW92ZShzdHJlYW0pKQogewogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQoreworICAgIG1fY29udGV4dCA9IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKFdURk1vdmUoYXR0cmlidXRlcyks
IHRoaXMpOworfQorCiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVy
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQogewogICAgIHJl
dHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5k
ZXggMmM3NjI1MTg2YWVlMTVkNzcyYjc2NGJkZDU1OWYwYTFjMjcwYmQ0MS4uYmI3NDIxYTdkNmZk
NGFhMjk3YTk2YjViMjc0ZGQ5OGQ2NGYwZGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApA
QCAtODMsNyArODMsNyBAQCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5n
QmFja2VuZCgpCiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtyZW1vdGVSZXNvdXJjZUNhY2hl
ID0gV1RGTW92ZShtX3JlbW90ZVJlc291cmNlQ2FjaGUpXSB7IH0pOwogfQogCi12b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpc2Nvbm5lY3QoKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCkBAIC0yNjgsNiArMjY4LDggQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3
YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXMKICAgICBh
dXRvIGluaXRpYWxIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoYXJndW1l
bnRzLml0ZW1CdWZmZXJJZGVudGlmaWVyKTsKICAgICBNRVNTQUdFX0NIRUNLKGluaXRpYWxIYW5k
bGUsICJNaXNzaW5nIGluaXRpYWwgc2hhcmVkIGRpc3BsYXkgbGlzdCBoYW5kbGUiKTsKIAorICAg
IEFTU0VSVCghbV9wZW5kaW5nV2FrZXVwSW5mbyk7CisKICAgICBkZXN0aW5hdGlvbkltYWdlQnVm
ZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3Rz
KCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBhcmd1bWVudHMub2Zmc2V0LCAqaW5pdGlhbEhhbmRs
ZSwgYXJndW1lbnRzLnJlYXNvbik7CiAgICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBiN2FlZTI2Mjc3MDViYjlh
Y2MxMDE5ZDcxNTVlZjI3ZTE1M2QyYjI4Li5hNGFhN2I0Nzg3NTVhOWJiNWUyOTNmZDFiYzgyOGNj
ZGZlMjQ5NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKTsKICAgICB2aXJ0dWFsIH5SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKCk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAK
ICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4g
bV9yZW1vdGVSZXNvdXJjZUNhY2hlOyB9CiAKQEAgLTc4LDggKzc5LDYgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbik7CiAKLSAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKLQogcHJpdmF0ZToKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgK
aW5kZXggNDk3MTcxYjU2NDI2ODkyODk1MjEwNmJkN2VlYTU0YmVlOTNiZWUyMy4uYjBjZjcwZjA2
ZTExOGUwMjFkODY0ZGViOThkNDE0ZWZiYTllN2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpZiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENSZXNvbHZl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUlRDTW9uaXRvci5oIgogI2luY2x1ZGUg
IlJUQ05ldHdvcmsuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIu
aAppbmRleCAzMjA3NmFmZDAyYTg5OGExZTM5ZGUyODNlMTAyYjg1OTQ3ZjhlZGM3Li41MzM1MGY5
ZjdjOGMxMmJlNjI3NTk5OWM3ZWJmYzNjN2UwOTFiY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJE
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRz
Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNzUs
NiArNzYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBB
cmd1bWVudENvZGVyIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENv
ZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+
PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1
ZSksIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CkBAIC05MSw2ICs5Myw3IEBAIHN0cnVjdCBBcmd1
bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGlj
X3Y8VD4+PiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxU
LCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4geworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIFQgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51
bTxUPihXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPFQ+KHZhbHVlKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGIwYTQzZGU5ZDdhMTM3
MjE2YTE5YmY3ZDBiZDVlMTkxMTNiNWRhNjguLmFlZTg5ZTYyNjk2YzU2MGYwYTE4YmZiMWQ2NzY5
MTY1MGU3ZmYyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgog
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xMTEsNyArMTEyLDcgQEAgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgQXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENT
dHJpbmcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVy
Pgogdm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBTcGVjaWFsIGNhc2UgdGhlIG51bGwgc3Ry
aW5nLgpAQCAtMTMwLDYgKzEzMSwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVsc2UKICAg
ICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFy
KSwgYWxpZ25vZihVQ2hhcikpOwogfQordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJp
bmc+OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwordGVtcGxhdGUK
K3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29k
ZXI+KFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIGlubGluZSBPcHRpb25hbDxTdHJpbmc+
IGRlY29kZVN0cmluZ1RleHQoRGVjb2RlciYgZGVjb2RlciwgdWludDMyX3QgbGVuZ3RoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjBlYjE3YTBm
ZDgyNjBkNDBiZWM3ZmNkYWFlYTIzYmM1ZTg2NWUwOS4uZjg1Njk4MDczZGQwNDViMjgxNmUxNjEw
Y2E0OTk2YTVkNGVlNmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5oCkBAIC01NSw2ICs1NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBT
aW1wbGVBcmd1bWVudENvZGVyIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVu
dD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4gewogICAg
IHVzaW5nIEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkK
ICAgICB7CiAgICAgICAgIGlmICghRXh0ZW50KQpAQCAtNzQsNiArNzUsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVy
ZW5jZTxULCBFeHRlbgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+PiB7CiAgICAg
dXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVu
Y2VEeW5hbWljRXh0ZW50PjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5
cGUmIGFycmF5UmVmZXJlbmNlKQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI2Niw2ICsyNjgsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6
OnBhaXI8VCwgVT4+IHsKIAogdGVtcGxhdGU8c2l6ZV90IGluZGV4LCB0eXBlbmFtZS4uLiBFbGVt
ZW50cz4KIHN0cnVjdCBUdXBsZUVuY29kZXIgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29k
ZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6
dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3Rk
OjpnZXQ8c2l6ZW9mLi4uKEVsZW1lbnRzKSAtIGluZGV4Pih0dXBsZSk7CkBAIC0yNzUsNiArMjc4
LDcgQEAgc3RydWN0IFR1cGxlRW5jb2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1l
bnRzPgogc3RydWN0IFR1cGxlRW5jb2RlcjwwLCBFbGVtZW50cy4uLj4geworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYpCiAgICAgewogICAgIH0KQEAgLTMzOCw2ICszNDIs
NyBAQCBzdHJ1Y3QgVHVwbGVEZWNvZGVyPDA+IHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEVsZW1lbnRzPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4g
eworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkK
ICAgICB7CiAgICAgICAgIFR1cGxlRW5jb2RlcjxzaXplb2YuLi4oRWxlbWVudHMpLCBFbGVtZW50
cy4uLj46OmVuY29kZShlbmNvZGVyLCB0dXBsZSk7CkBAIC0zNzQsNiArMzc5LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXVEY6OktleVZhbHUKIHRlbXBsYXRlPGJvb2wgZml4ZWRTaXplRWxlbWVudHMsIHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBz
aXplX3QgbWluQ2FwYWNpdHk+IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2RlcjxmYWxz
ZSwgVCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+IHsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHk+JiB2ZWN0b3IpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih2ZWN0b3Iuc2l6ZSgpKTsKQEAgLTQxMSw2ICs0MTcsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJm
bG93SGFuZGxlciwgc2l6ZV90IG1pbgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eT4gc3RydWN0IFZlY3RvckFyZ3VtZW50Q29kZXI8dHJ1ZSwgVCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiB2
ZWN0b3IpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2
ZWN0b3Iuc2l6ZSgpKTsKQEAgLTc1Myw2ICs3NjAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPENTdHJpbmc+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8U3RyaW5nPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFN0cmluZyYpOwogICAgIHN0YXRpYyBP
cHRpb25hbDxTdHJpbmc+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDhiNzQzMTRhYzA0YTU1YTQ4YmQwOTM2MjljMzYyMjA3
MWUwZjJjNTAuLjFkMmVhNDg1YTk5OGFlMjY0NDZhM2FlNjAwZTA0ZjMwY2E4ZTFkNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCisjaW5jbHVk
ZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNz
YWdlRmxhZ3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIgpAQCAtOTMwLDgg
KzkzMSwxMyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYg
ZGVjb2RlcikKIAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwotCisgICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgeworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2Fn
ZU5hbWVdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPmlzVmFs
aWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5tX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UocHJvdGVjdGVkVGhpcywgbWVzc2Fn
ZU5hbWUpOworICAgICAgICB9KTsKKyAgICB9CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDQ4
NTUyMDEyNDdjMjVkZjg1NTJjNWE1NGEwNDY3N2I4ZDcyYjgyY2EuLmZlOWNhMzE4NjA2ZmRlZGM2
MWQyMWQwN2RmMGY4YWIxYmZlOTNiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmgKQEAgLTMwLDEwICszMCw5IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0j
aW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgpAQCAtMzEyLDYgKzMxMSw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJlY2VpdmVyJiwg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpOworICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBh
bnkgdGhyZWFkLgorICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVz
c2FnZU5hbWUpOwogcHJpdmF0ZToKICAgICBDb25uZWN0aW9uKElkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2ZXIsIENsaWVudCYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIp
OwpAQCAtMzM5LDcgKzM0MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShEZWNv
ZGVyJik7CiAgICAgdm9pZCBkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImKTsKLSAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKICAgICB2b2lk
IGRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBh
bnkgdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCA4MGEw
Zjc1YzcwNTcyYmY0YzI0ODUyNmZlZDJmZWZiMDk3Y2RjOGY5Li40ZGUwNTA5OGM0NjMyYWQ0NWY0
ZTg1M2Y2N2U5ZWUzZTc3MTM2ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVy
LmNwcApAQCAtOTAsNiArOTAsMTcgQEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGUKICAgICAgICAg
bWFya0ludmFsaWQoKTsKIH0KIAorRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJl
YW0sIHNpemVfdCBzdHJlYW1TaXplLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgIDogbV9i
dWZmZXIgeyBzdHJlYW0gfQorICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CisgICAgLCBt
X2J1ZmZlckVuZCB7IG1fYnVmZmVyICsgc3RyZWFtU2l6ZSB9CisgICAgLCBtX2J1ZmZlckRlYWxs
b2NhdG9yKFtdIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KSB7IH0pCisgICAgLCBtX2Rlc3RpbmF0
aW9uSUQoZGVzdGluYXRpb25JRCkKK3sKKyAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkK
KyAgICAgICAgcmV0dXJuOworfQorCiBEZWNvZGVyOjp+RGVjb2RlcigpCiB7CiAgICAgQVNTRVJU
KG1fYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA2Njk4NWJj
Mzg3ZDc0MzkxMzcwMWIxMTdiOTE4MDBiOWEyNzcxYWI4Li5iM2M2YWM4YTJkNWFjYmEyYzIxNTI4
ZGZlYjE4YzY0MTVjZWRkMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBA
IC01MSw2ICs1MSw3IEBAIGNsYXNzIERlY29kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCosIHNp
emVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKICAgICBleHBsaWNpdCBEZWNvZGVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9j
YXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKKyAg
ICBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIH5EZWNvZGVyKCk7CiAKICAgICBEZWNvZGVyKGNvbnN0
IERlY29kZXImKSA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1l
c3NhZ2UuaAppbmRleCBlYThhZDQ1YzA5ZWI2ODJlMGU4NjIzYjkzNGQ1ZTBlOWM3MDI2MjJhLi45
Mjk2M2UyMWUxZDcxN2Y2NGE4MjE5YzUyODliYWYwNTNmMDk5NDg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNs
dWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0xNjQsNiArMTY1
LDI4IEBAIHZvaWQgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlCiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNv
bm5lY3Rpb24sIFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBvYmplY3QsIGZ1bmN0aW9uKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
QywgdHlwZW5hbWUgTUY+Cit2b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0
LCBNRiBmdW5jdGlvbikKK3sKKyAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElEKSB7Cisg
ICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6
VHlwZT4gYXJndW1lbnRzOworICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOworICAgIGlmICghYXJn
dW1lbnRzKSB7CisgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxl
ciA9IFtzeW5jUmVxdWVzdElELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1
dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBs
eShzeW5jUmVxdWVzdElELCBhcmdzLi4uKTsKKyAgICB9OworICAgIGNhbGxNZW1iZXJGdW5jdGlv
bihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0
LCBmdW5jdGlvbik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVu
YW1lIE1GPgogdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
RGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNl
aXZlUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2EwNTZhMDIwMWMyYWQwZTc0OTBlYzdkN2ZlYmJkZDc3
MTA5N2IxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0
eT4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgSVBDIHsKKworLy8gU2NvcGVkIGhvbGRlciBmb3Igb2JqZWN0cyB0aGF0IGhhdmUgYWN0
aXZlIG1lc3NhZ2UgcmVjZWl2ZSBxdWV1ZXMuIEVuZm9yY2VzIHRoYXQKKy8vIG9uY2UgaG9sZGVy
IHN0b3BzIGhvbGRpbmcgdGhlIG9iamVjdCwgdGhlIG1lc3NhZ2UgcXVldWUgc2hvdWxkIGJlIHJl
bW92ZWQuCisvLyBUaGUgY29udmVudGlvbiBpcyB0byBjYWxsIHN0b3BMaXN0ZW5pbmdGb3JJUEMo
KSBmb3IgdGhlIG9iamVjdC4KKy8vIE9wdGlvbmFsbHkgdGhlIG9iamVjdCBjYW4gb2J0YWluIHRo
ZSBvd25pbmcgcmVmZXJlbmNlIHRoYXQgd2FzIHVzZWQgdG8gaG9sZCB0aGUgb2JqZWN0CisvLyBp
biBvcmRlciB0byBhdHRlbXB0IHRvIGF2b2lkIG5lZWRsZXNzIGRlc3RydWN0aW9uIG9mIHRoZSBv
YmplY3QgaW4gaG9sZGVyIHRocmVhZC4KKy8vIFRoaXMgdXNlZnVsIGluIHRoZSBjYXNlIHRoZSBz
dG9wIGludm9rZXMgYSBjbGVhbnVwIHRhc2sgaW4gdGhlIG1lc3NhZ2UgaGFuZGxlcgorLy8gdGhy
ZWFkLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhvbGRlclR5cGUgPSBSZWZQdHI8
VD4+CitjbGFzcyBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAg
ICBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKCkgPSBkZWZhdWx0OworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPgorICAgIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoVSYm
IG9iamVjdCkKKyAgICAgICAgOiBtX29iamVjdChXVEZNb3ZlKG9iamVjdCkpCisgICAgeworICAg
IH0KKyAgICBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUmJiBvdGhlcikKKyAgICAgICAgOiBtX29iamVjdChzdGQ6OmV4Y2hhbmdl
KG90aGVyLm1fb2JqZWN0LCBudWxscHRyKSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWUmIG9wZXJhdG9yPShTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlJiYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAg
ICAgICAgICAgIHJlc2V0KCk7CisgICAgICAgICAgICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9vYmplY3QsIG51bGxwdHIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICB9CisgICAgflNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoKQorICAgIHsK
KyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAg
ICBpZiAoIW1fb2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdG9wTGlzdGVu
aW5nRm9ySVBDQW5kUmVsZWFzZShtX29iamVjdCk7CisgICAgfQorICAgIFQqIGdldCgpIGNvbnN0
IHsgcmV0dXJuIG1fb2JqZWN0LmdldCgpOyB9Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+CisgICAgc3RhdGljIGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYg
b2JqZWN0KSAtPiBkZWNsdHlwZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0LnJl
bGVhc2VOb25OdWxsKCkpLCB2b2lkKCkpCisgICAgeworICAgICAgICBvYmplY3QtPnN0b3BMaXN0
ZW5pbmdGb3JJUEMob2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxl
YXNlKFUmIG9iamVjdCkgLT4gZGVjbHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKFdU
Rk1vdmUob2JqZWN0KSksIHZvaWQoKSkKKyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3Rl
bmluZ0ZvcklQQyhXVEZNb3ZlKG9iamVjdCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPgorICAgIHN0YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9i
amVjdCkgLT4gZGVjbHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKCksIHZvaWQoKSkK
KyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQygpOworICAgICAgICBv
YmplY3QgPSBudWxscHRyOworICAgIH0KKyAgICBIb2xkZXJUeXBlIG1fb2JqZWN0OworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoc3Rk
Ojp1bmlxdWVfcHRyPFQ+JiYpIC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwg
c3RkOjp1bmlxdWVfcHRyPFQ+PjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Njb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVmPFQ+JiYpIC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNl
aXZlUXVldWU8VCwgUmVmUHRyPFQ+PjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGY1Y2Rm
MDA4ZTVhN2YyZDJmMTAyYTIzNWMzYzIyNTE3MzM3NmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
dHJlYW1DbGllbnRDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIHNpemVfdCBzaXplKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBt
X2J1ZmZlcihzaXplKQoreworICAgIC8vIFJlYWQgc3RhcnRzIGZyb20gMCB3aXRoIGxpbWl0IG9m
IDAgYW5kIHJlYWRlciBzbGVlcGluZy4KKyAgICBzaGFyZWRTZW5kZXJPZmZzZXQoKS5zdG9yZShT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcs
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAg
d2l0aCBhIGxpbWl0IG9mIHRoZSB3aG9sZSBidWZmZXIuCisgICAgc2hhcmVkUmVjZWl2ZXJPZmZz
ZXQoKS5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30KKwordm9pZCBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBz
ZW1hcGhvcmUpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUg
PSBXVEZNb3ZlKHNlbWFwaG9yZSk7CisjZW5kaWYKKyAgICB3YWtlVXBSZWNlaXZlcigpOworfQor
Cit2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Ondha2VVcFJlY2VpdmVyKCkKK3sKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBpZiAobV93YWtlVXBTZW1hcGhvcmUpCisgICAgICAgIG1fd2Fr
ZVVwU2VtYXBob3JlLT5zaWduYWwoKTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWRmZmZlZWYzYTA5OTVhMWIxODJhNWNmOWU4NjA3MDA5ODZiYzUxZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApA
QCAtMCwwICsxLDI0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVj
b2Rlci5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1l
cy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJl
YW1Db25uZWN0aW9uRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorbmFtZXNwYWNlIElQQyB7CisKKy8vIEEgbWVzc2Fn
ZSBzdHJlYW0gaXMgYSBoYWxmLWR1cGxleCB0d28td2F5IHN0cmVhbSBvZiBtZXNzYWdlcyB0byBh
IGJldHdlZW4gYSBzZW5kZXIgYW5kIHRoZQorLy8gZGVzdGluYXRpb24gcmVjZWl2ZXIuCisvLwor
Ly8gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBjYW4gc2VuZCBtZXNzYWdlcyBhbmQgcmVjZWl2ZSBz
eW5jaHJvbm91cyByZXBsaWVzCisvLyB0aHJvdWdoIHRoaXMgbWVzc2FnZSBzdHJlYW0gb3IgdGhy
b3VnaCBJUEM6OkNvbm5lY3Rpb24uCisvLworLy8gVGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdp
bGwgcmVjZWl2ZSBtZXNzYWdlcyBpbiBvcmRlciBfZm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdl
c18uCisvLyBUaGUgd2hvbGUgSVBDOjpDb25uZWN0aW9uIG1lc3NhZ2Ugb3JkZXIgaXMgbm90IHBy
ZXNlcnZlZC4KKworY2xhc3MgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBmaW5hbCB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtQ2xpZW50Q29ubmVjdGlvbik7CitwdWJsaWM6CisgICAg
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiwgc2l6ZV90IGJ1ZmZlclNpemUpOwor
CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgc3RyZWFtQnVmZmVyKCkgeyByZXR1cm4gbV9i
dWZmZXI7IH0KKyAgICB2b2lkIHNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGJvb2wgc2VuZChUJiYgbWVz
c2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQp
OworCisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3Vs
dDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIFNlbmRTeW5jUmVz
dWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCBPYmplY3RJZGVu
dGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKK3ByaXZhdGU6Cisg
ICAgc3RydWN0IFNwYW4geworICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXplX3Qg
c2l6ZTsKKyAgICB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdl
U2l6ZSA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyOjptZXNzYWdlQWxpZ25tZW50OworICAgIGJvb2wgdHJ5U2VuZERlc3RpbmF0aW9u
SURJZk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIHRpbWVvdXQp
OworICAgIHZvaWQgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmKTsKKworICAg
IE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KTsKKyAgICBl
bnVtIGNsYXNzIFdha2VVcFJlY2VpdmVyIDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAgICBZ
ZXMKKyAgICB9OworICAgIFdha2VVcFJlY2VpdmVyIHJlbGVhc2Uoc2l6ZV90IHdyaXRlU2l6ZSk7
CisgICAgdm9pZCB3YWtlVXBSZWNlaXZlcigpOworCisgICAgU3BhbiBhbGlnbmVkU3BhbihzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBzaXplKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVk
TGltaXQpIGNvbnN0OworCisgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNldChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFs
aWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zm
c2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAg
IEF0b21pYzxzaXplX3Q+JiBzaGFyZWRTZW5kZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5z
ZW5kZXJPZmZzZXQoKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNl
dCgpIHsgcmV0dXJuIG1fYnVmZmVyLnJlY2VpdmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQorCisgICAgQ29ubmVj
dGlvbiYgbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQg
eyAwIH07CisKKyAgICBzaXplX3QgbV9zZW5kZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPcHRpb25h
bDxTZW1hcGhvcmU+IG1fd2FrZVVwU2VtYXBob3JlOworI2VuZGlmCit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5k
KFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFUOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5
bmMhIik7CisgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1l
Ojpub3coKSArIHRpbWVvdXQ7CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVk
KGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsK
KyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB7CisgICAgICAgIFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG1lc3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBzcGFuLT5k
YXRhLCBzcGFuLT5zaXplIH07CisgICAgICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBtZXNzYWdl
LmFyZ3VtZW50cygpKSB7CisgICAgICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2Uo
bWVzc2FnZUVuY29kZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0g
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAgICAgICAg
ICAgICB3YWtlVXBSZWNlaXZlcigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9CisgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3Bh
bikpOworICAgIGlmICghbV9jb25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGlu
YXRpb25JRCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpTZW5kU3luY1Jlc3VsdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBk
ZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpCit7CisgICAgc3RhdGljX2Fzc2VydChUOjpp
c1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOworICAgIE1vbm90b25pY1RpbWUgYWJzb2x1
dGVUaW1lb3V0ID0gTW9ub3RvbmljVGltZTo6bm93KCkgKyB0aW1lb3V0OworICAgIGlmICghdHJ5
U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZChkZXN0aW5hdGlvbklELnRvVUludDY0KCksIGFic29s
dXRlVGltZW91dCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byBzcGFuID0gdHJ5QWNx
dWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHNlbmQgdGhyb3VnaCBzdHJlYW0uCisgICAgLy8g
RklYTUU6IGltcGxlbWVudCByZWNlaXZlIHRocm91Z2ggc3RyZWFtLgorICAgIHNlbmRQcm9jZXNz
T3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoKnNwYW4pKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
Y29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVz
dGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKKyAgICBBU1NFUlQocmVzdWx0KTsKKyAg
ICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworfQorCitpbmxpbmUgYm9vbCBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjp0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0KQoreworICAgIGlmIChkZXN0aW5h
dGlvbklEID09IG1fY3VycmVudERlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNw
YW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBl
bmNvZGVyIHsgTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQsIHNwYW4tPmRhdGEs
IHNwYW4tPnNpemUgfTsKKyAgICBpZiAoIShlbmNvZGVyIDw8IGRlc3RpbmF0aW9uSUQpKSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBTaXplIG9mIHRoZSBtaW5pbXVtIGFsbG9j
YXRpb24gaXMgaW5jb3JyZWN0LiBMaWtlbHkgYW4gYWxpZ25tZW50IGlzc3VlLgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShlbmNv
ZGVyLnNpemUoKSk7CisgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpXYWtlVXBSZWNlaXZlcjo6WWVzKQorICAgICAgICB3YWtlVXBSZWNlaXZlcigpOworICAg
IG1fY3VycmVudERlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgIHJldHVybiB0cnVl
OworfQorCitpbmxpbmUgdm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091
dE9mU3RyZWFtTWVzc2FnZShTcGFuJiYgc3BhbikKK3sKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5j
b2RlciBlbmNvZGVyIHsgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UsIHNw
YW4uZGF0YSwgc3Bhbi5zaXplIH07CisgICAgLy8gTm90IG5vdGlmeWluZyBvbiB3YWtlIHVwIHNp
bmNlIHRoZSBvdXQtb2Ytc3RyZWFtIG1lc3NhZ2Ugd2lsbCBkbyB0aGF0LgorICAgICh2b2lkKSBy
ZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKK30KK2lubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKE1vbm90
b25pY1RpbWUgdGltZW91dCkKK3sKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNpemVfdCBzZW5k
ZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChzaGFyZWRSZWNlaXZlck9mZnNldCgpLmxvYWQoc3RkOjpt
ZW1vcnlfb3JkZXJfYWNxdWlyZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFu
KG1fc2VuZGVyT2Zmc2V0LCBzZW5kZXJMaW1pdCk7CisgICAgICAgIGlmIChyZXN1bHQuc2l6ZSA8
IG1pbmltdW1NZXNzYWdlU2l6ZSkgeworICAgICAgICAgICAgYXV0byBub3cgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKKyAgICAgICAgICAgIGlmIChub3cgPj0gdGltZW91dCkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIHNpemVfdCBvbGRT
ZW5kZXJMaW1pdCA9IHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25n
KHNlbmRlckxpbWl0LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpyZWNlaXZlck9mZnNldFNlbmRl
cklzV2FpdGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3Jk
ZXJfYWNxX3JlbCk7CisgICAgICAgICAgICBpZiAoc2VuZGVyTGltaXQgPT0gb2xkU2VuZGVyTGlt
aXQpCisgICAgICAgICAgICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLndhaXRG
b3IodGltZW91dCAtIG5vdyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBz
ZW5kZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChvbGRTZW5kZXJMaW1pdCk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKKyAg
ICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisjZW5kaWYK
KyAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXpl
KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVy
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnJlbGVhc2Uoc2l6ZV90IHNpemUpCit7CisgICAgc2l6
ZSA9IHN0ZDo6bWF4KHNpemUsIG1pbmltdW1NZXNzYWdlU2l6ZSk7CisgICAgc2l6ZV90IGV4cGVj
dGVkUmVjZWl2ZXJMaW1pdCA9IG1fc2VuZGVyT2Zmc2V0OworICAgIG1fc2VuZGVyT2Zmc2V0ID0g
d3JhcE9mZnNldChhbGlnbk9mZnNldChtX3NlbmRlck9mZnNldCkgKyBzaXplKTsKKyAgICBBU1NF
UlQobV9zZW5kZXJPZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICAvLyBJZiB0aGUgcmVjZWl2ZXIg
d3JvdGUgb3ZlciB0aGUgc2VuZGVyT2Zmc2V0IHdpdGggc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1Ns
ZWVwaW5nVGFnLCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgorICAgIHNpemVfdCByZWNlaXZlckxp
bWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkuZXhjaGFuZ2UobV9zZW5kZXJPZmZzZXQsIHN0ZDo6
bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgIGlmIChyZWNlaXZlckxpbWl0ICE9IGV4cGVjdGVk
UmVjZWl2ZXJMaW1pdCkKKyAgICAgICAgcmV0dXJuIFdha2VVcFJlY2VpdmVyOjpZZXM7CisgICAg
cmV0dXJuIFdha2VVcFJlY2VpdmVyOjpObzsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OlNwYW4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6YWxpZ25lZFNwYW4oc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxpbWl0KQoreworICAgIEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsK
KyAgICBBU1NFUlQobGltaXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBzaXplX3QgYWxpZ25lZCA9IGFs
aWduT2Zmc2V0KG9mZnNldCk7CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSAwOworICAgIGlmIChv
ZmZzZXQgPCBsaW1pdCkgeworICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgJiYgYWxpZ25l
ZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVk
IDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7
CisgICAgfQorICAgIHJldHVybiB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30K
KworaW5saW5lIHNpemVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzaXplKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAgICBpZiAoIWxpbWl0KQorICAgICAgICByZXR1cm4gZGF0
YVNpemUoKSAtIDEgLSBvZmZzZXQ7CisgICAgaWYgKGxpbWl0IDw9IG9mZnNldCkKKyAgICAgICAg
cmV0dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7CisgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0IC0g
MTsKK30KKworaW5saW5lIHNpemVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjbGFtcGVkTGlt
aXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdAoreworICAgIEFTU0VSVCh1bnRydXN0ZWRM
aW1pdCA8IChkYXRhU2l6ZSgpIC0gMSkpOworICAgIHJldHVybiBzdGQ6Om1pbih1bnRydXN0ZWRM
aW1pdCwgZGF0YVNpemUoKSAtIDEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5Nzlk
YWJlNjg5YWQ0NjI4ZTUyZGJkMWJhZTBmNjFmZTZkZTE2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApAQCAt
MCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IEZmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK3N0YXRpYyBSZWY8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk+IGNyZWF0ZU1lbW9yeShzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvIG1lbW9yeSA9IFdl
YktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplKTsKKyAgICBpZiAoIW1lbW9yeSkKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gbWVtb3J5LnJlbGVhc2VOb25OdWxsKCk7Cit9CisK
K1N0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoc2l6ZV90IG1l
bW9yeVNpemUpCisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisg
ICAgLCBtX3NoYXJlZE1lbW9yeShjcmVhdGVNZW1vcnkobWVtb3J5U2l6ZSkpCit7Cit9CisKK1N0
cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6
U2hhcmVkTWVtb3J5PiYmIG1lbW9yeSwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNl
bmRlcldhaXRTZW1hcGhvcmUpCisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJT
aXplKCkpCisgICAgLCBtX3NoYXJlZE1lbW9yeShXVEZNb3ZlKG1lbW9yeSkpCisgICAgLCBtX3Nl
bmRlcldhaXRTZW1hcGhvcmUoV1RGTW92ZShzZW5kZXJXYWl0U2VtYXBob3JlKSkKK3sKK30KKwor
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyJiYgb3RoZXIpID0gZGVmYXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6flN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoKSA9IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rp
b25CdWZmZXImIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAg
IG1fZGF0YVNpemUgPSBvdGhlci5tX2RhdGFTaXplOworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9
IFdURk1vdmUob3RoZXIubV9zaGFyZWRNZW1vcnkpOworICAgICAgICBtX3NlbmRlcldhaXRTZW1h
cGhvcmUgPSBXVEZNb3ZlKG90aGVyLm1fc2VuZGVyV2FpdFNlbWFwaG9yZSk7CisgICAgfQorICAg
IHJldHVybiAqdGhpczsKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFu
ZGxlIGhhbmRsZTsKKyAgICBpZiAoIW1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxl
LCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAg
Q1JBU0goKTsKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZSB7
IFdURk1vdmUoaGFuZGxlKSwgbV9zaGFyZWRNZW1vcnktPnNpemUoKSB9OworICAgIGVuY29kZXIg
PDwgaXBjSGFuZGxlOworICAgIGVuY29kZXIgPDwgbV9zZW5kZXJXYWl0U2VtYXBob3JlOworfQor
CitPcHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlPiBpcGNIYW5kbGU7CisgICAgZGVjb2RlciA+PiBpcGNIYW5kbGU7
CisgICAgaWYgKCFpcGNIYW5kbGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
T3B0aW9uYWw8U2VtYXBob3JlPiBzZW1hcGhvcmU7CisgICAgZGVjb2RlciA+PiBzZW1hcGhvcmU7
CisgICAgaWYgKCFzZW1hcGhvcmUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
c2l6ZV90IGRhdGFTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUtPmRhdGFTaXpl
KTsKKyAgICBpZiAoZGF0YVNpemUgPCBoZWFkZXJTaXplKCkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
bWFwKGlwY0hhbmRsZS0+aGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZFdyaXRlKTsKKyAgICBpZiAoc2hhcmVkTWVtb3J5LT5zaXplKCkgPCBkYXRhU2l6ZSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciB7IHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhU2l6ZSwgIFdURk1vdmUo
KnNlbWFwaG9yZSkgfTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyZjdkNTczYjg5ZGVlYzU0
OWZhZDUyMTcwY2YzMWVmNDMxZGUwMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKQEAgLTAsMCArMSwxMjQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNs
dWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiSVBDU2Vt
YXBob3JlLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIElQQyB7CisKKy8vIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIgaXMgYSBzaGFyZWQgImJpLXBhcnRpdGUiIGNpcmN1bGFyIGJ1ZmZlciBzdXBwb3J0
aW5nCisvLyB2YXJpYWJsZSBsZW5ndGggbWVzc2FnZXMsIHNwZWNpZmljIGRhdGEgYWxpZ25tZW50
IHdpdGggbWFuZGF0ZWQgbWluaW11bSBzaXplLgorLy8gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBh
bmQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiB1c2UgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB0byBj
b21tdW5pY2F0ZS4KKy8vCisvLyBUaGUgImJpLXBhcnRpdGUiIGlzIGhlcmUgdG8gbWVhbiB0aGF0
IHdyaXRlcyBhbmQgcmVhZHMgdG8gdGhlIGJ1ZmZlciBtdXN0IGJlCisvLyBjb250aW51b3VzLgor
Ly8KKy8vIFRoZSBjbGllbnQgKHNlbmRlciBvciByZWNlaXZlcikgImFjcXVpcmVzIiBzb21lIGFt
b3VudCBvZiBidWZmZXIgZGF0YS4gSWYgYnVmZmVyIGhhcyBubworLy8gY2FwYWNpdHksIGFjcXVp
cmUgcmV0dXJucyB3aXRoIHplcm8gY2FwYWNpdHkuIElmIGJ1ZmZlciBoYXMgYXQgbGVhc3QgYWNx
dWlyZWQKKy8vIGNhcGFjaXR5LCBhbGwgdGhlIGF2YWlsYWJsZSBjYXBhY2l0eSBpcyByZXR1cm5l
ZC4KKy8vCisvLyBUaGUgY2xpZW50ICJyZWxlYXNlcyIgdGhlIHNvbWUgYW1vdW50IG9mIGRhdGEs
IGF0IGxlYXN0IHRoZSBhbW91bnQgYWNxdWlyZWQgYnV0IHBvdGVudGlhbGx5CisvLyBtb3JlLgor
Ly8KKy8vIEJvdGggc2VuZGVyIGFuZCByZWNlaXZlciBtdXN0IGFjcXVpcmUgc2FtZSBhbW91bnQg
b2YgZGF0YSBhdCB0aGUgc2FtZSBzdGVwIG9mIHRoZSBhY3F1aXJlIHNlcXVlbmNlLgorLy8gSWYg
c2VuZGVyIGFjcXVpcmVzIFggYW5kIHRoZW4gWSBhbW91bnQsIHJlY2VpdmVyIG11c3QgZG8gdGhl
IHNhbWUuCisvLworLy8gVGhlIGNpcmN1bGFyIGJ1ZmZlciBoYXMgZm9sbG93aW5nIGltcGxlbWVu
dGF0aW9uOgorLy8gKiBTZW5kZXIgb3ducyB0aGUgZGF0YSBiZXR3ZWVuIFtzZW5kZXJPZmZzZXQs
IHJlY2VpdmVyT2Zmc2V0Wy4gV2hlbiBzZW5kZXJPZmZzZXQgPT0KKy8vIHJlY2VpdmVyT2Zmc2V0
LCBzZW5kZXIgb3ducyBhbGwgdGhlIGRhdGEuCisvLyAqIFJlY2VpdmVyIG93bnMgdGhlIGRhdGEg
YmV0d2VlbiBbcmVjZWl2ZXJPZmZzZXQsIHNlbmRlck9mZnNldFsuCisvLyAqIFRoZSBidWZmZXIg
Y2FuIGhvbGQgbWF4aW11bSBvZiBzaXplIC0gMSB2YWx1ZXMuIFRoZSBsYXN0IHZhbHVlIGlzIHJl
c2VydmVkIGZvcgorLy8gaW5kaWNhdGluZyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbC4gRklYTUU6
IE1heWJlIHdvdWxkIGJlIHNpbXBsZXIgaW1wbGVtZW50YXRpb24gaWYKKy8vIGl0IHdvdWxkIHVz
ZSB0aGUgIndyYXAiIGZsYWcgaW5zdGVhZCBvZiB0aGUgaG9sZSBhcyB0aGUgaW5kaWNhdG9yLiBU
aGlzIHdvdWxkIG1vdmUKKy8vIHRoZSBhbGlnbmVkU3BhbiBpbXBsZW1lbnRhdGlvbiB0byB0aGUg
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci4KKy8vICogQWxsIGF0b21pYyB2YXJpYWJsZSBsb2FkcyBh
cmUgdW50cnVzdGVkLCBzbyB0aGV5J3JlIGNsYW1wZWQuIFZpb2xhdGlvbnMgYXJlIG5vdCByZXBv
cnRlZCwKKy8vIHRob3VnaC4KKy8vIFNlZSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZS4KK2NsYXNz
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIoc2l6ZV90IG1lbW9yeVNpemUpOworICAgIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIoU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICB+U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcigpOworICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIG9wZXJhdG9yPShTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyJiYpOworCisgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChvZmZzZXQgPD0gZGF0YVNpemUoKSk7CisgICAg
ICAgIGlmIChvZmZzZXQgPT0gZGF0YVNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBtZXNzYWdl
QWxpZ25tZW50PgorICAgIHNpemVfdCBhbGlnbk9mZnNldChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
YWNxdWlyZVNpemUpIGNvbnN0CisgICAgeworICAgICAgICBvZmZzZXQgPSByb3VuZFVwVG9NdWx0
aXBsZU9mPG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCk7CisgICAgICAgIGlmIChvZmZzZXQgKyBh
Y3F1aXJlU2l6ZSA+PSBkYXRhU2l6ZSgpKQorICAgICAgICAgICAgb2Zmc2V0ID0gMDsKKyAgICAg
ICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICBBdG9taWM8c2l6ZV90PiYgc2VuZGVyT2Zm
c2V0KCkgeyByZXR1cm4gaGVhZGVyKCkuc2VuZGVyT2Zmc2V0OyB9CisgICAgQXRvbWljPHNpemVf
dD4mIHJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4gaGVhZGVyKCkucmVjZWl2ZXJPZmZzZXQ7IH0K
KyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdCo+
KG1fc2hhcmVkTWVtb3J5LT5kYXRhKCkpICsgaGVhZGVyU2l6ZSgpOyB9CisgICAgc2l6ZV90IGRh
dGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhU2l6ZTsgfQorICAgIFNlbWFwaG9yZSYgc2Vu
ZGVyV2FpdFNlbWFwaG9yZSgpIHsgcmV0dXJuIG1fc2VuZGVyV2FpdFNlbWFwaG9yZTsgfQorCisg
ICAgLy8gVGFnIHZhbHVlIHN0b3JlZCBpbiBIZWFkZXI6OnNlbmRlck9mZnNldCB3aGVuIHJlY2Vp
dmVyIGlzIHNsZWVwaW5nLCBlLmcuIG5vdCBydW5uaW5nLgorICAgIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZyA9IDEgPDwgMzE7CisgICAg
Ly8gVGFnIHZhbHVlIHN0b3JlZCBpbiBIZWFkZXI6OnJlY2VpdmVyT2Zmc2V0IHdoZW4gc2VuZGVy
IGlzIHdhaXRpbmcsIGUuZy4gd2FpdGluZyBvbgorICAgIC8vIGEgc2VtYXBob3JlLgorICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IHJlY2VpdmVyT2Zmc2V0U2VuZGVySXNXYWl0aW5nVGFnID0g
MSA8PCAzMTsKKworICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMg
T3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKKworcHJp
dmF0ZToKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9y
eT4mJiwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNlbmRlcldhaXRTZW1hcGhvcmUp
OworCisgICAgc3RydWN0IEhlYWRlciB7CisgICAgICAgIEF0b21pYzxzaXplX3Q+IHJlY2VpdmVy
T2Zmc2V0OworICAgICAgICAvLyBQYWRkaW5nIHNvIHRoYXQgdGhlIHZhcmlhYmxlcyBtb3N0bHkg
YWNjZXNzZWQgYnkgZGlmZmVyZW50IHByb2Nlc3NlcyBkbyBub3Qgc2hhcmUgYSBjYWNoZSBsaW5l
LgorICAgICAgICAvLyBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gYXZvaWQgY2FjaGUtbGluZSBpbmR1
Y2VkIHJlZHVjdGlvbiBvZiBwYXJhbGxlbCBhY2Nlc3MuCisgICAgICAgIHVpbnQ2NF90IGNhY2hl
TGluZVBhZGRpbmdbMl07CisgICAgICAgIEF0b21pYzxzaXplX3Q+IHNlbmRlck9mZnNldDsKKyAg
ICB9OworICAgIEhlYWRlciYgaGVhZGVyKCkgY29uc3QgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8SGVhZGVyKj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSk7IH0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBoZWFkZXJTaXplKCkgeyByZXR1cm4gcm91bmRVcFRvTXVsdGlwbGVPZjxzaXpl
b2Yoc3RkOjptYXhfYWxpZ25fdCk+KHNpemVvZihIZWFkZXIpKTsgfQorCisgICAgc2l6ZV90IG1f
ZGF0YVNpemUgeyAwIH07CisgICAgUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1l
bW9yeTsKKyAgICBTZW1hcGhvcmUgbV9zZW5kZXJXYWl0U2VtYXBob3JlOworfTsKKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29k
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25FbmNvZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjkyMzJkZWNmNmM3OTNhNDU3NzE2OGU5N2VmYjUxYWFmYjMyZmRlZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyLmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VO
YW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIElQQyB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI7CisK
Ky8vIElQQyBlbmNvZGVyIHdoaWNoOgorLy8gIC0gRW5jb2RlcyB0byBhIGNhbGxlciBidWZmZXIg
d2l0aCBmaXhlZCBzaXplLCBkb2VzIG5vdCByZXNpemUsIHN0b3BzIHdoZW4gc2l6ZSBydW5zIG91
dAorLy8gIC0gRG9lcyBub3QgaW5pdGlhbGl6ZSBhbGlnbm1lbnQgZ2FwcworLy8KK2NsYXNzIFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyIGZpbmFsIHsKK3B1YmxpYzoKKyAgICAvLyBTdHJlYW0gbWVz
c2FnZSBuZWVkcyB0byBiZSBhdCBsZWFzdCBzaXplIG9mIFN0cmVhbVNldERlc3RpbmF0aW9uSUQg
bWVzc2FnZS4KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtaW5pbXVtTWVzc2FnZVNpemUg
PSBzaXplb2YoTWVzc2FnZU5hbWUpICsgc2l6ZW9mKHVpbnQ2NF90KTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50ID0gYWxpZ25vZihNZXNzYWdlTmFtZSk7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBDRW5jb2RlciA9IHRydWU7CisKKyAgICBTdHJl
YW1Db25uZWN0aW9uRW5jb2RlcihNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSwgdWludDhfdCogc3Ry
ZWFtLCBzaXplX3Qgc3RyZWFtQ2FwYWNpdHkpCisgICAgICAgIDogbV9idWZmZXIoc3RyZWFtKQor
ICAgICAgICAsIG1fYnVmZmVyQ2FwYWNpdHkoc3RyZWFtQ2FwYWNpdHkpCisgICAgeworICAgICAg
ICAqdGhpcyA8PCBtZXNzYWdlTmFtZTsKKyAgICB9CisKKyAgICB+U3RyZWFtQ29ubmVjdGlvbkVu
Y29kZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGVuY29kZUZpeGVkTGVuZ3RoRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVudCkKKyAgICB7Cisg
ICAgICAgIHNpemVfdCBidWZmZXJQb2ludGVyID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihyZWludGVy
cHJldF9jYXN0PGludHB0cl90PihtX2J1ZmZlciArIG1fZW5jb2RlZFNpemUpKTsKKyAgICAgICAg
c2l6ZV90IG5ld0J1ZmZlclBvaW50ZXIgPSByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdubWVudCwg
YnVmZmVyUG9pbnRlcik7CisgICAgICAgIGlmIChuZXdCdWZmZXJQb2ludGVyIDwgYnVmZmVyUG9p
bnRlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaW50cHRyX3QgYWxpZ25l
ZFNpemUgPSBtX2VuY29kZWRTaXplICsgKG5ld0J1ZmZlclBvaW50ZXIgLSBidWZmZXJQb2ludGVy
KTsKKyAgICAgICAgaWYgKCFyZXNlcnZlKGFsaWduZWRTaXplLCBzaXplKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgdWludDhfdCogYnVmZmVyID0gbV9idWZmZXIgKyBhbGln
bmVkU2l6ZTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7CisgICAgICAgIG1f
ZW5jb2RlZFNpemUgPSBhbGlnbmVkU2l6ZSArIHNpemU7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgU3RyZWFtQ29ubmVjdGlvbkVu
Y29kZXImIG9wZXJhdG9yPDwoVCYmIHQpCisgICAgeworICAgICAgICBBcmd1bWVudENvZGVyPHN0
ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VD4+LCB2b2lkPjo6ZW5j
b2RlKCp0aGlzLCBzdGQ6OmZvcndhcmQ8VD4odCkpOworICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IEFTU0VSVChpc1ZhbGlkKCkpOyByZXR1
cm4gbV9lbmNvZGVkU2l6ZTsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyQ2FwYWNpdHk7IH0KKyAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNW
YWxpZCgpOyB9Citwcml2YXRlOgorICAgIGJvb2wgcmVzZXJ2ZShzaXplX3QgYWxpZ25lZFNpemUs
IHNpemVfdCBhZGRpdGlvbmFsU2l6ZSkKKyAgICB7CisgICAgICAgIHNpemVfdCBzaXplID0gYWxp
Z25lZFNpemUgKyBhZGRpdGlvbmFsU2l6ZTsKKyAgICAgICAgaWYgKHNpemUgPCBhbGlnbmVkU2l6
ZSB8fCBzaXplID4gbV9idWZmZXJDYXBhY2l0eSkgeworICAgICAgICAgICAgbV9idWZmZXJDYXBh
Y2l0eSA9IDA7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHVpbnQ4X3QqIG1fYnVmZmVyOworICAgIHNpemVfdCBt
X2J1ZmZlckNhcGFjaXR5OworICAgIHNpemVfdCBtX2VuY29kZWRTaXplIHsgMCB9OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0OTBiYzAxYTQ4
ZTc1NmZlYTZkZTJmN2VjYmQyN2ZkOWM3MjljZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcApAQCAtMCww
ICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlKGNvbnN0IGNoYXIq
IG5hbWUpCisgICAgOiBtX25hbWUobmFtZSkKK3sKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9u
V29ya1F1ZXVlOjpkaXNwYXRjaChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3sK
KyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9mdW5jdGlv
bnMuYXBwZW5kKFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICAgICAgQVNTRVJUKCFtX3Nob3VsZFF1
aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBvcnRlZC4KKyAgICB9
CisgICAgd2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpOworCit9Cit2b2lkIFN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWU6OmFkZFN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2UmIGNvbm5lY3Rpb24pCit7CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgICAgIG1fY29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24pOworICAgICAgICBBU1NFUlQo
IW1fc2hvdWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9y
dGVkLgorICAgIH0KKyAgICB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7Cit9CisKK3ZvaWQgU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6cmVtb3ZlU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQobV9wcm9jZXNzaW5n
VGhyZWFkKTsKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAg
bV9jb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbik7CisgICAgICAgIEFTU0VSVCghbV9zaG91
bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5vdCBzdXBwb3J0ZWQuCisg
ICAgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25hbCgp
OworI2VuZGlmCit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6c3RvcCgpCit7
CisgICAgbV9zaG91bGRRdWl0ID0gdHJ1ZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAo
IW1fcHJvY2Vzc2luZ1RocmVhZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fd2FrZVVwU2VtYXBo
b3JlLnNpZ25hbCgpOworICAgIG1fcHJvY2Vzc2luZ1RocmVhZC0+d2FpdEZvckNvbXBsZXRpb24o
KTsKKyAgICBtX3Byb2Nlc3NpbmdUaHJlYWQgPSBudWxscHRyOworI2VuZGlmCit9CisKK3ZvaWQg
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6d2FrZVVwKCkKK3sKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsKKyNlbmRpZgorfQorCitJUEM6OlNl
bWFwaG9yZSYgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6d2FrZVVwU2VtYXBob3JlKCkKK3sK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICByZXR1cm4gbV93YWtlVXBTZW1hcGhvcmU7CisjZWxz
ZQorICAgIHJldHVybiB7IH07CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlOjp3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBpZiAobV9wcm9jZXNzaW5nVGhyZWFkKSB7CisgICAgICAgIG1fd2FrZVVwU2VtYXBob3Jl
LnNpZ25hbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byB0YXNrID0gW3Ro
aXNdKCkgbXV0YWJsZSB7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIHByb2Nlc3NT
dHJlYW1zKCk7CisgICAgICAgICAgICBpZiAobV9zaG91bGRRdWl0KSB7CisgICAgICAgICAgICAg
ICAgcHJvY2Vzc1N0cmVhbXMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBtX3dha2VVcFNlbWFwaG9yZS53YWl0KCk7CisgICAgICAgIH0KKyAg
ICB9OworICAgIG1fcHJvY2Vzc2luZ1RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKG1fbmFtZSwgV1RG
TW92ZSh0YXNrKSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MsIFRocmVhZDo6UU9TOjpVc2VySW50ZXJh
Y3RpdmUpOworI2VuZGlmCit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6cHJv
Y2Vzc1N0cmVhbXMoKQoreworICAgIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdE1lc3NhZ2VMaW1p
dCA9IDEwMDA7CisgICAgYm9vbCBoYXNNb3JlVG9Qcm9jZXNzID0gZmFsc2U7CisgICAgZG8gewor
ICAgICAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IGZ1bmN0aW9uczsKKyAgICAgICAg
SGFzaFNldDxSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+PiBjb25uZWN0aW9uczsKKyAg
ICAgICAgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAg
ICAgICAgICAgZnVuY3Rpb25zLnN3YXAobV9mdW5jdGlvbnMpOworICAgICAgICAgICAgY29ubmVj
dGlvbnMgPSBtX2Nvbm5lY3Rpb25zOworICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byYgZnVu
Y3Rpb24gOiBmdW5jdGlvbnMpCisgICAgICAgICAgICBXVEZNb3ZlKGZ1bmN0aW9uKSgpOworCisg
ICAgICAgIGhhc01vcmVUb1Byb2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgZm9yIChhdXRvJiBjb25u
ZWN0aW9uIDogY29ubmVjdGlvbnMpCisgICAgICAgICAgICBoYXNNb3JlVG9Qcm9jZXNzIHw9IGNv
bm5lY3Rpb24tPmRpc3BhdGNoU3RyZWFtTWVzc2FnZXMoZGVmYXVsdE1lc3NhZ2VMaW1pdCkgPT0g
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6Okhhc01vcmVNZXNzYWdlczsKKyAgICB9IHdoaWxl
IChoYXNNb3JlVG9Qcm9jZXNzKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmN2Jh
M2YzNDAyOTBmMzAyNGM1Yjg5YTBlYTNmODMwMDljZDgyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgKQEAg
LTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSVBD
U2VtYXBob3JlLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rp
b25EaXNwYXRjaGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
TG9jay5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7CisK
K2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25E
aXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlKGNvbnN0
IGNoYXIqKTsKKyAgICB+U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSgpID0gZGVmYXVsdDsKKyAg
ICB2b2lkIGFkZFN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmKTsK
KyAgICB2b2lkIHJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2UmKTsKKworICAgIHZvaWQgZGlzcGF0Y2goV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFs
OworICAgIHZvaWQgc3RvcCgpOworCisgICAgdm9pZCB3YWtlVXAoKTsKKworICAgIFNlbWFwaG9y
ZSYgd2FrZVVwU2VtYXBob3JlKCk7Citwcml2YXRlOgorICAgIHZvaWQgd2FrZVVwUHJvY2Vzc2lu
Z1RocmVhZCgpOworICAgIHZvaWQgcHJvY2Vzc1N0cmVhbXMoKTsKKworICAgIGNvbnN0IGNoYXIq
IGNvbnN0IG1fbmFtZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBTZW1hcGhvcmUgbV93YWtl
VXBTZW1hcGhvcmU7CisjZW5kaWYKKyAgICBSZWZQdHI8VGhyZWFkPiBtX3Byb2Nlc3NpbmdUaHJl
YWQ7CisKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX3Nob3VsZFF1aXQgeyBmYWxzZSB9OworCisg
ICAgTG9jayBtX2xvY2s7CisgICAgRGVxdWU8RnVuY3Rpb248dm9pZCgpPj4gbV9mdW5jdGlvbnM7
CisgICAgSGFzaFNldDxSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+PiBtX2Nvbm5lY3Rp
b25zOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMGRhMmY0ZGEyYzE1YmE4OWJlMjc5
ZTZjMjAwYzY2MjQxNGJjZWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5oIgorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWUuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtLCBTdHJlYW1Db25uZWN0aW9u
V29ya1F1ZXVlJiB3b3JrUXVldWUpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAg
ICAsIG1fd29ya1F1ZXVlKHdvcmtRdWV1ZSkKKyAgICAsIG1fYnVmZmVyKFdURk1vdmUoc3RyZWFt
KSkKK3sKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNlaXZp
bmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRo
aXMsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgbV93b3JrUXVldWUuYWRkU3Ry
ZWFtQ29ubmVjdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBtX3dvcmtR
dWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKK30KKwordm9pZCBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPiYmIG1lc3NhZ2UpCit7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOworICAgICAgICBtX291dE9mU3Ry
ZWFtTWVzc2FnZXMuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAgIH0KKyAgICBtX3dvcmtR
dWV1ZS53YWtlVXAoKTsKK30KKworT3B0aW9uYWw8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6
OlNwYW4+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUoKQoreworICAgIHNp
emVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9y
eV9vcmRlcl9hY3F1aXJlKTsKKyAgICBpZiAocmVjZWl2ZXJMaW1pdCA9PSBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3JlY2Vp
dmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0KTsKKyAgICBpZiAocmVzdWx0LnNpemUgPCBtaW5pbXVt
TWVzc2FnZVNpemUpIHsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNlbmRlck9mZnNl
dCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhyZWNlaXZlckxpbWl0LCBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29y
ZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICBBU1NFUlQo
IShyZWNlaXZlckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVj
ZWl2ZXJJc1NsZWVwaW5nVGFnKSk7CisgICAgICAgIHJlY2VpdmVyTGltaXQgPSBjbGFtcGVkTGlt
aXQocmVjZWl2ZXJMaW1pdCk7CisgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fcmVjZWl2
ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworICAgIH0KKworICAgIGlmIChyZXN1bHQuc2l6ZSA+
PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6cmVs
ZWFzZShzaXplX3QgcmVhZFNpemUpCit7CisgICAgQVNTRVJUKHJlYWRTaXplKTsKKyAgICByZWFk
U2l6ZSA9IHN0ZDo6bWF4KHJlYWRTaXplLCBtaW5pbXVtTWVzc2FnZVNpemUpOworICAgIHNpemVf
dCByZWNlaXZlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9yZWNlaXZlck9mZnNl
dCkgKyByZWFkU2l6ZSk7CisgICAgc2l6ZV90IG9sZFJlY2VpdmVyT2Zmc2V0ID0gc2hhcmVkUmVj
ZWl2ZXJPZmZzZXQoKS5leGNoYW5nZShyZWNlaXZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJf
YWNxX3JlbCk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAvLyBJZiB0aGUgc2VuZGVyIHdy
b3RlIG92ZXIgcmVjZWl2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBzZW5kZXIgaXMgd2FpdGluZy4K
KyAgICBpZiAob2xkUmVjZWl2ZXJPZmZzZXQgIT0gbV9yZWNlaXZlck9mZnNldCkKKyAgICAgICAg
bV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLnNpZ25hbCgpOworI2VuZGlmCisKKyAgICBt
X3JlY2VpdmVyT2Zmc2V0ID0gcmVjZWl2ZXJPZmZzZXQ7Cit9CisKK1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlOjpTcGFuIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjphbGlnbmVkU3Bhbihz
aXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgQVNTRVJUKG9mZnNldCA8IGRhdGFT
aXplKCkpOworICAgIEFTU0VSVChsaW1pdCA8IGRhdGFTaXplKCkpOworICAgIHNpemVfdCBhbGln
bmVkID0gYWxpZ25PZmZzZXQob2Zmc2V0KTsKKyAgICBzaXplX3QgcmVzdWx0U2l6ZSA9IDA7Cisg
ICAgaWYgKG9mZnNldCA8IGxpbWl0KSB7CisgICAgICAgIGlmIChvZmZzZXQgPD0gYWxpZ25lZCAm
JiBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVk
LCBsaW1pdCk7CisgICAgfSBlbHNlIGlmIChvZmZzZXQgPiBsaW1pdCkgeworICAgICAgICBpZiAo
YWxpZ25lZCA+PSBvZmZzZXQgfHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVzdWx0
U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0KKyAgICByZXR1cm4geyBkYXRhKCkg
KyBhbGlnbmVkLCByZXN1bHRTaXplIH07Cit9CisKK3NpemVfdCBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZTo6c2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgaWYgKG9m
ZnNldCA8PSBsaW1pdCkKKyAgICAgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0OworICAgIHJldHVy
biBkYXRhU2l6ZSgpIC0gb2Zmc2V0OworfQorCitzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0Cit7CisgICAg
QVNTRVJUKHVudHJ1c3RlZExpbWl0IDwgKGRhdGFTaXplKCkgLSAxKSk7CisgICAgcmV0dXJuIHN0
ZDo6bWluKHVudHJ1c3RlZExpbWl0LCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMjBiOTIxMzZmZjZiNmE5YjllMTk4ZGM5NzNiM2QzYTZlYTU2NjI4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVj
dGlvbi5oCkBAIC0wLDAgKzEsMjgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVu
Y29kZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKKyNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVz
cGFjZSBJUEMgeworCitjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOworCitjbGFzcyBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4sIHByb3RlY3RlZCBNZXNzYWdlUmVjZWl2ZVF1ZXVl
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSk7
CitwdWJsaWM6CisgICAgflN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKCkgb3ZlcnJpZGUgPSBk
ZWZhdWx0OworCisgICAgQ29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVj
dGlvbjsgfQorCisgICAgZW51bSBEaXNwYXRjaFJlc3VsdCA6IGJvb2wgeworICAgICAgICBIYXNO
b01lc3NhZ2VzLAorICAgICAgICBIYXNNb3JlTWVzc2FnZXMKKyAgICB9OworICAgIHZpcnR1YWwg
RGlzcGF0Y2hSZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0
KSA9IDA7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgdm9pZCBz
ZW5kU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYmLi4uKTsKKwor
cHJvdGVjdGVkOgorICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKElQQzo6Q29ubmVjdGlv
biYsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYp
OworCisgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIHZvaWQgc3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1w
bChSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgLy8gTWVzc2Fn
ZVJlY2VpdmVRdWV1ZQorICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiYmKSBmaW5hbDsKKworICAgIHN0cnVjdCBTcGFuIHsKKyAgICAg
ICAgdWludDhfdCogZGF0YTsKKyAgICAgICAgc2l6ZV90IHNpemU7CisgICAgfTsKKyAgICBPcHRp
b25hbDxTcGFuPiB0cnlBcXVpcmUoKTsKKworICAgIHZvaWQgcmVsZWFzZShzaXplX3QgcmVhZFNp
emUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVy
OjptZXNzYWdlQWxpZ25tZW50OworICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxpbWl0KTsKKyAgICBzaXplX3Qgc2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGlt
aXQpOworICAgIHNpemVfdCBjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25z
dDsKKyAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci53cmFwT2Zmc2V0KG9mZnNldCk7IH0KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6
ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFs
aWdubWVudD4ob2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9CisgICAgQXRvbWljPHNpemVf
dD4mIHNoYXJlZFNlbmRlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9mZnNldCgp
OyB9CisgICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4g
bV9idWZmZXIucmVjZWl2ZXJPZmZzZXQoKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9u
PiBtX2Nvbm5lY3Rpb247CisgICAgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgbV93b3JrUXVl
dWU7CisKKyAgICBzaXplX3QgbV9yZWNlaXZlck9mZnNldCB7IDAgfTsKKyAgICBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyIG1fYnVmZmVyOworCisgICAgTG9jayBtX291dE9mU3RyZWFtTWVzc2FnZXNM
b2NrOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9vdXRPZlN0cmVhbU1l
c3NhZ2VzOworCisgICAgZnJpZW5kIGNsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU7Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cit2b2lkIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpzZW5kU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIEFyZ3Vt
ZW50cyYmLi4uIGFyZ3VtZW50cykKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHNlbmRpbmcg
dG8gYnVmZmVyLgorICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihJ
UEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKKyAgICAo
KmVuY29kZXIgPDwgLi4uIDw8IGFyZ3VtZW50cyk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kU3lu
Y1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQorCisvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
IHJlcHJlc2VudHMgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBzdHJlYW0gc2VuZGVyIGFuZCByZWNl
aXZlciwgYXMgdXNlZCBieSB0aGUgcmVjZWl2ZXIuCisvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
OgorLy8gICogSG9sZHMgdGhlIG1lc3NhZ2VzIHRvd2FyZHMgdGhlIHJlY2VpdmVyLgorLy8gICog
U2VuZHMgdGhlIHJlcGxpZXMgYmFjayB0byB0aGUgc2VuZGVyIHZpYSB0aGUgc3RyZWFtIG9yIG5v
cm1hbCBDb25uZWN0aW9uIGZhbGxiYWNrLgorLy8KKy8vIFJlY2VpdmVyIHRlbXBsYXRlIGNvbnRy
YWN0OgorLy8gICB2b2lkIGRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlJiwgRGVjb2RlciYpOworLy8KK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgor
Y2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPiBjcmVhdGUoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbihjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSkpOworICAg
IH0KKyAgICB+U3RyZWFtU2VydmVyQ29ubmVjdGlvbigpIGZpbmFsID0gZGVmYXVsdDsKKworICAg
IHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYsIFJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgLy8gU3RvcHMgdGhlIG1lc3NhZ2UgcmVjZWlwdC4g
Tm90ZTogYWxyZWFkeSByZWNlaXZlZCBtZXNzYWdlcyBtaWdodCBzdGlsbCBiZSBkZWxpdmVyZWQu
CisgICAgdm9pZCBzdG9wUmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKTsKKworICAgIC8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIG92ZXJy
aWRlcy4KKyAgICBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBt
ZXNzYWdlTGltaXQpIGZpbmFsOworCitwcml2YXRlOgorICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVh
bUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQorICAgICAgICA6
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKGNvbm5lY3Rpb24sIFdURk1vdmUoc3RyZWFtQnVm
ZmVyKSwgd29ya1F1ZXVlKQorICAgIHsKKyAgICB9CisgICAgYm9vbCBwcm9jZXNzU2V0U3RyZWFt
RGVzdGluYXRpb25JRChEZWNvZGVyJiYsIFJlZlB0cjxSZWNlaXZlcj4mIGN1cnJlbnRSZWNlaXZl
cik7CisgICAgYm9vbCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmLCBSZWNlaXZlciYp
OworICAgIGJvb2wgZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmKTsKKyAgICBM
b2NrIG1fcmVjZWl2ZXJzTG9jazsKKyAgICB1c2luZyBSZWNlaXZlcnNNYXAgPSBIYXNoTWFwPHN0
ZDo6cGFpcjx1aW50OF90LCB1aW50NjRfdD4sIFJlZjxSZWNlaXZlcj4+OworICAgIFJlY2VpdmVy
c01hcCBtX3JlY2VpdmVyczsKKworICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQg
PSAwOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Cit2b2lkIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyJiBy
ZWNlaXZlciwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCkKK3sKKyAgICB7CisgICAgICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nh
c3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgQVNTRVJUKCFtX3Jl
Y2VpdmVycy5jb250YWlucyhrZXkpKTsKKyAgICAgICAgbV9yZWNlaXZlcnMuYWRkKGtleSwgbWFr
ZVJlZihyZWNlaXZlcikpOworICAgIH0KKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6
c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1lIHJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChyZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQpOworICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgIEFTU0VSVChtX3JlY2VpdmVycy5jb250YWlu
cyhrZXkpKTsKKyAgICBtX3JlY2VpdmVycy5yZW1vdmUoa2V5KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgUmVjZWl2ZXI+CitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6RGlzcGF0Y2hSZXN1
bHQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoU3RyZWFtTWVzc2Fn
ZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkKK3sKKyAgICBSZWZQdHI8UmVjZWl2ZXI+IGN1cnJlbnRS
ZWNlaXZlcjsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IFdURjo6aXNWYWxpZChSZWNlaXZlck5h
bWUpLgorICAgIHVpbnQ4X3QgY3VycmVudFJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KFJlY2VpdmVyTmFtZTo6SW52YWxpZCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1lc3NhZ2VMaW1pdDsgKytpKSB7CisgICAgICAgIGF1dG8gc3BhbiA9IHRyeUFxdWlyZSgpOwor
ICAgICAgICBpZiAoIXNwYW4pCisgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhh
c05vTWVzc2FnZXM7CisgICAgICAgIElQQzo6RGVjb2RlciBkZWNvZGVyIHsgc3Bhbi0+ZGF0YSwg
c3Bhbi0+c2l6ZSwgbV9jdXJyZW50RGVzdGluYXRpb25JRCB9OworICAgICAgICBpZiAoIWRlY29k
ZXIuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGlu
YXRpb25JRCkgeworICAgICAgICAgICAgaWYgKCFwcm9jZXNzU2V0U3RyZWFtRGVzdGluYXRpb25J
RChXVEZNb3ZlKGRlY29kZXIpLCBjdXJyZW50UmVjZWl2ZXIpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGlmICghZGlz
cGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnJlbnRSZWNlaXZlck5hbWUgIT0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB7CisgICAg
ICAgICAgICBjdXJyZW50UmVjZWl2ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgICAgICAgICAgY3VycmVudFJlY2VpdmVyID0g
bnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNlaXZlcikgeworICAg
ICAgICAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90Pihj
dXJyZW50UmVjZWl2ZXJOYW1lKSwgbV9jdXJyZW50RGVzdGluYXRpb25JRCk7CisgICAgICAgICAg
ICBpZiAoIVJlY2VpdmVyc01hcDo6aXNWYWxpZEtleShrZXkpKSB7CisgICAgICAgICAgICAgICAg
bV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFz
Tm9NZXNzYWdlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG1f
cmVjZWl2ZXJzLmdldChrZXkpOworICAgICAgICB9CisgICAgICAgIGlmICghY3VycmVudFJlY2Vp
dmVyKSB7CisgICAgICAgICAgICAvLyBWYWxpZCBzY2VuYXJpbyBpcyB3aGVuIHJlY2VpdmVyIGhh
cyBiZWVuIHJlbW92ZWQsIGJ1dCB0aGVyZSBhcmUgbWVzc2FnZXMgZm9yIGl0IGluIHRoZSBidWZm
ZXIuCisgICAgICAgICAgICAvLyBGSVhNRTogU2luY2Ugd2UgZG8gbm90IGhhdmUgYSByZWNlaXZl
ciwgd2UgZG9uJ3Qga25vdyBob3cgdG8gZGVjb2RlIHRoZSBtZXNzYWdlLgorICAgICAgICAgICAg
Ly8gVGhpcyBtZWFucyB3ZSBtdXN0IHRpbWVvdXQgZXZlcnkgcmVjZWl2ZXIgaW4gdGhlIHN0cmVh
bSBjb25uZWN0aW9uLgorICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIGFzc2VydCB0aGF0IHRo
ZSByZWNlaXZlcnMgYXJlIGVtcHR5LCBhcyB3ZSBvbmx5IGhhdmUgdXAgdG8gb25lIHJlY2VpdmVy
IGluCisgICAgICAgICAgICAvLyBhIHN0cmVhbSBjb25uZWN0aW9uIHVudGlsIHBvc3NpYmlsaXR5
IG9mIHNraXBwaW5nIGlzIGltcGxlbWVudGVkIHByb3Blcmx5LgorICAgICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICAgICAgQVNTRVJUKG1f
cmVjZWl2ZXJzLmlzRW1wdHkoKSk7CisgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6
Okhhc05vTWVzc2FnZXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFkaXNwYXRjaFN0cmVhbU1l
c3NhZ2UoV1RGTW92ZShkZWNvZGVyKSwgKmN1cnJlbnRSZWNlaXZlcikpCisgICAgICAgICAgICBy
ZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgfQorICAgIHJldHVybiBE
aXNwYXRjaFJlc3VsdDo6SGFzTW9yZU1lc3NhZ2VzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBS
ZWNlaXZlcj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnByb2Nlc3NT
ZXRTdHJlYW1EZXN0aW5hdGlvbklEKERlY29kZXImJiBkZWNvZGVyLCBSZWZQdHI8UmVjZWl2ZXI+
JiBjdXJyZW50UmVjZWl2ZXIpCit7CisgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDA7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXN0aW5hdGlvbklEKSkgeworICAgICAgICBtX2Nvbm5l
Y3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5h
bWUoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG1fY3VycmVudERl
c3RpbmF0aW9uSUQgIT0gZGVzdGluYXRpb25JRCkgeworICAgICAgICBtX2N1cnJlbnREZXN0aW5h
dGlvbklEID0gZGVzdGluYXRpb25JRDsKKyAgICAgICAgY3VycmVudFJlY2VpdmVyID0gbnVsbHB0
cjsKKyAgICB9CisgICAgcmVsZWFzZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29s
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2Uo
RGVjb2RlciYmIGRlY29kZXIsIFJlY2VpdmVyJiByZWNlaXZlcikKK3sKKyAgICByZWNlaXZlci5k
aWRSZWNlaXZlU3RyZWFtTWVzc2FnZSgqdGhpcywgZGVjb2Rlcik7CisgICAgaWYgKCFkZWNvZGVy
LmlzVmFsaWQoKSkgeworICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmVsZWFzZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29s
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaE91dE9mU3RyZWFtTWVz
c2FnZShEZWNvZGVyJiYgZGVjb2RlcikKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4g
bWVzc2FnZTsKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vdXRPZlN0
cmVhbU1lc3NhZ2VzTG9jayk7CisgICAgICAgIGlmIChtX291dE9mU3RyZWFtTWVzc2FnZXMuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtZXNzYWdlID0gbV9v
dXRPZlN0cmVhbU1lc3NhZ2VzLnRha2VGaXJzdCgpOworICAgIH0KKyAgICBpZiAoIW1lc3NhZ2Up
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxSZWNlaXZlcj4gcmVjZWl2ZXI7
CisgICAgeworICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIG1lc3NhZ2UtPmRlc3RpbmF0
aW9uSUQoKSk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2Nr
KTsKKyAgICAgICAgcmVjZWl2ZXIgPSBtX3JlY2VpdmVycy5nZXQoa2V5KTsKKyAgICB9CisgICAg
aWYgKHJlY2VpdmVyKSB7CisgICAgICAgIHJlY2VpdmVyLT5kaWRSZWNlaXZlU3RyZWFtTWVzc2Fn
ZSgqdGhpcywgKm1lc3NhZ2UpOworICAgICAgICBpZiAoIW1lc3NhZ2UtPmlzVmFsaWQoKSkgewor
ICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAvLyBJZiByZWNlaXZlciBkb2VzIG5vdCBleGlzdCBpZiBpdCBo
YXMgYmVlbiByZW1vdmVkIGJ1dCBtZXNzYWdlcyBhcmUgc3RpbGwgcGVuZGluZyB0byBiZQorICAg
IC8vIHByb2Nlc3NlZC4gSXQncyBvayB0byBza2lwIHN1Y2ggbWVzc2FnZXMuCisgICAgLy8gRklY
TUU6IE5vdGUsIGNvcnJlc3BvbmRpbmcgc2tpcCBpcyBub3QgcG9zc2libGUgYXQgdGhlIG1vbWVu
dCBmb3Igc3RyZWFtIG1lc3NhZ2VzLgorICAgIHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVy
UG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oCmluZGV4IDc4NTRmYThmMTg2OGZiOGU0NTYyMjg5
ZmRkZjZmMjc5NWFmMmQ5MGQuLjgzZDk5ZjBjYmM4ZmUwNDgyMGI0NzgzYzljMDc2YWI1N2EzZWFi
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaApAQCAt
MjUsOSArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIu
aCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1
ZGUgIkVuY29kZXIuaCIKIAogbmFtZXNwYWNlIElQQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVkMDhjNzM5NzcwMjIyZmM1YzRjNDZjMzM0NzhhYzEw
MzAxYTk5ODguLmFjOWU3ODJlMjE4MzE4MWJjOTg1MzVkNWRlODRmZTgwNWFmMDdlOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjQsOCArMjQsOSBAQCBp
bXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCByZQogaW1wb3J0IHN5cwogCitmcm9tIG1vZGVsIGlt
cG9ydCBNZXNzYWdlUmVjZWl2ZXIsIE1lc3NhZ2UKIGZyb20gd2Via2l0IGltcG9ydCBwYXJzZXIK
LWZyb20gd2Via2l0Lm1vZGVsIGltcG9ydCBCVUlMVElOX0FUVFJJQlVURSwgQVNZTkNfQVRUUklC
VVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEUsIE1BSU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUK
K2Zyb20gd2Via2l0Lm1vZGVsIGltcG9ydCBCVUlMVElOX0FUVFJJQlVURSwgQVNZTkNfQVRUUklC
VVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEUsIE1BSU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUs
IFNUUkVBTV9BVFRSSUJVVEUsIFdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFCiAKIF9saWNlbnNl
X2hlYWRlciA9ICIiIi8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01MywxMyArNTQsMTEgQEAgX2xpY2Vuc2VfaGVhZGVyID0g
IiIiLyoKIAogIiIiCiAKLVdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFID0gJ1dhbnRzQ29ubmVj
dGlvbicKIFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFID0gJ1dhbnRzRGlzcGF0Y2hN
ZXNzYWdlJwogV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUgPSAnV2FudHNB
c3luY0Rpc3BhdGNoTWVzc2FnZScKIExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUgPSAnTGVnYWN5
UmVjZWl2ZXInCiBOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUgPSAnTm90UmVmQ291
bnRlZCcKIAotCiBkZWYgcmVjZWl2ZXJfZW51bWVyYXRvcl9vcmRlcl9rZXkocmVjZWl2ZXJfbmFt
ZSk6CiAgICAgaWYgcmVjZWl2ZXJfbmFtZSA9PSAnSVBDJzoKICAgICAgICAgcmV0dXJuIDEKQEAg
LTIxMSw3ICsyMTAsNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2
ZXIsIG1lc3NhZ2UpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhy
ZWFkOjpNYWluVGhyZWFkO1xuJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkO1xuJykKLSAgICAg
ICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVz
c2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgIGlmIChtZXNzYWdl
Lmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRy
aWJ1dGUoQVNZTkNfQVRUUklCVVRFKSkgYW5kIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNU
UkVBTV9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2
b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9u
JicpCiAgICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJzKToKICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcsICVzJyAlIGNvbXBsZXRpb25faGFuZGxlcl9wYXJhbWV0ZXJzKQpA
QCAtMjU5LDYgKzI1OCw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xh
cmVkKCk6CiAgICAgcmV0dXJuIGZyb3plbnNldChbCiAgICAgICAgICdJUEM6OkRhdGFSZWZlcmVu
Y2UnLAogICAgICAgICAnSVBDOjpGb250UmVmZXJlbmNlJywKKyAgICAgICAgJ0lQQzo6U2VtYXBo
b3JlJywKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAogICAgICAgICAnTWVkaWFUaW1lJywKICAg
ICAgICAgJ1N0cmluZycsCkBAIC01NzEsMTAgKzU3MSwxNSBAQCBkZWYgc3luY19tZXNzYWdlX3N0
YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9
ICdBc3luYycKIAogICAgIHdhbnRzX2Nvbm5lY3Rpb24gPSBtZXNzYWdlLmhhc19hdHRyaWJ1dGUo
U1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoV0FOVFNfQ09O
TkVDVElPTl9BVFRSSUJVVEUpCisgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9ICIsICpyZXBseUVu
Y29kZXIiCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToK
KyAgICAgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9ICcnCisgICAgZWxpZiBtZXNzYWdlLmhhc19h
dHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUo
QVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9ICcsIHJlcGx5
RW5jb2RlcicKIAogICAgIHJlc3VsdCA9IFtdCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OiVzOjolczo6bmFtZSgpKSB7XG4nICUg
KHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgICAg
ICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzZGVjb2RlciwgJXNyZXBseUVuY29kZXIsIHRo
aXMsICYlcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdl
Lm5hbWUsICdjb25uZWN0aW9uLCAnIGlmIHdhbnRzX2Nvbm5lY3Rpb24gZWxzZSAnJywgJycgaWYg
bWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5o
YXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSkgZWxzZSAnKicsIGhhbmRsZXJfZnVuY3Rpb24o
cmVjZWl2ZXIsIG1lc3NhZ2UpKSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8
TWVzc2FnZXM6OiVzOjolcz4oJXNkZWNvZGVyJXMsIHRoaXMsICYlcyk7XG4nICUgKGRpc3BhdGNo
X2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICdjb25uZWN0aW9uLCAnIGlm
IHdhbnRzX2Nvbm5lY3Rpb24gZWxzZSAnJywgbWF5YmVfcmVwbHlfZW5jb2RlciwgaGFuZGxlcl9m
dW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAg
cmV0dXJuO1xuJykKICAgICByZXN1bHQuYXBwZW5kKCcgICAgfVxuJykKICAgICByZXR1cm4gc3Vy
cm91bmRfaW5fY29uZGl0aW9uKCcnLmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCkBA
IC04NzQsNyArODc5LDcgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6
CiAgICAgICAgIGlmIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25lIGFuZCAobWVzc2Fn
ZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0
cmlidXRlKEFTWU5DX0FUVFJJQlVURSkpOgogICAgICAgICAgICAgZGVsYXllZF9vcl9hc3luY19t
ZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkKIAotICAgIGlmIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2Fn
ZXM6CisgICAgaWYgZGVsYXllZF9vcl9hc3luY19tZXNzYWdlcyBhbmQgbm90IHJlY2VpdmVyLmhh
c19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ25h
bWVzcGFjZSBNZXNzYWdlcyB7XG5cbm5hbWVzcGFjZSAlcyB7XG5cbicgJSByZWNlaXZlci5uYW1l
KQogCiAgICAgICAgIGZvciBtZXNzYWdlIGluIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXM6CkBA
IC05MjIsMjUgKzkyNyw0NCBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVy
KToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFzeW5jX21lc3NhZ2VzLmFwcGVuZChtZXNz
YWdlKQogCi0gICAgaWYgYXN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShX
QU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0
ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJl
Y2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRU
UklCVVRFKSBlbHNlICcnKSkKKyAgICBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9B
VFRSSUJVVEUpOgorICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlU3Ry
ZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUpKQogICAgICAgICByZXN1
bHQuYXBwZW5kKCd7XG4nKQotICAgICAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShO
T1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpOgorICAgICAgICBhc3NlcnQocmVjZWl2
ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpKQorICAg
ICAgICBhc3NlcnQobm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVT
U0FHRV9BVFRSSUJVVEUpKQorICAgICAgICBhc3NlcnQobm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1
dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKQorCisgICAgICAgIHJl
c3VsdCArPSBbYXN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBt
ZXNzYWdlIGluIGFzeW5jX21lc3NhZ2VzXQorICAgICAgICByZXN1bHQgKz0gW3N5bmNfbWVzc2Fn
ZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIHN5bmNfbWVzc2Fn
ZXNdCisKKyAgICAgICAgaWYgKHJlY2VpdmVyLnN1cGVyY2xhc3MpOgorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcykpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpO1xuJykKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7XG4n
KQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xu
JykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKyAgICBlbGlmIGFzeW5jX21lc3NhZ2Vz
IG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJV
VEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FH
RV9BVFRSSUJVVEUpOgorICAgICAgICByZWNlaXZlX3ZhcmlhbnQgPSByZWNlaXZlci5uYW1lIGlm
IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAn
JworICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChy
ZWNlaXZlci5uYW1lLCByZWNlaXZlX3ZhcmlhbnQpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd7
XG4nKQorICAgICAgICBpZiBub3QgKHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5U
RURfUkVDRUlWRVJfQVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9B
VFRSSUJVVEUpKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBhdXRvIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTtcbicpCiAKICAgICAgICAgcmVzdWx0ICs9IFthc3luY19t
ZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gYXN5bmNf
bWVzc2FnZXNdCisKICAgICAgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQ
QVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19B
U1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgaWYgKGRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKSlcbicpCiAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybjtcbicpCiAgICAgICAgIGlm
IChyZWNlaXZlci5zdXBlcmNsYXNzKToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAl
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7XG4nICUgKHJlY2VpdmVy
LnN1cGVyY2xhc3MpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNl
aXZlJXNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNs
YXNzLCByZWNlaXZlX3ZhcmlhbnQpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTtcbicpCiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpO1xuJykKICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJ31cbicpCiAKLSAgICBpZiBzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhh
c19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgorICAgIGlmIG5v
dCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpIGFuZCAoc3luY19tZXNz
YWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRU
UklCVVRFKSk6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN5bmMlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JiByZXBseUVuY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUg
aWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNl
ICcnKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CmluZGV4IDQ4ZDhlMWI2MjdjYzMx
YjE4ZmExYzUwZmFiZWVlZDk3MWJkMTViZTkuLmU4OWUxN2UxNDA3YjViNTY2YmMxOTJjNDBhOTlh
MjhkOGJmOGRjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXNfdW5pdHRlc3QucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlc191bml0dGVzdC5weQpAQCAtNDYsNiArNDYsOCBAQCBfdGVzdF9yZWNlaXZlcl9uYW1lcyA9
IFsKICAgICAnVGVzdFdpdGhJZk1lc3NhZ2UnLAogICAgICdUZXN0V2l0aFNlbWFwaG9yZScsCiAg
ICAgJ1Rlc3RXaXRoSW1hZ2VEYXRhJywKKyAgICAnVGVzdFdpdGhTdHJlYW0nLAorICAgICdUZXN0
V2l0aFN0cmVhbUJ1ZmZlcicKIF0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21vZGVsLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5w
eQppbmRleCA0ODAwZmE0ZWZjYTk2NzhhODlhZmM3ZTQzNGYyNmIzNDZjZThjZjZjLi41MDdlMDQy
YTU3N2ZmOGEwMjMzNzJjM2E2MDdhYjEwOGE1ZmE5Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbW9kZWwucHkKQEAgLTI4LDYgKzI4LDggQEAgQlVJTFRJTl9BVFRSSUJVVEUgPSAiQnVp
bHRpbiIKIEFTWU5DX0FUVFJJQlVURSA9ICJBc3luYyIKIE1BSU5USFJFQURDQUxMQkFDS19BVFRS
SUJVVEUgPSAiTWFpblRocmVhZENhbGxiYWNrIgogU1lOQ0hST05PVVNfQVRUUklCVVRFID0gJ1N5
bmNocm9ub3VzJworU1RSRUFNX0FUVFJJQlVURSA9ICJTdHJlYW0iCitXQU5UU19DT05ORUNUSU9O
X0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24nCiAKIGNsYXNzIE1lc3NhZ2VSZWNlaXZlcihv
YmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdXBlcmNsYXNzLCBhdHRyaWJ1
dGVzLCBtZXNzYWdlcywgY29uZGl0aW9uKToKQEAgLTczLDcgKzc1LDkgQEAgaXBjX3JlY2VpdmVy
ID0gTWVzc2FnZVJlY2VpdmVyKG5hbWU9IklQQyIsIHN1cGVyY2xhc3M9Tm9uZSwgYXR0cmlidXRl
cz1bQlVJTFRJTl8KICAgICBNZXNzYWdlKCdXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZycs
IFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJ
QlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdTeW5jTWVzc2FnZVJlcGx5Jywg
W10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwK
ICAgICBNZXNzYWdlKCdJbml0aWFsaXplQ29ubmVjdGlvbicsIFtdLCBbXSwgYXR0cmlidXRlcz1b
QlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249IlBMQVRGT1JNKENPQ09BKSIpLAotICAgIE1l
c3NhZ2UoJ0xlZ2FjeVNlc3Npb25TdGF0ZScsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9B
VFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSkKKyAgICBNZXNzYWdlKCdMZWdhY3lTZXNzaW9uU3Rh
dGUnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5v
bmUpLAorICAgIE1lc3NhZ2UoJ1NldFN0cmVhbURlc3RpbmF0aW9uSUQnLCBbXSwgW10sIGF0dHJp
YnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2Uo
J1Byb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5f
QVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpCiBdLCBjb25kaXRpb249Tm9uZSkKIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQppbmRleCAyMWIzMGFlMjBm
YTEwMzNmYTY2NGUwM2FkYmQ4ODA4NmE2YzcyYzQyLi5lMTk3YmQzYzI2N2FlNDExYTQ1MDBkMGZm
NjkzOTg2MDNhNDUwODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL01ha2VmaWxlCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWFrZWZpbGUKQEAgLTYsNiArNiw4IEBAIFRFU1RTID0gXAogICAgIFRlc3RXaXRoSWZNZXNzYWdl
IFwKICAgICBUZXN0V2l0aFNlbWFwaG9yZSBcCiAgICAgVGVzdFdpdGhJbWFnZURhdGEgXAorCVRl
c3RXaXRoU3RyZWFtIFwKKwlUZXN0V2l0aFN0cmVhbUJ1ZmZlciBcCiAjCiAKIGFsbDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcApp
bmRleCA3ZDVhZmM5MThlNWIwNWI4ZjdhNWNkNjIzODUyYjVjMGUwYzE4YTAzLi4yZTdjYTE1ZTc0
ZWJiZGE4NmM3OWY4ZmMwYjhmMzhiNGI1Zjc1ODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCkBAIC0xMzQsNiArMTM0LDEw
IEBAIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lIG5hbWUpCiAgICAgICAgIHJl
dHVybiAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2Fj
eVNlc3Npb25TdGF0ZToKICAgICAgICAgcmV0dXJuICJMZWdhY3lTZXNzaW9uU3RhdGUiOworICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2U6CisgICAgICAgIHJl
dHVybiAiUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6
U2V0U3RyZWFtRGVzdGluYXRpb25JRDoKKyAgICAgICAgcmV0dXJuICJTZXRTdHJlYW1EZXN0aW5h
dGlvbklEIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OgogICAgICAg
ICByZXR1cm4gIlN5bmNNZXNzYWdlUmVwbHkiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RX
aXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CkBAIC0yMjQsNiArMjI4LDggQEAg
UmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICAg
ICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOwogICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6
OkxlZ2FjeVNlc3Npb25TdGF0ZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZT
dHJlYW1NZXNzYWdlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9u
SUQ6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseToKICAgICAgICAgcmV0
dXJuIFJlY2VpdmVyTmFtZTo6SVBDOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3Vw
ZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CkBAIC00MDEsNiArNDA3LDEwIEBAIGJvb2wg
aXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogI2VuZGlmCiAgICAg
aWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2Fn
ZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5h
dGlvbklEKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBD
OjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmluZGV4IGVmZWEyMzAyZDY4N2JlNGY1MjI2OTBmNzhh
M2M2NGY2MzZlMzFmZDguLmEyMmJkMWNmZDdmNzNiZTllYWIxY2JiYzBmZjBjNmVmMDZhMDY0MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5h
bWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFt
ZXMuaApAQCAtOTMsNiArOTMsOCBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3Qg
ewogICAgICwgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1RvdWNoRXZlbnQKICAgICAsIEluaXRpYWxp
emVDb25uZWN0aW9uCiAgICAgLCBMZWdhY3lTZXNzaW9uU3RhdGUKKyAgICAsIFByb2Nlc3NPdXRP
ZlN0cmVhbU1lc3NhZ2UKKyAgICAsIFNldFN0cmVhbURlc3RpbmF0aW9uSUQKICAgICAsIFN5bmNN
ZXNzYWdlUmVwbHkKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVw
bHkKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rp
b25SZXBseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQwZjUyOGM2OWNk
ZWZkZGE5YzQ4Njc5MTM4YzYzOGI4YWMwY2IzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KQEAg
LTAsMCArMSwyNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
IFRlc3RzIFN0cmVhbSByZWNlaXZlciBhdHRyaWJ1dGUuCittZXNzYWdlcyAtPiBUZXN0V2l0aFN0
cmVhbSBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CisgICAgdm9pZCBTZW5kU3RyaW5nKFN0cmluZyB1
cmwpCisgICAgdm9pZCBTZW5kU3RyaW5nU3luY2hyb25pemVkKFN0cmluZyB1cmwpIC0+IChpbnQ2
NF90IHJldHVybikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjExNzBhYzg5YTI1ZjAzOTIxOWZlNDE4MTA1YjJjMWQwNGFlMGM3ZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtQnVmZmVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUZXN0cyBTdHJlYW0gcmVjZWl2ZXIgYXR0cmlidXRl
LgorbWVzc2FnZXMgLT4gVGVzdFdpdGhTdHJlYW1CdWZmZXIgIHsKKyAgICB2b2lkIFNlbmRTdHJl
YW1CdWZmZXIoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZm
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzlj
OTI0MGE0ZWIxYWI1NTc0MDk2MDIyOTFkYzEyNzMxOTg3ZjA1NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXIuaCIKKwor
I2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVk
ZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVm
ZmVyTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgVGVzdFdpdGhTdHJl
YW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjpuYW1lKCkpIHsKKyAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpzZW5kU3Ry
ZWFtQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVTRURfUEFSQU0oY29u
bmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5o
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZl
ck1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEyNGViZGQyMDBmMzM5MDQ3N2RmYWY3Y2Q4NTcxOTFi
ZDUzYjI4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oCkBAIC0wLDAgKzEsNjggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgor
I2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOworfQorCitu
YW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyIHsKKwor
c3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sK
KyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOworfQor
CitjbGFzcyBTZW5kU3RyZWFtQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMg
PSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciY+OworCisgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXI7IH0KKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRTdHJlYW1CdWZmZXIo
Y29uc3QgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBzdHJlYW0pCisgICAgICAgIDogbV9h
cmd1bWVudHMoc3RyZWFtKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFy
Z3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAg
fQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVh
bUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3
ZmEyYWQ3ZDUwNjMwMGYzY2NiMzkwZjE5NzI1OWQ5MGU2OTNmMzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3Ry
ZWFtQnVmZmVyIHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbUJ1ZmZlcgorfSAv
LyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODM5ODg1NWFkNTZlOTUxOTk3YzlkMmFiM2Y4ODgwOTRjODg5MjMyNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW0u
aCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgor
I2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbU1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIFRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6
OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpCit7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVz
dFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nPihkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFt
OjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVN
ZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9uaXplZD4o
ZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtOjpzZW5kU3RyaW5nU3luY2hyb25pemVkKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAg
VU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTBiZmViYWIyMzcyYzFmNjYwNWM1NTg5NDU5MzhiZjFlNGU3YWFmYwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNz
YWdlcy5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2Fn
ZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
CituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtIHsKKworc3Rh
dGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAg
ICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtOworfQorCitjbGFzcyBT
ZW5kU3RyaW5nIHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNv
bnN0IFN0cmluZyY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0
dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmc7IH0KKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRTdHJp
bmcoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsK
KyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3Vt
ZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQgewor
cHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47
CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNz
YWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZ1N5bmNocm9uaXplZDsgfQorICAgIHN0
YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6
dHVwbGU8aW50NjRfdCY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxp
bnQ2NF90PjsKKyAgICBleHBsaWNpdCBTZW5kU3RyaW5nU3luY2hyb25pemVkKGNvbnN0IFN0cmlu
ZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAg
Y29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVu
dHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbQorfSAvLyBuYW1lc3BhY2Ug
TWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MmM1YTA3OGRlMDFlYzE0MzBmODk0ZjIwY2I5YzJmOTE1NWU3Y2FiCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3Nh
Z2VzUmVwbGllcy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbSB7
CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0KK30gLy8gbmFtZXNwYWNlIE1lc3Nh
Z2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAppbmRleCBmOWJhNWRjNzgyNGIxZTViMDNlNTNmOThiN2E3ZjhlNGRlZjIx
YzY0Li40NTg5MjZmMjViZDZkNTE2MmE3NTljZTBjNzNmOGVhMWViMTdkNWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKQEAgLTE1MCw2ICsxNTAsMTAgQEAgUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5j
cHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAgQG5vLXVuaWZ5CiBQ
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlci5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVj
dGlvbi5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBAbm8t
dW5pZnkKIAogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIEBuby11bmlm
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmgKaW5kZXggYzMzMDc4MjViMjAwODZkZWQ0Yzg2YzY0ODhjZTVkZDU3ZWMwYzM1OC4uODk1MjA4
YzNiYzIyNmQ2ZmIxMjg2MWRhNDM3Y2RhMzgxZjQ4ZDYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAppbmRleCAzMDFkMGVkODMwZGJlZDkwOGNiYjI3ODg2ZjA0YThmZWVhOWZkODllLi4yM2FiMTBk
NjNhNGY0YTNmZDIwY2VkNGQ3MzAxNzNmNDc1ZGM3ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94
eS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVz
c2FnZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAj
aW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwNjFhNjM3ZGI5M2JiMGFmYzZk
OWM2NTE2YzNkMDNlMjM1YjVjYzEuLmYwMDZlNTFhYjIzODMwODQ0MmUxNjQwZmY3ZThjNjU2NGU3
M2Y0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTMyOCw2ICsxMzI4LDE2IEBACiAJCTdCNDgzRjIwMjVDRERBOUMwMDEyMDQ4NiAv
KiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oICovOyB9OwogCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5j
cHAgKi87IH07CiAJCTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1
ZXVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0
ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi87IH07CisJ
CTdCNzMxMjNBMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMTI1Q0M4
NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovOyB9OworCQk3QjczMTIz
QjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMjI1Q0M4NTIz
MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi87IH07CisJCTdCNzMx
MjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMzI1Q0M4NTIzMDAz
QjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9OworCQk3QjczMTIzRDI1Q0M4
NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYg
LyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi87IH07CisJCTdCNzMxMjNFMjVDQzg1MjUw
MDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNTI1Q0M4NTI0MDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oICovOyB9OworCQk3QjczMTIzRjI1Q0M4NTI1MDAz
QjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi87IH07CisJCTdCNzMxMjQwMjVDQzg1MjUwMDNCMjc5
NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM3MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJN0I3MzEyNDEyNUNDODUyNTAwM0IyNzk2IC8q
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmggKi87IH07CisJCTdCNzMxMjQyMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1D
b25uZWN0aW9uRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNv
ZGVyLmggKi87IH07CisJCTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QkFCMTEwRjI1REQwMkIyMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZS5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0Ew
MDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVn
aW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEw
RTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtNDU0MCw2ICs0NTUwLDE1
IEBACiAJCTdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFw
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZl
UXVldWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0RE
QTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzMy
NUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I3MzEyMzUyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNjI1Q0M4NTI0MDAzQjI3
OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzcyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMx
MjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVh
bUNvbm5lY3Rpb25FbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
OTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0
MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTQ3LDYgKzQ1NjYsNyBAQAogCQk3QjkwNDE2
OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYy
OTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTg1
LDEwICs3MDA1LDIwIEBACiAJCQkJMUEzRUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VS
ZWNlaXZlck1hcC5oICovLAogCQkJCTFBQUIwMzc3MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdl
U2VuZGVyLmNwcCAqLywKIAkJCQkxQUFCMDM3ODE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNl
bmRlci5oICovLAorCQkJCTdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8sCiAJCQkJMkRDMTgwMDFEOTBEREQxNUZDNjk5MUE5IC8q
IFNoYXJlZEJ1ZmZlckNvcHkuY3BwICovLAogCQkJCTVDQzVEQjkxMjE0ODhFMTYwMDZDQjhBOCAv
KiBTaGFyZWRCdWZmZXJDb3B5LmggKi8sCiAJCQkJMkRDMTg1NUVEQkZCODUwQkEwQjZEMDZEIC8q
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwICovLAogCQkJCTJEQzE4ODFBQ0JDQUI1RDU3
QzVDNkVGMCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggKi8sCisJCQkJN0I3MzEyMzYy
NUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwICovLAorCQkJCTdC
NzMxMjMzMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggKi8sCisJ
CQkJN0I3MzEyMzQyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3Bw
ICovLAorCQkJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmggKi8sCisJCQkJN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyLmggKi8sCisJCQkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWUuY3BwICovLAorCQkJCTdCNzMxMjM1MjVDQzg1MjQwMDNCMjc5NiAv
KiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggKi8sCisJCQkJN0I3MzEyMzcyNUNDODUyNDAw
M0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTdCNzMxMjM4MjVD
Qzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi8sCiAJCQkJMUFFMDBE
NjkxODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFFMDBE
NkExODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oICovLAogCQkJKTsKQEAgLTEy
MDE4LDYgKzEyMDQ4LDcgQEAKIAkJCQlCQzJEMDIxNzEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURv
Y3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUI0QThEMTI5NkYw
QTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUU1
NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0JBQjExMTAyNUREMDJCMzAwOEZDNDc5IC8qIFNjb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU0RDA0MjFG
MUQ3MkQwMDdFM0MzNiAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9T
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5
MzFDMUMxOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMTIwNjcsNiArMTIwOTgsMTEgQEAKIAkJCQk5MzZC
MDU5ODIzMDM5MDk3MDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzNjhFRURGMjMwM0E5RUQwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjVGNEUwNjIzMEIyRTk1MDAzQ0VEQjcgLyogU3Rv
cmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjNDMjVD
Qzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQk3QjczMTIzQTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyNDIyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25FbmNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIzRTI1Q0M4NTI1MDAz
QjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MzEyNDEyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBRTAwRDZDMTgzMjdDMTIwMDA4N0RENyAvKiBTdHJpbmdSZWZlcmVu
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5NkJEODVEMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJp
bmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTg2MjJCMzUxNkMwMDhEMEU4
QiAvKiBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLApAQCAt
MTM4OTQsNiArMTM5MzAsMTAgQEAKIAkJCQk5M0Q2Qjc4MjI1NENDQ0Y0MDA1OEREM0EgLyogU3Bl
ZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUEzMzRERUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNjhFRURFMjMwM0E5MDIwMEJEQjExQSAvKiBT
dG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3
QjczMTIzRjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3QjczMTIzRDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIzQjI1Q0M4NTI1MDAzQjI3
OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3
QjczMTI0MDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRDkyQTc4MzIxMkI2QTcxMDBGNDkzRkQgLyogU3RyaW5nUmVmZXJl
bmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUxMjEyNkEyODIwMDZGODg3OCAvKiBV
bmlmaWVkU291cmNlMS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUyMjEyNkEyODIw
MDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IGYyOWJlMDA2ZWI3Yjk3NjRiNzgy
ZDkxNjI1YzgwMTYwZmY4ZjM2ZjMuLmIxOWJjMWUwYTAxOTA3ZjljZWRkNjBhNTY1NzVmYWRmNWM5
ZDg4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAt
NDgsMTMgKzQ4LDE2IEBAIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcykpOwogfQogCitzdGF0
aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjE7CisKIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQogICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UoYXR0cnMpCiAgICAgLCBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKCZncHVQcm9jZXNz
Q29ubmVjdGlvbikKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihncHVQcm9jZXNzQ29ubmVjdGlv
bi5jb25uZWN0aW9uKCksIGRlZmF1bHRTdHJlYW1TaXplKQogewogICAgIGdwdVByb2Nlc3NDb25u
ZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7CiAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCwgSVBDOjpTZW5kT3B0
aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IG1fc3RyZWFtQ29ubmVjdGlvbi5zdHJlYW1CdWZmZXIoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6
RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKQpA
QCAtMTYzLDcgKzE2Niw3IEBAIEdDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmdldEVycm9yKCkKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Vycm9yV2hlbkNvbnRleHRJ
c0xvc3QsIE5PX0VSUk9SKTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9u
cywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlJiYg
c2VtYXBob3JlLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0
ZWRFeHRlbnNpb25zKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE3Miw2ICsxNzUsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcmJiBhdmFpbGFibAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIEFTU0VSVCghbV9kaWRJbml0aWFsaXplKTsKKyAgICBtX3N0cmVh
bUNvbm5lY3Rpb24uc2V0V2FrZVVwU2VtYXBob3JlKFdURk1vdmUoc2VtYXBob3JlKSk7CiAgICAg
bV9kaWRJbml0aWFsaXplID0gdHJ1ZTsKICAgICBpbml0aWFsaXplKGF2YWlsYWJsZUV4dGVuc2lv
bnMsIHJlcXVlc3RlZEV4dGVuc2lvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuaAppbmRleCA4MzFiNGIwYWIxMzdlNmFhZjgzNTk2ZTBiMGEwNzZkZjFlMDkxNzYx
Li43ODk3ZjZjZmU4M2NlYzU1ZmZhMmY2M2E5NzRmYWE3ZjAxM2FhOTE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMjksMTAgKzI5LDExIEBACiAKICNpbmNs
dWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmgiCisjaW5jbHVkZSAiU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlC
YXNlLmg+CkBAIC0zMzQsMTkgKzMzNSwxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQog
ICAgIHsKLSAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi5zZW5kKFdURk1vdmUobWVz
c2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFdBUk5fVU5VU0VEX1JFVFVS
TiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0
eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbm5lY3Rp
b24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9ncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICAgICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKHJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIGRlZmF1bHRT
ZW5kVGltZW91dCk7CiAgICAgfQogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKTsgfQogCiBw
cml2YXRlOgogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgd2FzQ3Jl
YXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmlu
ZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIHZvaWQgd2FzQ3JlYXRlZChib29sIGRpZFN1
Y2NlZWQsIElQQzo6U2VtYXBob3JlJiYsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0
cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOwogICAgIHZvaWQgd2FzTG9zdCgpOwogICAgIHZv
aWQgd2FzQ2hhbmdlZCgpOwogCkBAIC0zNjAsOCArMzYwLDggQEAgcHJpdmF0ZToKICAgICBHUFVQ
cm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBib29sIG1fZGlk
SW5pdGlhbGl6ZSB7IGZhbHNlIH07CiAgICAgR0NHTGVudW0gbV9lcnJvcldoZW5Db250ZXh0SXNM
b3N0ID0gTk9fRVJST1I7Ci0KICAgICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI6Omdl
bmVyYXRlKCkgfTsKKyAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gbV9zdHJlYW1Db25u
ZWN0aW9uOwogfTsKIAogLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQg
SVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IGE3YzY0MTJhYzk0NmUyNThjZTAxMzhiYzQ3YmMzODYyMTk1MDIxZDcuLmY0M2Vj
MGEyZWFhMzg0ZTRlZGU4ZGQ0NDBkOWVmZTAyOGFjYjdiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAogbWVzc2FnZXMg
LT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lk
IFdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywg
U3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0NyZWF0ZWQoYm9vbCBk
aWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSBzdHJlYW1XYWtlVXBTZW1hcGhvcmUsIFN0cmluZyBh
dmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zKQogICAgIHZv
aWQgV2FzTG9zdCgpCiAgICAgdm9pZCBXYXNDaGFuZ2VkKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCmluZGV4IDdhYWQ3ZGEyMDcwZGU4M2QxNGM3MWRkOTgy
NDc0YWFmMTA2YTdkYjUuLmYxMzQxZGNkMjc2ZDBjMTAxZTQ0YmRkYTE3Y2U0MGI4YTNjYjM2MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRXh0ZW5zaW9uVHlwZXMuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdv
cmsuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENO
ZXR3b3JrLmgKaW5kZXggYmJlN2ZjMjZjZjMyMzQ2Njk1ZTYxZmQwMWQ2YTBiMjMyZGUwZDE4OC4u
YTYxMWRhYmY0ZWJiNTZlN2E0MjU5NGRkN2JkM2JiMGM4MWE1YzgwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0
d29yay5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRD
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmgiCiAjaW5jbHVk
ZSAiV2ViTUROU1JlZ2lzdGVyLmgiCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggN2EzNDA4OGYwZGZlMThmZTdiMTE0YWMxYjAzOGJkNzhiMjRjMDMw
ZC4uNDBiNWU4NzRlMTBhYzIwMjVlOWY1NTNkYWJlZjY0NTVlYzg5NmRmNyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDIxLTAyLTA1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgV2ViR0wgR1BVIHByb2Nlc3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5
bmNocm9ub3VzIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTk2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hcmsgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgbWVzc2FnZSByZWNlaXZlciBhcyAiU3RyZWFtIiwKKyAgICAgICAg
YSBuZXcgdmFyaWFudCBvZiByZWNlaXZlci4KKworICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbDoKKwogMjAyMS0wMi0xNiAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBh
cHBsZS5jb20+CiAKICAgICAgICAgVXNlIG1ha2VKU0FycmF5IGluIGJvdGggQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy9JT1MubW0uCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKaW5kZXggNTY4
NWU5MDc1MzUzZmQxZDJjZWE5NDYyMDZiNTdlNDhiNDI2NjNmZC4uODM0NjI4MjM0MDFjMTY4MzA3
MjJhZWIzNTQ1ZWNmZWVmYjY0YTg4MyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbApAQCAt
ODksNyArODksNyBAQCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlID0gKAogICAgIHRlbXBsYXRl
X3ByZWFtYmxlCiAgICAgKyAiIiIjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VC
R0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQg
e3sKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3Ry
ZWFtIHt7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFj
aFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA2ZTc0NzlhMmU2
NTllM2E3ODMwNmQzMDRiZDIxOTNhMDIxZjY1MmUuLmFkYTVkYzg3MjQ0M2M3N2FiYTRkMjM4MGNm
NjI4ZTRhMDY3NWViMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMi0xNyAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIEdQVSBwcm9j
ZXNzIElQQyBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIGFzeW5jaHJvbm91cyBtZXNzYWdl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NjQx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM0MDY1MT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIGZldyB0ZXN0cyBhcyBub3QgdGltaW5n
IG91dCBub3cgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm90IHNvIHNsb3cuCisKKyAgICAg
ICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTAyLTE2ICBNYW51ZWwg
UmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtzZWxlY3RvcnNd
IDpmb2N1cy12aXNpYmxlIHBhcnNpbmcgYW5kIGV4cGVyaW1lbnRhbCBmbGFnCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
Z3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzYjkwYzJhYmFjMWFmZTM1ZGY4NjRh
NGFiYjkzYWJiMDAyOTBmYWE0Li5mM2FmOTNjNTk2YzdkM2EwMWRkNzI5MWM5MDRiZDJkMDBlZjk4
MGQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM0LDcg
KzM0LDcgQEAgZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyRC1tc2UtZmxpcFktdHJ1ZS5odG1s
IFsgRmFpbHVyZSBdCiBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELXZpZGVvLWZsaXBZLWZh
bHNlLmh0bWwgWyBUaW1lb3V0IF0KIGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQtdmlkZW8t
ZmxpcFktdHJ1ZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLWFj
dGl2ZS1iaW5kLmh0bWwgWyBGYWlsdXJlIF0KLWZhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tc2Ft
cGxlcnMtdGVzdC5odG1sIFsgVGltZW91dCBdCitmYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLXNh
bXBsZXJzLXRlc3QuaHRtbCBbIFNsb3cgXQogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2xjb250ZXh0
Y2hhbmdlZGV2ZW50Lmh0bWwgWyBUaW1lb3V0IF0KIAogZmFzdC9kb20vbmF2aWdhdG9yLWRldGFj
aGVkLW5vLWNyYXNoLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTIzMCw3ICsyMzAsNiBAQCB3ZWJnbC8x
LjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtY2FudmFz
Lmh0bWwgWyBGYWlsdXJlCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10
ZXh0dXJlLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29u
Zm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgtY2FudmFzLmh0
bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRl
eHR1cmUtaGFsZi1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmdsLzEuMC4z
L2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tYW55LWRyYXctY2FsbHMuaHRtbCBbIFRpbWVvdXQgXQog
d2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sIFsg
VGltZW91dCBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy9nbC1waXhlbHN0b3Jl
aS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1yZ2I1NjUuaHRtbCBbIEZhaWx1cmUg
XQpAQCAtMjQ5LDcgKzI0OCw3IEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3Rl
eC1pbWFnZS13ZWJnbC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90
ZXh0dXJlcy90ZXhwYXJhbWV0ZXItdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9j
b25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLWFjdGl2ZS1iaW5kLTIuaHRtbCBbIEZhaWx1cmUg
XQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1hY3RpdmUtYmluZC5o
dG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3Jt
LXNhbXBsZXJzLXRlc3QuaHRtbCBbIFRpbWVvdXQgXQord2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uv
dW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBTbG93IF0KIHdlYmdsLzIuMC4w
L2NvbmZvcm1hbmNlL2NhbnZhcy9jYW52YXMtdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8y
LjAuMC9jb25mb3JtYW5jZS9jYW52YXMvZHJhdy1zdGF0aWMtd2ViZ2wtdG8tbXVsdGlwbGUtY2Fu
dmFzLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvY2FudmFz
L2RyYXctd2ViZ2wtdG8tY2FudmFzLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMjYxLDcgKzI2
MCw2IEBAIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxv
YXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9l
eHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0aC1jYW52YXMuaHRtbCBbIEZhaWx1
cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxm
LWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFu
Y2UvcmVhZGluZy9yZWFkLXBpeGVscy10ZXN0Lmh0bWwgWyBGYWlsdXJlIF0KLXdlYmdsLzIuMC4w
L2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tYW55LWRyYXctY2FsbHMuaHRtbCBbIFRpbWVvdXQgXQog
d2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sIFsg
VGltZW91dCBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXMvdGV4LTJk
LXJnYi1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25m
b3JtYW5jZS90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82
XzUuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMjg3LDcgKzI4NSw3IEBAIHdlYmdsLzIuMC4wL2NvbmZv
cm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9zaG9y
dF81XzZfCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4
LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4w
L2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2JhLXVuc2ln
bmVkX3Nob3J0XzRfNF80XzQuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFu
Y2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRf
NV81XzVfMS5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS91bmlmb3Jt
cy91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFRpbWVvdXQgXQord2ViZ2wvMi4wLjAvY29u
Zm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBTbG93IF0KIHdl
YmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9yZWFkaW5nL3JlYWQtcGl4ZWxzLXBhY2stcGFyYW1ldGVy
cy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvc3RhdGUvZ2wtb2Jq
ZWN0LWdldC1jYWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIv
dGV4dHVyZXMvY2FudmFzL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRtbCBbIEZh
aWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420625</attachid>
            <date>2021-02-17 03:34:02 -0800</date>
            <delta_ts>2021-02-17 03:50:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210217133359.patch</filename>
            <type>text/plain</type>
            <size>163966</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjNDg4MWE0MDdiNmI0NjYz
N2U1MzM0MGMyZGEwZmE5ZjQ2MGJiNDEuLmNkNmM5N2RkZjZlNjY1YjU5NTczZjMzY2ZmMWVmNTcz
M2FlMDdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2Vz
IGFuZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJl
Y2VpdmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNl
aXZlZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAg
cHJvY2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVu
dGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hy
b25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQg
dGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhh
dmluZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAg
IGluIHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0
IGluIGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBv
bmUgMm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJl
IHdpbGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24K
KyAgICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFy
IHRocmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJv
cHRpbWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAg
cHJvY2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2Ug
dG8gaGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGlj
aXBhdGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8g
c2FtZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1p
emF0aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFz
IHBhcnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAg
IEluIEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sg
cXVldWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQg
d2lsbCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24g
cGVyIGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAg
ICBTZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRp
b24gd2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYg
dGhlIG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUg
aXQgdGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91
dCBvZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9u
IGFycml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAg
ICBtZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2ls
bCBzdG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxs
IGNvbnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4g
cHJvY2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0
cmVhbSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1l
c3NhZ2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMg
c2VuZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0g
Y29ubmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9y
ZS4gVGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlz
IHdhaXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6
CisgICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAg
cG9pbnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAg
IC0gV2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2gg
fjYwZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVl
VW5pbml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4g
dGhlIHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0
aW9ucyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1
ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpzZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVl
dWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBtdWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0
aGUgSVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmls
aXR5IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xp
ZW50LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6
CisgICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNv
bnN0cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZm
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAo
SVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNw
ZWNpZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFy
ZSB1bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRo
cm91Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAg
ICAgVGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBp
cyByZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2Fz
ZSB3aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRo
ZSBzdHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAg
ICAgICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2Fr
ZXVwIHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNl
bWFwaG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24u
IEFsbCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2
ZSB0aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhl
eSBoYXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVz
dGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rp
b246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dCBjb25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0
YSB0aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVN
ZW1vcnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAo
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0
aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZl
ci4KKyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90
aCB0aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4K
KyAgICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1
cCwgdGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFs
bCB0aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAi
aG9sZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBv
ZiAiYnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAg
ICAgIGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBj
b250YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAg
ICAgRm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBw
cm9jZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUg
b2YgdGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwg
c2xlZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3
aWxsIHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdp
bGwgd2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9m
ZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXpl
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
cyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9j
ZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1l
c3NhZ2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUg
bWVzc2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRo
ZSBidWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRo
YXQgdGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1h
bCBJUEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3Nh
Z2UgdW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdT
dHJlYW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFz
CisgICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxs
IG1lc3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1l
c3NhZ2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAg
ICAgIGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUg
c3RyZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJ
UEMgbWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNz
ZWQuCisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0
aW9uSUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJl
YW0gbWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAg
ICAgIHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJl
YW1EZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVk
LgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZm
ZXI6OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5
bmNocm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToK
KyAgICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0
IG9mIHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6
On5TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZSk6CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVs
ZCBzaW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0x
NiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgYnVpbGQgZml4IGFmdGVyIHIyNzI5MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkNTc3ZTQzNDk5ZjE4
MTQ3OTFjOGEwZWY3MWNiMzRhMDI0YTFmYWUyLi5kYjc3MjM4MTQ0Y2E4YTMwZmY2ZWFjOWY4MmY1
YzQ5ZGNkMjFiMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2Rl
ckFWRlByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogewogICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0o
KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAgICAgIHJldHVybiBJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zMjYsMjEgKzMyNiwxMSBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAotR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RGTW92
ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25uZWN0
KCk7Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUo
c3RyZWFtKSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWJiMGQwMDhmM2Q3MTI5MjE3YjhlOTZl
ZmExOWJkNTFmZmFmYTE2Ny4uZDAyZTk3ODc3NTdjZDZmYzQ1YTlmOTg5NmU1YjExODdmOTViN2Jl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNz
aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKIAogI2luY2x1ZGUgPFdl
YkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWlu
Z01hbmFnZXIuaD4KQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtMjA2LDIwICsyMDcsMTAg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9Owog
I2VuZGlmCiAKLSAgICBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7Ci0gICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOwot
ICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoKTsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBI
YXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKKyAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKICNp
ZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBI
YXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CiAgICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKICNl
bmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDMwZjVjMjk4ODYyMTRmOTEwNGYxYWZhMDgzNWIyMzhhMzZkYzZlZjEuLmY2MzBi
MWJhZmUwZDJjMmVjNDAwMzdkOWE3YTdjNzIzZDI1OTk5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5n
QmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQ
Qzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgIHZvaWQgUmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRl
cywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQogICAgIHZvaWQg
UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNlbmRpZgogICAgIHZvaWQgQ2xlYXJO
b3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA3OWIzNDU5NmZi
ZjJkMGRmYzk4MTg2NTFiZGNmZWI0YjBhMGM4NzVkLi4xM2ViMWUyZjU3MTMzMDI3M2Q4NTdkNTMy
NWQzMTdiMzdlZDE1Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTMxLDU1ICsz
MSw3NyBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBvbmUgZ2xvYmFsIFdlYkdMIHByb2Nl
c3NpbmcgaW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiBy
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZT4gaW5zdGFuY2UoIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsKKyAgICByZXR1cm4gaW5zdGFuY2Uu
Z2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJikK
IHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNl
bmRpZgogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92
ZShjb250ZXh0KSkKLSAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0
cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0p
CisgICAgOiBtX3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMPjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3Ry
ZWFtV29ya1F1ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAg
ICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhp
cyk7Ci0gICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwotICAgIFN0cmluZyBleHRlbnNp
b25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMp
OwotICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmlu
ZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwg
ZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQogewotICAgIGlmIChh
dXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmdldCgpKQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVCghbV9zdHJlYW1Db25uZWN0aW9uKTsKKyAg
ICBBU1NFUlQoIW1fY29udGV4dCk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKLSAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmdldCgpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAg
cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbYXR0cmli
dXRlcyA9IFdURk1vdmUoYXR0cmlidXRlcyksIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlSW5pdGlhbGl6
ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICB9KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24t
PnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAg
ICAgIHJldHVybiAmZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOwotICAg
IHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9z
dHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3Ry
ZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHJlZkZyb21D
b25uZWN0aW9uKV0oKSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtRdWV1ZVVuaW5pdGlh
bGl6ZSgpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3Jr
UXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0
dHJpYnV0ZXMpCit7CisgICAgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0
cmlidXRlcykpOworICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRD
bGllbnQoKnRoaXMpOworICAgICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0
U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICAgICAgU3RyaW5nIHJl
cXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6
UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSwgZXh0ZW5zaW9u
cywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFsc2UsIElQ
Qzo6U2VtYXBob3JlIHsgfSwgIiIsICIiKSk7CiB9CiAKLXVpbnQ2NF90IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVVbmluaXRpYWxpemUoKQogewotICAgIHJldHVy
biBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIG1fY29udGV4
dCA9IG51bGxwdHI7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKQEAgLTg4LDcgKzExMCw3
IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKQEAgLTk4LDcgKzEyMCw3IEBAIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMDAxNTlhYzhiNTg2YThiNjJhM2RkYTNhNTcw
MDRlODgzZTE1NmQwOC4uNTJlNDc2OTEwYTRlYWQwMDM5Y2UwYzFhYTU1ZTRmNDQ2YTA0OTU2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLQorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CkBAIC00OSwzMSArNDgsMjEgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0KIC8v
IEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdl
cyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBo
aWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KIC8vIFRo
ZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ci0gICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyCi0gICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpD
bGllbnQgeworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+LCBwcml2YXRlIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKIAotICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKyAg
ICAvLyBJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+
IHRlbXBsYXRlIGNvbnRyYWN0IGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgZGlkUmVjZWl2ZVN0
cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2Rl
ciYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVz
LgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBm
aW5hbDsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZp
bmFsOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgotICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAg
dm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsK
IAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQg
ZGlkQ29tcG9zaXRlKCkgZmluYWw7CkBAIC05NSw4ICs4NCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBO
T0xJTlQKIAotICAgIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250
ZXh0OwotICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOworICAgIHZvaWQgd29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3Jt
V29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JikgeyB9OworICAgIHZvaWQgd29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2UpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOyB9CisKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj4gbV9zdHJlYW1Db25uZWN0
aW9uOworICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250
ZXh0OwogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
bgppbmRleCA3YTE5MjVkYmIyN2FiZjNkMzAzNGNiN2ZjYjM4YTNmMzkzZTNkY2ZhLi40NzAyYzY0
Zjc1ZTQ3NmNmZjFhMTAwMDUwNzU1MDk2YmRjZTc4OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAvLyBUaGlzIGZpbGUgaXMg
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFJlc2hhcGUoaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQ
cmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNo
cm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggOGUyZDFmYzY1
MTg2MjgzOTVlOTc0MWM0NGU3YWM4NTFiMDhlZjYyNy4uYzRlNDExMjYxOTViMzUyOThhZWFmMmZj
YWVmMjBhZGZiNDMxZDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApA
QCAtMzksMTAgKzM5LDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wsIHByaXZh
dGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gewogcHVibGlj
OgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoKSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBvdmVycmlkZXMuCisgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOwogICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmln
aHQmJik+JiYpIGZpbmFsOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4gb3ZlcnJpZGVzLgpAQCAtNTYsMTYgKzU3LDIzIEBAIHByaXZhdGU6CiAKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcikKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2EoYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKSk7CisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3Rh
bmNlLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5j
ZTsKIH0KIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woYXR0cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykpCitSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgV1RGTW92ZShzdHJlYW0pKQogewogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQoreworICAgIG1fY29udGV4dCA9IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKFdURk1vdmUoYXR0cmlidXRlcyks
IHRoaXMpOworfQorCiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVy
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQogewogICAgIHJl
dHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5k
ZXggMmM3NjI1MTg2YWVlMTVkNzcyYjc2NGJkZDU1OWYwYTFjMjcwYmQ0MS4uYmI3NDIxYTdkNmZk
NGFhMjk3YTk2YjViMjc0ZGQ5OGQ2NGYwZGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApA
QCAtODMsNyArODMsNyBAQCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5n
QmFja2VuZCgpCiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtyZW1vdGVSZXNvdXJjZUNhY2hl
ID0gV1RGTW92ZShtX3JlbW90ZVJlc291cmNlQ2FjaGUpXSB7IH0pOwogfQogCi12b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpc2Nvbm5lY3QoKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCkBAIC0yNjgsNiArMjY4LDggQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3
YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXMKICAgICBh
dXRvIGluaXRpYWxIYW5kbGUgPSBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5nZXQoYXJndW1l
bnRzLml0ZW1CdWZmZXJJZGVudGlmaWVyKTsKICAgICBNRVNTQUdFX0NIRUNLKGluaXRpYWxIYW5k
bGUsICJNaXNzaW5nIGluaXRpYWwgc2hhcmVkIGRpc3BsYXkgbGlzdCBoYW5kbGUiKTsKIAorICAg
IEFTU0VSVCghbV9wZW5kaW5nV2FrZXVwSW5mbyk7CisKICAgICBkZXN0aW5hdGlvbkltYWdlQnVm
ZmVyID0gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3Rz
KCpkZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBhcmd1bWVudHMub2Zmc2V0LCAqaW5pdGlhbEhhbmRs
ZSwgYXJndW1lbnRzLnJlYXNvbik7CiAgICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBiN2FlZTI2Mjc3MDViYjlh
Y2MxMDE5ZDcxNTVlZjI3ZTE1M2QyYjI4Li5hNGFhN2I0Nzg3NTVhOWJiNWUyOTNmZDFiYzgyOGNj
ZGZlMjQ5NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKTsKICAgICB2aXJ0dWFsIH5SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKCk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAK
ICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4g
bV9yZW1vdGVSZXNvdXJjZUNhY2hlOyB9CiAKQEAgLTc4LDggKzc5LDYgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbik7CiAKLSAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKLQogcHJpdmF0ZToKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgK
aW5kZXggNDk3MTcxYjU2NDI2ODkyODk1MjEwNmJkN2VlYTU0YmVlOTNiZWUyMy4uYjBjZjcwZjA2
ZTExOGUwMjFkODY0ZGViOThkNDE0ZWZiYTllN2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpZiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENSZXNvbHZl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUlRDTW9uaXRvci5oIgogI2luY2x1ZGUg
IlJUQ05ldHdvcmsuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIu
aAppbmRleCAzMjA3NmFmZDAyYTg5OGExZTM5ZGUyODNlMTAyYjg1OTQ3ZjhlZGM3Li41MzM1MGY5
ZjdjOGMxMmJlNjI3NTk5OWM3ZWJmYzNjN2UwOTFiY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJE
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRz
Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNzUs
NiArNzYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBB
cmd1bWVudENvZGVyIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENv
ZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+
PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1
ZSksIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CkBAIC05MSw2ICs5Myw3IEBAIHN0cnVjdCBBcmd1
bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGlj
X3Y8VD4+PiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxU
LCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4geworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIFQgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51
bTxUPihXVEY6OmVudW1Ub1VuZGVybHlpbmdUeXBlPFQ+KHZhbHVlKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGIwYTQzZGU5ZDdhMTM3
MjE2YTE5YmY3ZDBiZDVlMTkxMTNiNWRhNjguLmFlZTg5ZTYyNjk2YzU2MGYwYTE4YmZiMWQ2NzY5
MTY1MGU3ZmYyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgog
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xMTEsNyArMTEyLDcgQEAgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgQXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENT
dHJpbmcKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVy
Pgogdm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBTcGVjaWFsIGNhc2UgdGhlIG51bGwgc3Ry
aW5nLgpAQCAtMTMwLDYgKzEzMSwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVsc2UKICAg
ICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFy
KSwgYWxpZ25vZihVQ2hhcikpOwogfQordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJp
bmc+OjplbmNvZGU8RW5jb2Rlcj4oRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwordGVtcGxhdGUK
K3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29k
ZXI+KFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIGlubGluZSBPcHRpb25hbDxTdHJpbmc+
IGRlY29kZVN0cmluZ1RleHQoRGVjb2RlciYgZGVjb2RlciwgdWludDMyX3QgbGVuZ3RoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjBlYjE3YTBm
ZDgyNjBkNDBiZWM3ZmNkYWFlYTIzYmM1ZTg2NWUwOS4uZjg1Njk4MDczZGQwNDViMjgxNmUxNjEw
Y2E0OTk2YTVkNGVlNmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVycy5oCkBAIC01NSw2ICs1NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBT
aW1wbGVBcmd1bWVudENvZGVyIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVu
dD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4gewogICAg
IHVzaW5nIEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkK
ICAgICB7CiAgICAgICAgIGlmICghRXh0ZW50KQpAQCAtNzQsNiArNzUsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVy
ZW5jZTxULCBFeHRlbgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+PiB7CiAgICAg
dXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVu
Y2VEeW5hbWljRXh0ZW50PjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5
cGUmIGFycmF5UmVmZXJlbmNlKQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI2Niw2ICsyNjgsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6
OnBhaXI8VCwgVT4+IHsKIAogdGVtcGxhdGU8c2l6ZV90IGluZGV4LCB0eXBlbmFtZS4uLiBFbGVt
ZW50cz4KIHN0cnVjdCBUdXBsZUVuY29kZXIgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29k
ZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6
dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3Rk
OjpnZXQ8c2l6ZW9mLi4uKEVsZW1lbnRzKSAtIGluZGV4Pih0dXBsZSk7CkBAIC0yNzUsNiArMjc4
LDcgQEAgc3RydWN0IFR1cGxlRW5jb2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1l
bnRzPgogc3RydWN0IFR1cGxlRW5jb2RlcjwwLCBFbGVtZW50cy4uLj4geworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYpCiAgICAgewogICAgIH0KQEAgLTMzOCw2ICszNDIs
NyBAQCBzdHJ1Y3QgVHVwbGVEZWNvZGVyPDA+IHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEVsZW1lbnRzPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4g
eworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkK
ICAgICB7CiAgICAgICAgIFR1cGxlRW5jb2RlcjxzaXplb2YuLi4oRWxlbWVudHMpLCBFbGVtZW50
cy4uLj46OmVuY29kZShlbmNvZGVyLCB0dXBsZSk7CkBAIC0zNzQsNiArMzc5LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXVEY6OktleVZhbHUKIHRlbXBsYXRlPGJvb2wgZml4ZWRTaXplRWxlbWVudHMsIHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBz
aXplX3QgbWluQ2FwYWNpdHk+IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFu
ZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2RlcjxmYWxz
ZSwgVCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+IHsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlciwgbWluQ2FwYWNpdHk+JiB2ZWN0b3IpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih2ZWN0b3Iuc2l6ZSgpKTsKQEAgLTQxMSw2ICs0MTcsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJm
bG93SGFuZGxlciwgc2l6ZV90IG1pbgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eT4gc3RydWN0IFZlY3RvckFyZ3VtZW50Q29kZXI8dHJ1ZSwgVCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiB2
ZWN0b3IpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2
ZWN0b3Iuc2l6ZSgpKTsKQEAgLTc1Myw2ICs3NjAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPENTdHJpbmc+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8U3RyaW5nPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFN0cmluZyYpOwogICAgIHN0YXRpYyBP
cHRpb25hbDxTdHJpbmc+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwCmluZGV4IDhiNzQzMTRhYzA0YTU1YTQ4YmQwOTM2MjljMzYyMjA3
MWUwZjJjNTAuLjFkMmVhNDg1YTk5OGFlMjY0NDZhM2FlNjAwZTA0ZjMwY2E4ZTFkNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCisjaW5jbHVk
ZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNz
YWdlRmxhZ3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIgpAQCAtOTMwLDgg
KzkzMSwxMyBAQCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYg
ZGVjb2RlcikKIAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwotCisgICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgeworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2Fn
ZU5hbWVdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPmlzVmFs
aWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5tX2NsaWVudC5kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UocHJvdGVjdGVkVGhpcywgbWVzc2Fn
ZU5hbWUpOworICAgICAgICB9KTsKKyAgICB9CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDQ4
NTUyMDEyNDdjMjVkZjg1NTJjNWE1NGEwNDY3N2I4ZDcyYjgyY2EuLmZlOWNhMzE4NjA2ZmRlZGM2
MWQyMWQwN2RmMGY4YWIxYmZlOTNiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmgKQEAgLTMwLDEwICszMCw5IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0j
aW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgpAQCAtMzEyLDYgKzMxMSw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJlY2VpdmVyJiwg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpOworICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBh
bnkgdGhyZWFkLgorICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVz
c2FnZU5hbWUpOwogcHJpdmF0ZToKICAgICBDb25uZWN0aW9uKElkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2ZXIsIENsaWVudCYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIp
OwpAQCAtMzM5LDcgKzM0MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShEZWNv
ZGVyJik7CiAgICAgdm9pZCBkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImKTsKLSAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKICAgICB2b2lk
IGRpZEZhaWxUb1NlbmRTeW5jTWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBh
bnkgdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCA4MGEw
Zjc1YzcwNTcyYmY0YzI0ODUyNmZlZDJmZWZiMDk3Y2RjOGY5Li40ZGUwNTA5OGM0NjMyYWQ0NWY0
ZTg1M2Y2N2U5ZWUzZTc3MTM2ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVy
LmNwcApAQCAtOTAsNiArOTAsMTcgQEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGUKICAgICAgICAg
bWFya0ludmFsaWQoKTsKIH0KIAorRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJl
YW0sIHNpemVfdCBzdHJlYW1TaXplLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgIDogbV9i
dWZmZXIgeyBzdHJlYW0gfQorICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CisgICAgLCBt
X2J1ZmZlckVuZCB7IG1fYnVmZmVyICsgc3RyZWFtU2l6ZSB9CisgICAgLCBtX2J1ZmZlckRlYWxs
b2NhdG9yKFtdIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KSB7IH0pCisgICAgLCBtX2Rlc3RpbmF0
aW9uSUQoZGVzdGluYXRpb25JRCkKK3sKKyAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkK
KyAgICAgICAgcmV0dXJuOworfQorCiBEZWNvZGVyOjp+RGVjb2RlcigpCiB7CiAgICAgQVNTRVJU
KG1fYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA2Njk4NWJj
Mzg3ZDc0MzkxMzcwMWIxMTdiOTE4MDBiOWEyNzcxYWI4Li5iM2M2YWM4YTJkNWFjYmEyYzIxNTI4
ZGZlYjE4YzY0MTVjZWRkMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBA
IC01MSw2ICs1MSw3IEBAIGNsYXNzIERlY29kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCosIHNp
emVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKICAgICBleHBsaWNpdCBEZWNvZGVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9j
YXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKKyAg
ICBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIH5EZWNvZGVyKCk7CiAKICAgICBEZWNvZGVyKGNvbnN0
IERlY29kZXImKSA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1l
c3NhZ2UuaAppbmRleCBlYThhZDQ1YzA5ZWI2ODJlMGU4NjIzYjkzNGQ1ZTBlOWM3MDI2MjJhLi45
Mjk2M2UyMWUxZDcxN2Y2NGE4MjE5YzUyODliYWYwNTNmMDk5NDg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNs
dWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0xNjQsNiArMTY1
LDI4IEBAIHZvaWQgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRlCiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNv
bm5lY3Rpb24sIFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBvYmplY3QsIGZ1bmN0aW9uKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
QywgdHlwZW5hbWUgTUY+Cit2b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0
LCBNRiBmdW5jdGlvbikKK3sKKyAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElEKSB7Cisg
ICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6
VHlwZT4gYXJndW1lbnRzOworICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOworICAgIGlmICghYXJn
dW1lbnRzKSB7CisgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxl
ciA9IFtzeW5jUmVxdWVzdElELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1
dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBs
eShzeW5jUmVxdWVzdElELCBhcmdzLi4uKTsKKyAgICB9OworICAgIGNhbGxNZW1iZXJGdW5jdGlv
bihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0
LCBmdW5jdGlvbik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVu
YW1lIE1GPgogdm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
RGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNl
aXZlUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2EwNTZhMDIwMWMyYWQwZTc0OTBlYzdkN2ZlYmJkZDc3
MTA5N2IxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0
eT4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgSVBDIHsKKworLy8gU2NvcGVkIGhvbGRlciBmb3Igb2JqZWN0cyB0aGF0IGhhdmUgYWN0
aXZlIG1lc3NhZ2UgcmVjZWl2ZSBxdWV1ZXMuIEVuZm9yY2VzIHRoYXQKKy8vIG9uY2UgaG9sZGVy
IHN0b3BzIGhvbGRpbmcgdGhlIG9iamVjdCwgdGhlIG1lc3NhZ2UgcXVldWUgc2hvdWxkIGJlIHJl
bW92ZWQuCisvLyBUaGUgY29udmVudGlvbiBpcyB0byBjYWxsIHN0b3BMaXN0ZW5pbmdGb3JJUEMo
KSBmb3IgdGhlIG9iamVjdC4KKy8vIE9wdGlvbmFsbHkgdGhlIG9iamVjdCBjYW4gb2J0YWluIHRo
ZSBvd25pbmcgcmVmZXJlbmNlIHRoYXQgd2FzIHVzZWQgdG8gaG9sZCB0aGUgb2JqZWN0CisvLyBp
biBvcmRlciB0byBhdHRlbXB0IHRvIGF2b2lkIG5lZWRsZXNzIGRlc3RydWN0aW9uIG9mIHRoZSBv
YmplY3QgaW4gaG9sZGVyIHRocmVhZC4KKy8vIFRoaXMgdXNlZnVsIGluIHRoZSBjYXNlIHRoZSBz
dG9wIGludm9rZXMgYSBjbGVhbnVwIHRhc2sgaW4gdGhlIG1lc3NhZ2UgaGFuZGxlcgorLy8gdGhy
ZWFkLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhvbGRlclR5cGUgPSBSZWZQdHI8
VD4+CitjbGFzcyBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAg
ICBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKCkgPSBkZWZhdWx0OworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBVPgorICAgIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoVSYm
IG9iamVjdCkKKyAgICAgICAgOiBtX29iamVjdChXVEZNb3ZlKG9iamVjdCkpCisgICAgeworICAg
IH0KKyAgICBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUmJiBvdGhlcikKKyAgICAgICAgOiBtX29iamVjdChzdGQ6OmV4Y2hhbmdl
KG90aGVyLm1fb2JqZWN0LCBudWxscHRyKSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWUmIG9wZXJhdG9yPShTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlJiYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAg
ICAgICAgICAgIHJlc2V0KCk7CisgICAgICAgICAgICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9vYmplY3QsIG51bGxwdHIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICB9CisgICAgflNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoKQorICAgIHsK
KyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAg
ICBpZiAoIW1fb2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdG9wTGlzdGVu
aW5nRm9ySVBDQW5kUmVsZWFzZShtX29iamVjdCk7CisgICAgfQorICAgIFQqIGdldCgpIGNvbnN0
IHsgcmV0dXJuIG1fb2JqZWN0LmdldCgpOyB9Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+CisgICAgc3RhdGljIGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYg
b2JqZWN0KSAtPiBkZWNsdHlwZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0LnJl
bGVhc2VOb25OdWxsKCkpLCB2b2lkKCkpCisgICAgeworICAgICAgICBvYmplY3QtPnN0b3BMaXN0
ZW5pbmdGb3JJUEMob2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxl
YXNlKFUmIG9iamVjdCkgLT4gZGVjbHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKFdU
Rk1vdmUob2JqZWN0KSksIHZvaWQoKSkKKyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3Rl
bmluZ0ZvcklQQyhXVEZNb3ZlKG9iamVjdCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPgorICAgIHN0YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9i
amVjdCkgLT4gZGVjbHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKCksIHZvaWQoKSkK
KyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQygpOworICAgICAgICBv
YmplY3QgPSBudWxscHRyOworICAgIH0KKyAgICBIb2xkZXJUeXBlIG1fb2JqZWN0OworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoc3Rk
Ojp1bmlxdWVfcHRyPFQ+JiYpIC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwg
c3RkOjp1bmlxdWVfcHRyPFQ+PjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Njb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVmPFQ+JiYpIC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNl
aXZlUXVldWU8VCwgUmVmUHRyPFQ+PjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGY1Y2Rm
MDA4ZTVhN2YyZDJmMTAyYTIzNWMzYzIyNTE3MzM3NmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
dHJlYW1DbGllbnRDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIHNpemVfdCBzaXplKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBt
X2J1ZmZlcihzaXplKQoreworICAgIC8vIFJlYWQgc3RhcnRzIGZyb20gMCB3aXRoIGxpbWl0IG9m
IDAgYW5kIHJlYWRlciBzbGVlcGluZy4KKyAgICBzaGFyZWRTZW5kZXJPZmZzZXQoKS5zdG9yZShT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcs
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAg
d2l0aCBhIGxpbWl0IG9mIHRoZSB3aG9sZSBidWZmZXIuCisgICAgc2hhcmVkUmVjZWl2ZXJPZmZz
ZXQoKS5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30KKwordm9pZCBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBz
ZW1hcGhvcmUpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUg
PSBXVEZNb3ZlKHNlbWFwaG9yZSk7CisjZW5kaWYKKyAgICB3YWtlVXBSZWNlaXZlcigpOworfQor
Cit2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Ondha2VVcFJlY2VpdmVyKCkKK3sKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBpZiAobV93YWtlVXBTZW1hcGhvcmUpCisgICAgICAgIG1fd2Fr
ZVVwU2VtYXBob3JlLT5zaWduYWwoKTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWRmZmZlZWYzYTA5OTVhMWIxODJhNWNmOWU4NjA3MDA5ODZiYzUxZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApA
QCAtMCwwICsxLDI0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVj
b2Rlci5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1l
cy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJl
YW1Db25uZWN0aW9uRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorbmFtZXNwYWNlIElQQyB7CisKKy8vIEEgbWVzc2Fn
ZSBzdHJlYW0gaXMgYSBoYWxmLWR1cGxleCB0d28td2F5IHN0cmVhbSBvZiBtZXNzYWdlcyB0byBh
IGJldHdlZW4gYSBzZW5kZXIgYW5kIHRoZQorLy8gZGVzdGluYXRpb24gcmVjZWl2ZXIuCisvLwor
Ly8gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBjYW4gc2VuZCBtZXNzYWdlcyBhbmQgcmVjZWl2ZSBz
eW5jaHJvbm91cyByZXBsaWVzCisvLyB0aHJvdWdoIHRoaXMgbWVzc2FnZSBzdHJlYW0gb3IgdGhy
b3VnaCBJUEM6OkNvbm5lY3Rpb24uCisvLworLy8gVGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdp
bGwgcmVjZWl2ZSBtZXNzYWdlcyBpbiBvcmRlciBfZm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdl
c18uCisvLyBUaGUgd2hvbGUgSVBDOjpDb25uZWN0aW9uIG1lc3NhZ2Ugb3JkZXIgaXMgbm90IHBy
ZXNlcnZlZC4KKworY2xhc3MgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBmaW5hbCB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtQ2xpZW50Q29ubmVjdGlvbik7CitwdWJsaWM6CisgICAg
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiwgc2l6ZV90IGJ1ZmZlclNpemUpOwor
CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgc3RyZWFtQnVmZmVyKCkgeyByZXR1cm4gbV9i
dWZmZXI7IH0KKyAgICB2b2lkIHNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGJvb2wgc2VuZChUJiYgbWVz
c2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQp
OworCisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3Vs
dDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIFNlbmRTeW5jUmVz
dWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCBPYmplY3RJZGVu
dGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKK3ByaXZhdGU6Cisg
ICAgc3RydWN0IFNwYW4geworICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXplX3Qg
c2l6ZTsKKyAgICB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdl
U2l6ZSA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyOjptZXNzYWdlQWxpZ25tZW50OworICAgIGJvb2wgdHJ5U2VuZERlc3RpbmF0aW9u
SURJZk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIHRpbWVvdXQp
OworICAgIHZvaWQgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmKTsKKworICAg
IE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KTsKKyAgICBl
bnVtIGNsYXNzIFdha2VVcFJlY2VpdmVyIDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAgICBZ
ZXMKKyAgICB9OworICAgIFdha2VVcFJlY2VpdmVyIHJlbGVhc2Uoc2l6ZV90IHdyaXRlU2l6ZSk7
CisgICAgdm9pZCB3YWtlVXBSZWNlaXZlcigpOworCisgICAgU3BhbiBhbGlnbmVkU3BhbihzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBzaXplKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVk
TGltaXQpIGNvbnN0OworCisgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNldChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFs
aWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zm
c2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAg
IEF0b21pYzxzaXplX3Q+JiBzaGFyZWRTZW5kZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5z
ZW5kZXJPZmZzZXQoKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNl
dCgpIHsgcmV0dXJuIG1fYnVmZmVyLnJlY2VpdmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQorCisgICAgQ29ubmVj
dGlvbiYgbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQg
eyAwIH07CisKKyAgICBzaXplX3QgbV9zZW5kZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPcHRpb25h
bDxTZW1hcGhvcmU+IG1fd2FrZVVwU2VtYXBob3JlOworI2VuZGlmCit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5k
KFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFUOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5
bmMhIik7CisgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1l
Ojpub3coKSArIHRpbWVvdXQ7CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVk
KGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsK
KyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB7CisgICAgICAgIFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG1lc3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBzcGFuLT5k
YXRhLCBzcGFuLT5zaXplIH07CisgICAgICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBtZXNzYWdl
LmFyZ3VtZW50cygpKSB7CisgICAgICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2Uo
bWVzc2FnZUVuY29kZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0g
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAgICAgICAg
ICAgICB3YWtlVXBSZWNlaXZlcigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9CisgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3Bh
bikpOworICAgIGlmICghbV9jb25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGlu
YXRpb25JRCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpTZW5kU3luY1Jlc3VsdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBk
ZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpCit7CisgICAgc3RhdGljX2Fzc2VydChUOjpp
c1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOworICAgIE1vbm90b25pY1RpbWUgYWJzb2x1
dGVUaW1lb3V0ID0gTW9ub3RvbmljVGltZTo6bm93KCkgKyB0aW1lb3V0OworICAgIGlmICghdHJ5
U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZChkZXN0aW5hdGlvbklELnRvVUludDY0KCksIGFic29s
dXRlVGltZW91dCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byBzcGFuID0gdHJ5QWNx
dWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHNlbmQgdGhyb3VnaCBzdHJlYW0uCisgICAgLy8g
RklYTUU6IGltcGxlbWVudCByZWNlaXZlIHRocm91Z2ggc3RyZWFtLgorICAgIHNlbmRQcm9jZXNz
T3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoKnNwYW4pKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
Y29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVz
dGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKKyAgICBBU1NFUlQocmVzdWx0KTsKKyAg
ICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworfQorCitpbmxpbmUgYm9vbCBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjp0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0KQoreworICAgIGlmIChkZXN0aW5h
dGlvbklEID09IG1fY3VycmVudERlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNw
YW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBl
bmNvZGVyIHsgTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQsIHNwYW4tPmRhdGEs
IHNwYW4tPnNpemUgfTsKKyAgICBpZiAoIShlbmNvZGVyIDw8IGRlc3RpbmF0aW9uSUQpKSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBTaXplIG9mIHRoZSBtaW5pbXVtIGFsbG9j
YXRpb24gaXMgaW5jb3JyZWN0LiBMaWtlbHkgYW4gYWxpZ25tZW50IGlzc3VlLgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShlbmNv
ZGVyLnNpemUoKSk7CisgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpXYWtlVXBSZWNlaXZlcjo6WWVzKQorICAgICAgICB3YWtlVXBSZWNlaXZlcigpOworICAg
IG1fY3VycmVudERlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgIHJldHVybiB0cnVl
OworfQorCitpbmxpbmUgdm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091
dE9mU3RyZWFtTWVzc2FnZShTcGFuJiYgc3BhbikKK3sKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5j
b2RlciBlbmNvZGVyIHsgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UsIHNw
YW4uZGF0YSwgc3Bhbi5zaXplIH07CisgICAgLy8gTm90IG5vdGlmeWluZyBvbiB3YWtlIHVwIHNp
bmNlIHRoZSBvdXQtb2Ytc3RyZWFtIG1lc3NhZ2Ugd2lsbCBkbyB0aGF0LgorICAgICh2b2lkKSBy
ZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKK30KK2lubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKE1vbm90
b25pY1RpbWUgdGltZW91dCkKK3sKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNpemVfdCBzZW5k
ZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChzaGFyZWRSZWNlaXZlck9mZnNldCgpLmxvYWQoc3RkOjpt
ZW1vcnlfb3JkZXJfYWNxdWlyZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFu
KG1fc2VuZGVyT2Zmc2V0LCBzZW5kZXJMaW1pdCk7CisgICAgICAgIGlmIChyZXN1bHQuc2l6ZSA8
IG1pbmltdW1NZXNzYWdlU2l6ZSkgeworICAgICAgICAgICAgYXV0byBub3cgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKKyAgICAgICAgICAgIGlmIChub3cgPj0gdGltZW91dCkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIHNpemVfdCBvbGRT
ZW5kZXJMaW1pdCA9IHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25n
KHNlbmRlckxpbWl0LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpyZWNlaXZlck9mZnNldFNlbmRl
cklzV2FpdGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3Jk
ZXJfYWNxX3JlbCk7CisgICAgICAgICAgICBpZiAoc2VuZGVyTGltaXQgPT0gb2xkU2VuZGVyTGlt
aXQpCisgICAgICAgICAgICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLndhaXRG
b3IodGltZW91dCAtIG5vdyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBz
ZW5kZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChvbGRTZW5kZXJMaW1pdCk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKKyAg
ICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisjZW5kaWYK
KyAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXpl
KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVy
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnJlbGVhc2Uoc2l6ZV90IHNpemUpCit7CisgICAgc2l6
ZSA9IHN0ZDo6bWF4KHNpemUsIG1pbmltdW1NZXNzYWdlU2l6ZSk7CisgICAgc2l6ZV90IGV4cGVj
dGVkUmVjZWl2ZXJMaW1pdCA9IG1fc2VuZGVyT2Zmc2V0OworICAgIG1fc2VuZGVyT2Zmc2V0ID0g
d3JhcE9mZnNldChhbGlnbk9mZnNldChtX3NlbmRlck9mZnNldCkgKyBzaXplKTsKKyAgICBBU1NF
UlQobV9zZW5kZXJPZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICAvLyBJZiB0aGUgcmVjZWl2ZXIg
d3JvdGUgb3ZlciB0aGUgc2VuZGVyT2Zmc2V0IHdpdGggc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1Ns
ZWVwaW5nVGFnLCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgorICAgIHNpemVfdCByZWNlaXZlckxp
bWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkuZXhjaGFuZ2UobV9zZW5kZXJPZmZzZXQsIHN0ZDo6
bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgIGlmIChyZWNlaXZlckxpbWl0ICE9IGV4cGVjdGVk
UmVjZWl2ZXJMaW1pdCkKKyAgICAgICAgcmV0dXJuIFdha2VVcFJlY2VpdmVyOjpZZXM7CisgICAg
cmV0dXJuIFdha2VVcFJlY2VpdmVyOjpObzsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OlNwYW4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6YWxpZ25lZFNwYW4oc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxpbWl0KQoreworICAgIEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsK
KyAgICBBU1NFUlQobGltaXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBzaXplX3QgYWxpZ25lZCA9IGFs
aWduT2Zmc2V0KG9mZnNldCk7CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSAwOworICAgIGlmIChv
ZmZzZXQgPCBsaW1pdCkgeworICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgJiYgYWxpZ25l
ZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVk
IDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7
CisgICAgfQorICAgIHJldHVybiB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30K
KworaW5saW5lIHNpemVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzaXplKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAgICBpZiAoIWxpbWl0KQorICAgICAgICByZXR1cm4gZGF0
YVNpemUoKSAtIDEgLSBvZmZzZXQ7CisgICAgaWYgKGxpbWl0IDw9IG9mZnNldCkKKyAgICAgICAg
cmV0dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7CisgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0IC0g
MTsKK30KKworaW5saW5lIHNpemVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjbGFtcGVkTGlt
aXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdAoreworICAgIEFTU0VSVCh1bnRydXN0ZWRM
aW1pdCA8IChkYXRhU2l6ZSgpIC0gMSkpOworICAgIHJldHVybiBzdGQ6Om1pbih1bnRydXN0ZWRM
aW1pdCwgZGF0YVNpemUoKSAtIDEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5Nzlk
YWJlNjg5YWQ0NjI4ZTUyZGJkMWJhZTBmNjFmZTZkZTE2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApAQCAt
MCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IEZmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK3N0YXRpYyBSZWY8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk+IGNyZWF0ZU1lbW9yeShzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvIG1lbW9yeSA9IFdl
YktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplKTsKKyAgICBpZiAoIW1lbW9yeSkKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gbWVtb3J5LnJlbGVhc2VOb25OdWxsKCk7Cit9CisK
K1N0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoc2l6ZV90IG1l
bW9yeVNpemUpCisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisg
ICAgLCBtX3NoYXJlZE1lbW9yeShjcmVhdGVNZW1vcnkobWVtb3J5U2l6ZSkpCit7Cit9CisKK1N0
cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6
U2hhcmVkTWVtb3J5PiYmIG1lbW9yeSwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNl
bmRlcldhaXRTZW1hcGhvcmUpCisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJT
aXplKCkpCisgICAgLCBtX3NoYXJlZE1lbW9yeShXVEZNb3ZlKG1lbW9yeSkpCisgICAgLCBtX3Nl
bmRlcldhaXRTZW1hcGhvcmUoV1RGTW92ZShzZW5kZXJXYWl0U2VtYXBob3JlKSkKK3sKK30KKwor
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyJiYgb3RoZXIpID0gZGVmYXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6flN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoKSA9IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rp
b25CdWZmZXImIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAg
IG1fZGF0YVNpemUgPSBvdGhlci5tX2RhdGFTaXplOworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9
IFdURk1vdmUob3RoZXIubV9zaGFyZWRNZW1vcnkpOworICAgICAgICBtX3NlbmRlcldhaXRTZW1h
cGhvcmUgPSBXVEZNb3ZlKG90aGVyLm1fc2VuZGVyV2FpdFNlbWFwaG9yZSk7CisgICAgfQorICAg
IHJldHVybiAqdGhpczsKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFu
ZGxlIGhhbmRsZTsKKyAgICBpZiAoIW1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxl
LCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAg
Q1JBU0goKTsKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZSB7
IFdURk1vdmUoaGFuZGxlKSwgbV9zaGFyZWRNZW1vcnktPnNpemUoKSB9OworICAgIGVuY29kZXIg
PDwgaXBjSGFuZGxlOworICAgIGVuY29kZXIgPDwgbV9zZW5kZXJXYWl0U2VtYXBob3JlOworfQor
CitPcHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlPiBpcGNIYW5kbGU7CisgICAgZGVjb2RlciA+PiBpcGNIYW5kbGU7
CisgICAgaWYgKCFpcGNIYW5kbGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
T3B0aW9uYWw8U2VtYXBob3JlPiBzZW1hcGhvcmU7CisgICAgZGVjb2RlciA+PiBzZW1hcGhvcmU7
CisgICAgaWYgKCFzZW1hcGhvcmUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
c2l6ZV90IGRhdGFTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUtPmRhdGFTaXpl
KTsKKyAgICBpZiAoZGF0YVNpemUgPCBoZWFkZXJTaXplKCkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
bWFwKGlwY0hhbmRsZS0+aGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZFdyaXRlKTsKKyAgICBpZiAoc2hhcmVkTWVtb3J5LT5zaXplKCkgPCBkYXRhU2l6ZSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciB7IHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhU2l6ZSwgIFdURk1vdmUo
KnNlbWFwaG9yZSkgfTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3N2YyY2IxZWMwNzkzNWZj
YzgwYWQ1ZjI0NDRhZGVmZmIwMzk0NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKQEAgLTAsMCArMSwxMjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNs
dWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRl
IDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2Ug
SVBDIHsKKworLy8gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBpcyBhIHNoYXJlZCAiYmktcGFydGl0
ZSIgY2lyY3VsYXIgYnVmZmVyIHN1cHBvcnRpbmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdl
cywgc3BlY2lmaWMgZGF0YSBhbGlnbm1lbnQgd2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUuCisv
LyBTdHJlYW1DbGllbnRDb25uZWN0aW9uIGFuZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHVzZSBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyIHRvIGNvbW11bmljYXRlLgorLy8KKy8vIFRoZSAiYmktcGFy
dGl0ZSIgaXMgaGVyZSB0byBtZWFuIHRoYXQgd3JpdGVzIGFuZCByZWFkcyB0byB0aGUgYnVmZmVy
IG11c3QgYmUKKy8vIGNvbnRpbnVvdXMuCisvLworLy8gVGhlIGNsaWVudCAoc2VuZGVyIG9yIHJl
Y2VpdmVyKSAiYWNxdWlyZXMiIHNvbWUgYW1vdW50IG9mIGJ1ZmZlciBkYXRhLiBJZiBidWZmZXIg
aGFzIG5vCisvLyBjYXBhY2l0eSwgYWNxdWlyZSByZXR1cm5zIHdpdGggemVybyBjYXBhY2l0eS4g
SWYgYnVmZmVyIGhhcyBhdCBsZWFzdCBhY3F1aXJlZAorLy8gY2FwYWNpdHksIGFsbCB0aGUgYXZh
aWxhYmxlIGNhcGFjaXR5IGlzIHJldHVybmVkLgorLy8KKy8vIFRoZSBjbGllbnQgInJlbGVhc2Vz
IiB0aGUgc29tZSBhbW91bnQgb2YgZGF0YSwgYXQgbGVhc3QgdGhlIGFtb3VudCBhY3F1aXJlZCBi
dXQgcG90ZW50aWFsbHkKKy8vIG1vcmUuCisvLworLy8gQm90aCBzZW5kZXIgYW5kIHJlY2VpdmVy
IG11c3QgYWNxdWlyZSBzYW1lIGFtb3VudCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhl
IGFjcXVpcmUgc2VxdWVuY2UuCisvLyBJZiBzZW5kZXIgYWNxdWlyZXMgWCBhbmQgdGhlbiBZIGFt
b3VudCwgcmVjZWl2ZXIgbXVzdCBkbyB0aGUgc2FtZS4KKy8vCisvLyBUaGUgY2lyY3VsYXIgYnVm
ZmVyIGhhcyBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRoZSBk
YXRhIGJldHdlZW4gW3NlbmRlck9mZnNldCwgcmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9m
ZnNldCA9PQorLy8gcmVjZWl2ZXJPZmZzZXQsIHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4KKy8v
ICogUmVjZWl2ZXIgb3ducyB0aGUgZGF0YSBiZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVy
T2Zmc2V0Wy4KKy8vICogVGhlIGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZh
bHVlcy4gVGhlIGxhc3QgdmFsdWUgaXMgcmVzZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRoYXQg
dGhlIGJ1ZmZlciBpcyBmdWxsLiBGSVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1l
bnRhdGlvbiBpZgorLy8gaXQgd291bGQgdXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9mIHRo
ZSBob2xlIGFzIHRoZSBpbmRpY2F0b3IuIFRoaXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWduZWRT
cGFuIGltcGxlbWVudGF0aW9uIHRvIHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgorLy8gKiBB
bGwgYXRvbWljIHZhcmlhYmxlIGxvYWRzIGFyZSB1bnRydXN0ZWQsIHNvIHRoZXkncmUgY2xhbXBl
ZC4gVmlvbGF0aW9ucyBhcmUgbm90IHJlcG9ydGVkLAorLy8gdGhvdWdoLgorLy8gU2VlIFNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlLgorY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6
ZSk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYp
OworICAgIH5TdHJlYW1Db25uZWN0aW9uQnVmZmVyKCk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYgb3BlcmF0b3I9KFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisKKyAgICBzaXplX3Qg
d3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9m
ZnNldCA8PSBkYXRhU2l6ZSgpKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBkYXRhU2l6ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8c2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQ+CisgICAgc2l6ZV90IGFsaWduT2Zm
c2V0KHNpemVfdCBvZmZzZXQsIHNpemVfdCBhY3F1aXJlU2l6ZSkgY29uc3QKKyAgICB7CisgICAg
ICAgIG9mZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2Y8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0
KTsKKyAgICAgICAgaWYgKG9mZnNldCArIGFjcXVpcmVTaXplID49IGRhdGFTaXplKCkpCisgICAg
ICAgICAgICBvZmZzZXQgPSAwOworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAg
IEF0b21pYzxzaXplX3Q+JiBzZW5kZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZW5kZXJP
ZmZzZXQ7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgcmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBo
ZWFkZXIoKS5yZWNlaXZlck9mZnNldDsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBoZWFk
ZXJTaXplKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFT
aXplOyB9CisgICAgU2VtYXBob3JlJiBzZW5kZXJXYWl0U2VtYXBob3JlKCkgeyByZXR1cm4gbV9z
ZW5kZXJXYWl0U2VtYXBob3JlOyB9CisKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRl
cjo6c2VuZGVyT2Zmc2V0IHdoZW4gcmVjZWl2ZXIgaXMgc2xlZXBpbmcsIGUuZy4gbm90IHJ1bm5p
bmcuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1Ns
ZWVwaW5nVGFnID0gMSA8PCAzMTsKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6
cmVjZWl2ZXJPZmZzZXQgd2hlbiBzZW5kZXIgaXMgd2FpdGluZywgZS5nLiB3YWl0aW5nIG9uCisg
ICAgLy8gYSBzZW1hcGhvcmUuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVjZWl2ZXJP
ZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcgPSAxIDw8IDMxOworCisgICAgdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBPcHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVy
PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYmLCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBo
b3JlJiYgc2VuZGVyV2FpdFNlbWFwaG9yZSk7CisKKyAgICBzdHJ1Y3QgSGVhZGVyIHsKKyAgICAg
ICAgQXRvbWljPHNpemVfdD4gcmVjZWl2ZXJPZmZzZXQ7CisgICAgICAgIC8vIFBhZGRpbmcgc28g
dGhhdCB0aGUgdmFyaWFibGVzIG1vc3RseSBhY2Nlc3NlZCBieSBkaWZmZXJlbnQgcHJvY2Vzc2Vz
IGRvIG5vdCBzaGFyZSBhIGNhY2hlIGxpbmUuCisgICAgICAgIC8vIFRoaXMgaXMgYW4gYXR0ZW1w
dCB0byBhdm9pZCBjYWNoZS1saW5lIGluZHVjZWQgcmVkdWN0aW9uIG9mIHBhcmFsbGVsIGFjY2Vz
cy4KKyAgICAgICAgdWludDY0X3QgY2FjaGVMaW5lUGFkZGluZ1syXTsKKyAgICAgICAgQXRvbWlj
PHNpemVfdD4gc2VuZGVyT2Zmc2V0OworICAgIH07CisgICAgSGVhZGVyJiBoZWFkZXIoKSBjb25z
dCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxIZWFkZXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0
YSgpKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGhlYWRlclNpemUoKSB7IHJldHVy
biByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihzdGQ6Om1heF9hbGlnbl90KT4oc2l6ZW9mKEhl
YWRlcikpOyB9CisKKyAgICBzaXplX3QgbV9kYXRhU2l6ZSB7IDAgfTsKKyAgICBSZWY8V2ViS2l0
OjpTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworICAgIFNlbWFwaG9yZSBtX3NlbmRlcldh
aXRTZW1hcGhvcmU7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTIzMmRlY2Y2Yzc5M2E0
NTc3MTY4ZTk3ZWZiNTFhYWZiMzJmZGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaApAQCAtMCwwICsxLDk2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorCituYW1lc3BhY2UgSVBDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1l
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjsKKworLy8gSVBDIGVuY29kZXIgd2hpY2g6CisvLyAgLSBF
bmNvZGVzIHRvIGEgY2FsbGVyIGJ1ZmZlciB3aXRoIGZpeGVkIHNpemUsIGRvZXMgbm90IHJlc2l6
ZSwgc3RvcHMgd2hlbiBzaXplIHJ1bnMgb3V0CisvLyAgLSBEb2VzIG5vdCBpbml0aWFsaXplIGFs
aWdubWVudCBnYXBzCisvLworY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZmluYWwgewor
cHVibGljOgorICAgIC8vIFN0cmVhbSBtZXNzYWdlIG5lZWRzIHRvIGJlIGF0IGxlYXN0IHNpemUg
b2YgU3RyZWFtU2V0RGVzdGluYXRpb25JRCBtZXNzYWdlLgorICAgIHN0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IHNpemVvZihNZXNzYWdlTmFtZSkgKyBzaXplb2Yo
dWludDY0X3QpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQg
PSBhbGlnbm9mKE1lc3NhZ2VOYW1lKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENF
bmNvZGVyID0gdHJ1ZTsKKworICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyKE1lc3NhZ2VOYW1l
IG1lc3NhZ2VOYW1lLCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1DYXBhY2l0eSkKKyAg
ICAgICAgOiBtX2J1ZmZlcihzdHJlYW0pCisgICAgICAgICwgbV9idWZmZXJDYXBhY2l0eShzdHJl
YW1DYXBhY2l0eSkKKyAgICB7CisgICAgICAgICp0aGlzIDw8IG1lc3NhZ2VOYW1lOworICAgIH0K
KworICAgIH5TdHJlYW1Db25uZWN0aW9uRW5jb2RlcigpID0gZGVmYXVsdDsKKworICAgIGJvb2wg
ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBz
aXplX3QgYWxpZ25tZW50KQorICAgIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclBvaW50ZXIgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fYnVmZmVyICsg
bV9lbmNvZGVkU2l6ZSkpOworICAgICAgICBzaXplX3QgbmV3QnVmZmVyUG9pbnRlciA9IHJvdW5k
VXBUb011bHRpcGxlT2YoYWxpZ25tZW50LCBidWZmZXJQb2ludGVyKTsKKyAgICAgICAgaWYgKG5l
d0J1ZmZlclBvaW50ZXIgPCBidWZmZXJQb2ludGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpbnRwdHJfdCBhbGlnbmVkU2l6ZSA9IG1fZW5jb2RlZFNpemUgKyAobmV3QnVm
ZmVyUG9pbnRlciAtIGJ1ZmZlclBvaW50ZXIpOworICAgICAgICBpZiAoIXJlc2VydmUoYWxpZ25l
ZFNpemUsIHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1aW50OF90
KiBidWZmZXIgPSBtX2J1ZmZlciArIGFsaWduZWRTaXplOworICAgICAgICBtZW1jcHkoYnVmZmVy
LCBkYXRhLCBzaXplKTsKKyAgICAgICAgbV9lbmNvZGVkU2l6ZSA9IGFsaWduZWRTaXplICsgc2l6
ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYgb3BlcmF0b3I8PChUJiYgdCkKKyAgICB7
CisgICAgICAgIEFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9y
ZWZlcmVuY2VfdDxUPj4sIHZvaWQ+OjplbmNvZGUoKnRoaXMsIHN0ZDo6Zm9yd2FyZDxUPih0KSk7
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgQVNTRVJUKGlzVmFsaWQoKSk7IHJldHVybiBtX2VuY29kZWRTaXplOyB9CisgICAgYm9vbCBp
c1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJDYXBhY2l0eTsgfQorICAgIG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiBpc1ZhbGlkKCk7IH0KK3ByaXZhdGU6CisgICAgYm9vbCBy
ZXNlcnZlKHNpemVfdCBhbGlnbmVkU2l6ZSwgc2l6ZV90IGFkZGl0aW9uYWxTaXplKQorICAgIHsK
KyAgICAgICAgc2l6ZV90IHNpemUgPSBhbGlnbmVkU2l6ZSArIGFkZGl0aW9uYWxTaXplOworICAg
ICAgICBpZiAoc2l6ZSA8IGFsaWduZWRTaXplIHx8IHNpemUgPiBtX2J1ZmZlckNhcGFjaXR5KSB7
CisgICAgICAgICAgICBtX2J1ZmZlckNhcGFjaXR5ID0gMDsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgdWludDhf
dCogbV9idWZmZXI7CisgICAgc2l6ZV90IG1fYnVmZmVyQ2FwYWNpdHk7CisgICAgc2l6ZV90IG1f
ZW5jb2RlZFNpemUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjQ5MGJjMDFhNDhlNzU2ZmVhNmRlMmY3ZWNiZDI3ZmQ5YzcyOWNkNwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWUuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKwor
bmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OlN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWUoY29uc3QgY2hhciogbmFtZSkKKyAgICA6IG1fbmFtZShuYW1lKQorewor
fQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OmRpc3BhdGNoKFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciht
X2xvY2spOworICAgICAgICBtX2Z1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOwor
ICAgICAgICBBU1NFUlQoIW1fc2hvdWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0
ZG93biBub3Qgc3VwcG9ydGVkLgorICAgIH0KKyAgICB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7
CisKK30KK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6YWRkU3RyZWFtQ29ubmVjdGlv
bihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbikKK3sKKyAgICB7CisgICAg
ICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9jb25uZWN0aW9ucy5hZGQoY29u
bmVjdGlvbik7CisgICAgICAgIEFTU0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcg
ZHVyaW5nIHNodXRkb3duIG5vdCBzdXBwb3J0ZWQuCisgICAgfQorICAgIHdha2VVcFByb2Nlc3Np
bmdUaHJlYWQoKTsKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpyZW1vdmVT
dHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uKQor
eworICAgIEFTU0VSVChtX3Byb2Nlc3NpbmdUaHJlYWQpOworICAgIHsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9u
KTsKKyAgICAgICAgQVNTRVJUKCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcg
c2h1dGRvd24gbm90IHN1cHBvcnRlZC4KKyAgICB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
bV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlOjpzdG9wKCkKK3sKKyAgICBtX3Nob3VsZFF1aXQgPSB0cnVlOworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIGlmICghbV9wcm9jZXNzaW5nVGhyZWFkKQorICAgICAgICBy
ZXR1cm47CisgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgbV9wcm9jZXNzaW5n
VGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOworICAgIG1fcHJvY2Vzc2luZ1RocmVhZCA9IG51
bGxwdHI7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtl
VXAoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25h
bCgpOworI2VuZGlmCit9CisKK0lQQzo6U2VtYXBob3JlJiBTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlOjp3YWtlVXBTZW1hcGhvcmUoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVy
biBtX3dha2VVcFNlbWFwaG9yZTsKKyNlbHNlCisgICAgcmV0dXJuIHsgfTsKKyNlbmRpZgorfQor
Cit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFByb2Nlc3NpbmdUaHJlYWQo
KQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChtX3Byb2Nlc3NpbmdUaHJlYWQpIHsK
KyAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvIHRhc2sgPSBbdGhpc10oKSBtdXRhYmxlIHsKKyAgICAgICAgZm9yICg7
OykgeworICAgICAgICAgICAgcHJvY2Vzc1N0cmVhbXMoKTsKKyAgICAgICAgICAgIGlmIChtX3No
b3VsZFF1aXQpIHsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU3RyZWFtcygpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fd2FrZVVwU2VtYXBo
b3JlLndhaXQoKTsKKyAgICAgICAgfQorICAgIH07CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkID0g
VGhyZWFkOjpjcmVhdGUobV9uYW1lLCBXVEZNb3ZlKHRhc2spLCBUaHJlYWRUeXBlOjpHcmFwaGlj
cywgVGhyZWFkOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSk7CisjZW5kaWYKK30KKwordm9pZCBTdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlOjpwcm9jZXNzU3RyZWFtcygpCit7CisgICAgY29uc3RleHBy
IHNpemVfdCBkZWZhdWx0TWVzc2FnZUxpbWl0ID0gMTAwMDsKKyAgICBib29sIGhhc01vcmVUb1By
b2Nlc3MgPSBmYWxzZTsKKyAgICBkbyB7CisgICAgICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9p
ZCgpPj4gZnVuY3Rpb25zOworICAgICAgICBIYXNoU2V0PFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZT4+IGNvbm5lY3Rpb25zOworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAgICAgICBmdW5jdGlvbnMuc3dhcChtX2Z1bmN0
aW9ucyk7CisgICAgICAgICAgICBjb25uZWN0aW9ucyA9IG1fY29ubmVjdGlvbnM7CisgICAgICAg
IH0KKyAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykKKyAgICAgICAgICAg
IFdURk1vdmUoZnVuY3Rpb24pKCk7CisKKyAgICAgICAgaGFzTW9yZVRvUHJvY2VzcyA9IGZhbHNl
OworICAgICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBjb25uZWN0aW9ucykKKyAgICAgICAg
ICAgIGhhc01vcmVUb1Byb2Nlc3MgfD0gY29ubmVjdGlvbi0+ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
cyhkZWZhdWx0TWVzc2FnZUxpbWl0KSA9PSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6SGFz
TW9yZU1lc3NhZ2VzOworICAgIH0gd2hpbGUgKGhhc01vcmVUb1Byb2Nlc3MpOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY3YmEzZjM0MDI5MGYzMDI0YzViODlhMGVhM2Y4MzAwOWNk
ODI2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworY2xhc3MgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgeworcHVibGljOgorICAgIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUoY29uc3QgY2hhciopOworICAgIH5TdHJlYW1Db25uZWN0aW9u
V29ya1F1ZXVlKCkgPSBkZWZhdWx0OworICAgIHZvaWQgYWRkU3RyZWFtQ29ubmVjdGlvbihTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYpOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtQ29ubmVjdGlv
bihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYpOworCisgICAgdm9pZCBkaXNwYXRjaChXVEY6
OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBzdG9wKCk7CisKKyAgICB2b2lk
IHdha2VVcCgpOworCisgICAgU2VtYXBob3JlJiB3YWtlVXBTZW1hcGhvcmUoKTsKK3ByaXZhdGU6
CisgICAgdm9pZCB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7CisgICAgdm9pZCBwcm9jZXNzU3Ry
ZWFtcygpOworCisgICAgY29uc3QgY2hhciogY29uc3QgbV9uYW1lOworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIFNlbWFwaG9yZSBtX3dha2VVcFNlbWFwaG9yZTsKKyNlbmRpZgorICAgIFJlZlB0
cjxUaHJlYWQ+IG1fcHJvY2Vzc2luZ1RocmVhZDsKKworICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1f
c2hvdWxkUXVpdCB7IGZhbHNlIH07CisKKyAgICBMb2NrIG1fbG9jazsKKyAgICBEZXF1ZTxGdW5j
dGlvbjx2b2lkKCk+PiBtX2Z1bmN0aW9uczsKKyAgICBIYXNoU2V0PFJlZjxTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZT4+IG1fY29ubmVjdGlvbnM7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmIwZGEyZjRkYTJjMTViYTg5YmUyNzllNmMyMDBjNjYyNDE0YmNlYzMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
LmNwcApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgorCituYW1lc3Bh
Y2UgSVBDIHsKKworU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIm
JiBzdHJlYW0sIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICA6IG1f
Y29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV93b3JrUXVldWUod29ya1F1ZXVlKQorICAg
ICwgbV9idWZmZXIoV1RGTW92ZShzdHJlYW0pKQoreworfQorCit2b2lkIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIG1fY29ubmVjdGlvbi0+
YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
KTsKKyAgICBtX3dvcmtRdWV1ZS5hZGRTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKK30KKwordm9p
ZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChS
ZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAg
IG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShyZWNlaXZlck5hbWUsIGRl
c3RpbmF0aW9uSUQpOworICAgIG1fd29ya1F1ZXVlLnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oKnRo
aXMpOworfQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjplbnF1ZXVlTWVzc2Fn
ZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYgbWVzc2FnZSkKK3sKKyAg
ICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vdXRPZlN0cmVhbU1lc3NhZ2Vz
TG9jayk7CisgICAgICAgIG1fb3V0T2ZTdHJlYW1NZXNzYWdlcy5hcHBlbmQoV1RGTW92ZShtZXNz
YWdlKSk7CisgICAgfQorICAgIG1fd29ya1F1ZXVlLndha2VVcCgpOworfQorCitPcHRpb25hbDxT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U6OnRyeUFxdWlyZSgpCit7CisgICAgc2l6ZV90IHJlY2VpdmVyTGltaXQgPSBzaGFyZWRTZW5k
ZXJPZmZzZXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICAgIGlmIChyZWNl
aXZlckxpbWl0ID09IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVy
SXNTbGVlcGluZ1RhZykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIHJl
c3VsdCA9IGFsaWduZWRTcGFuKG1fcmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworICAg
IGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkgeworICAgICAgICByZWNlaXZl
ckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHJlY2Vp
dmVyTGltaXQsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNT
bGVlcGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3JkZXJf
YWNxX3JlbCk7CisgICAgICAgIEFTU0VSVCghKHJlY2VpdmVyTGltaXQgJiBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpKTsKKyAgICAgICAg
cmVjZWl2ZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChyZWNlaXZlckxpbWl0KTsKKyAgICAgICAgcmVz
dWx0ID0gYWxpZ25lZFNwYW4obV9yZWNlaXZlck9mZnNldCwgcmVjZWl2ZXJMaW1pdCk7CisgICAg
fQorCisgICAgaWYgKHJlc3VsdC5zaXplID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit2b2lkIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjpyZWxlYXNlKHNpemVfdCByZWFkU2l6ZSkKK3sKKyAgICBB
U1NFUlQocmVhZFNpemUpOworICAgIHJlYWRTaXplID0gc3RkOjptYXgocmVhZFNpemUsIG1pbmlt
dW1NZXNzYWdlU2l6ZSk7CisgICAgc2l6ZV90IHJlY2VpdmVyT2Zmc2V0ID0gd3JhcE9mZnNldChh
bGlnbk9mZnNldChtX3JlY2VpdmVyT2Zmc2V0KSArIHJlYWRTaXplKTsKKyAgICBzaXplX3Qgb2xk
UmVjZWl2ZXJPZmZzZXQgPSBzaGFyZWRSZWNlaXZlck9mZnNldCgpLmV4Y2hhbmdlKHJlY2VpdmVy
T2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIC8vIElmIHRoZSBzZW5kZXIgd3JvdGUgb3ZlciByZWNlaXZlck9mZnNldCwgaXQgbWVh
bnMgdGhlIHNlbmRlciBpcyB3YWl0aW5nLgorICAgIGlmIChvbGRSZWNlaXZlck9mZnNldCAhPSBt
X3JlY2VpdmVyT2Zmc2V0KQorICAgICAgICBtX2J1ZmZlci5zZW5kZXJXYWl0U2VtYXBob3JlKCku
c2lnbmFsKCk7CisjZW5kaWYKKworICAgIG1fcmVjZWl2ZXJPZmZzZXQgPSByZWNlaXZlck9mZnNl
dDsKK30KKworU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4gU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OmFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sK
KyAgICBBU1NFUlQob2Zmc2V0IDwgZGF0YVNpemUoKSk7CisgICAgQVNTRVJUKGxpbWl0IDwgZGF0
YVNpemUoKSk7CisgICAgc2l6ZV90IGFsaWduZWQgPSBhbGlnbk9mZnNldChvZmZzZXQpOworICAg
IHNpemVfdCByZXN1bHRTaXplID0gMDsKKyAgICBpZiAob2Zmc2V0IDwgbGltaXQpIHsKKyAgICAg
ICAgaWYgKG9mZnNldCA8PSBhbGlnbmVkICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAg
IHJlc3VsdFNpemUgPSBzaXplKGFsaWduZWQsIGxpbWl0KTsKKyAgICB9IGVsc2UgaWYgKG9mZnNl
dCA+IGxpbWl0KSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwg
bGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7Cisg
ICAgfQorICAgIHJldHVybiB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30KKwor
c2l6ZV90IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaXplKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsaW1pdCkKK3sKKyAgICBpZiAob2Zmc2V0IDw9IGxpbWl0KQorICAgICAgICByZXR1cm4g
bGltaXQgLSBvZmZzZXQ7CisgICAgcmV0dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7Cit9CisKK3Np
emVfdCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRy
dXN0ZWRMaW1pdCkgY29uc3QKK3sKKyAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNp
emUoKSAtIDEpKTsKKyAgICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXpl
KCkgLSAxKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyMGI5MjEzNmZmNmI2YTliOWUxOThk
Yzk3M2IzZDNhNmVhNTY2MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSwyODMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1l
cy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJl
YW1Db25uZWN0aW9uRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIFN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU7CisKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPiwgcHJv
dGVjdGVkIE1lc3NhZ2VSZWNlaXZlUXVldWUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKTsKK3B1YmxpYzoKKyAgICB+U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2UoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgICBDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisKKyAgICBlbnVtIERpc3BhdGNoUmVz
dWx0IDogYm9vbCB7CisgICAgICAgIEhhc05vTWVzc2FnZXMsCisgICAgICAgIEhhc01vcmVNZXNz
YWdlcworICAgIH07CisgICAgdmlydHVhbCBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1l
c3NhZ2VzKHNpemVfdCBtZXNzYWdlTGltaXQpID0gMDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3VtZW50cz4KKyAgICB2b2lkIHNlbmRTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVl
c3RJRCwgQXJndW1lbnRzJiYuLi4pOworCitwcm90ZWN0ZWQ6CisgICAgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2UoSVBDOjpDb25uZWN0aW9uJiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJik7CisKKyAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVz
c2FnZXNJbXBsKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9p
ZCBzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCk7CisKKyAgICAvLyBNZXNzYWdlUmVjZWl2ZVF1ZXVlCisgICAgdm9pZCBlbnF1ZXVl
TWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpIGZpbmFsOwor
CisgICAgc3RydWN0IFNwYW4geworICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXpl
X3Qgc2l6ZTsKKyAgICB9OworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFxdWlyZSgpOworCisgICAg
dm9pZCByZWxlYXNlKHNpemVfdCByZWFkU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3QgbWluaW11bU1lc3NhZ2VTaXplID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1pbmltdW1N
ZXNzYWdlU2l6ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50
ID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1lc3NhZ2VBbGlnbm1lbnQ7CisgICAgU3BhbiBh
bGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBzaXpl
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChz
aXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0OworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVf
dCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zmc2V0KTsgfQor
ICAgIHNpemVfdCBhbGlnbk9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5hbGlnbk9mZnNldDxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQsIG1pbmltdW1NZXNzYWdl
U2l6ZSk7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkU2VuZGVyT2Zmc2V0KCkgeyByZXR1
cm4gbV9idWZmZXIuc2VuZGVyT2Zmc2V0KCk7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVk
UmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5yZWNlaXZlck9mZnNldCgpOyB9Cisg
ICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAg
IHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFTaXplKCk7IH0K
KworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlJiBtX3dvcmtRdWV1ZTsKKworICAgIHNpemVfdCBtX3JlY2VpdmVyT2Zm
c2V0IHsgMCB9OworICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgbV9idWZmZXI7CisKKyAgICBM
b2NrIG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2s7CisgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+PiBtX291dE9mU3RyZWFtTWVzc2FnZXM7CisKKyAgICBmcmllbmQgY2xhc3MgU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cz4KK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5jUmVwbHkodWlu
dDY0X3Qgc3luY1JlcXVlc3RJRCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQoreworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgc2VuZGluZyB0byBidWZmZXIuCisgICAgYXV0byBlbmNvZGVyID0g
bWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KElQQzo6TWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVw
bHksIHN5bmNSZXF1ZXN0SUQpOworICAgICgqZW5jb2RlciA8PCAuLi4gPDwgYXJndW1lbnRzKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisK
Ky8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gcmVwcmVzZW50cyB0aGUgY29ubmVjdGlvbiBiZXR3
ZWVuIHN0cmVhbSBzZW5kZXIgYW5kIHJlY2VpdmVyLCBhcyB1c2VkIGJ5IHRoZSByZWNlaXZlci4K
Ky8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb246CisvLyAgKiBIb2xkcyB0aGUgbWVzc2FnZXMgdG93
YXJkcyB0aGUgcmVjZWl2ZXIuCisvLyAgKiBTZW5kcyB0aGUgcmVwbGllcyBiYWNrIHRvIHRoZSBz
ZW5kZXIgdmlhIHRoZSBzdHJlYW0gb3Igbm9ybWFsIENvbm5lY3Rpb24gZmFsbGJhY2suCisvLwor
Ly8gUmVjZWl2ZXIgdGVtcGxhdGUgY29udHJhY3Q6CisvLyAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVh
bU1lc3NhZ2UoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBEZWNvZGVyJik7CisvLwordGVt
cGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGZp
bmFsIDogcHVibGljIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IGNyZWF0ZShDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyLCBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUoc3RyZWFt
QnVmZmVyKSwgd29ya1F1ZXVlKSk7CisgICAgfQorICAgIH5TdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
KCkgZmluYWwgPSBkZWZhdWx0OworCisgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJl
Y2VpdmVyJiwgUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICAvLyBT
dG9wcyB0aGUgbWVzc2FnZSByZWNlaXB0LiBOb3RlOiBhbHJlYWR5IHJlY2VpdmVkIG1lc3NhZ2Vz
IG1pZ2h0IHN0aWxsIGJlIGRlbGl2ZXJlZC4KKyAgICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdl
cyhSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgLy8gU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2Ugb3ZlcnJpZGVzLgorICAgIERpc3BhdGNoUmVzdWx0IGRpc3Bh
dGNoU3RyZWFtTWVzc2FnZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkgZmluYWw7CisKK3ByaXZhdGU6
CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlJiB3b3JrUXVldWUpCisgICAgICAgIDogU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoY29u
bmVjdGlvbiwgV1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpCisgICAgeworICAgIH0K
KyAgICBib29sIHByb2Nlc3NTZXRTdHJlYW1EZXN0aW5hdGlvbklEKERlY29kZXImJiwgUmVmUHRy
PFJlY2VpdmVyPiYgY3VycmVudFJlY2VpdmVyKTsKKyAgICBib29sIGRpc3BhdGNoU3RyZWFtTWVz
c2FnZShEZWNvZGVyJiYsIFJlY2VpdmVyJik7CisgICAgYm9vbCBkaXNwYXRjaE91dE9mU3RyZWFt
TWVzc2FnZShEZWNvZGVyJiYpOworICAgIExvY2sgbV9yZWNlaXZlcnNMb2NrOworICAgIHVzaW5n
IFJlY2VpdmVyc01hcCA9IEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90PiwgUmVm
PFJlY2VpdmVyPj47CisgICAgUmVjZWl2ZXJzTWFwIG1fcmVjZWl2ZXJzOworCisgICAgdWludDY0
X3QgbV9jdXJyZW50RGVzdGluYXRpb25JRCA9IDA7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBS
ZWNlaXZlcj4KK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnN0YXJ0UmVj
ZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXImIHJlY2VpdmVyLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIHsKKyAgICAgICAgYXV0byBrZXkg
PSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0
aW5hdGlvbklEKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xv
Y2spOworICAgICAgICBBU1NFUlQoIW1fcmVjZWl2ZXJzLmNvbnRhaW5zKGtleSkpOworICAgICAg
ICBtX3JlY2VpdmVycy5hZGQoa2V5LCBtYWtlUmVmKHJlY2VpdmVyKSk7CisgICAgfQorICAgIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChyZWNl
aXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZl
cj4KK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnN0b3BSZWNlaXZpbmdN
ZXNzYWdlcyhSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KQoreworICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdG9wUmVjZWl2aW5nTWVzc2Fn
ZXNJbXBsKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBrZXkgPSBzdGQ6
Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAg
QVNTRVJUKG1fcmVjZWl2ZXJzLmNvbnRhaW5zKGtleSkpOworICAgIG1fcmVjZWl2ZXJzLnJlbW92
ZShrZXkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK1N0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpEaXNwYXRjaFJlc3VsdCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2Vp
dmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KQoreworICAg
IFJlZlB0cjxSZWNlaXZlcj4gY3VycmVudFJlY2VpdmVyOworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgV1RGOjppc1ZhbGlkKFJlY2VpdmVyTmFtZSkuCisgICAgdWludDhfdCBjdXJyZW50UmVjZWl2
ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oUmVjZWl2ZXJOYW1lOjpJbnZhbGlkKTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVzc2FnZUxpbWl0OyArK2kpIHsKKyAgICAgICAg
YXV0byBzcGFuID0gdHJ5QXF1aXJlKCk7CisgICAgICAgIGlmICghc3BhbikKKyAgICAgICAgICAg
IHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgSVBDOjpEZWNv
ZGVyIGRlY29kZXIgeyBzcGFuLT5kYXRhLCBzcGFuLT5zaXplLCBtX2N1cnJlbnREZXN0aW5hdGlv
bklEIH07CisgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1f
Y29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNz
YWdlczsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklEKSB7CisgICAgICAgICAgICBpZiAoIXBy
b2Nlc3NTZXRTdHJlYW1EZXN0aW5hdGlvbklEKFdURk1vdmUoZGVjb2RlciksIGN1cnJlbnRSZWNl
aXZlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3Nh
Z2VzOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2Fn
ZSkgeworICAgICAgICAgICAgaWYgKCFkaXNwYXRjaE91dE9mU3RyZWFtTWVzc2FnZShXVEZNb3Zl
KGRlY29kZXIpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05v
TWVzc2FnZXM7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
Y3VycmVudFJlY2VpdmVyTmFtZSAhPSBzdGF0aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkpIHsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlck5hbWUgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAg
ICAgICAgICBjdXJyZW50UmVjZWl2ZXIgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGlm
ICghY3VycmVudFJlY2VpdmVyKSB7CisgICAgICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9w
YWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGN1cnJlbnRSZWNlaXZlck5hbWUpLCBtX2N1cnJlbnRE
ZXN0aW5hdGlvbklEKTsKKyAgICAgICAgICAgIGlmICghUmVjZWl2ZXJzTWFwOjppc1ZhbGlkS2V5
KGtleSkpIHsKKyAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAg
ICAgICAgY3VycmVudFJlY2VpdmVyID0gbV9yZWNlaXZlcnMuZ2V0KGtleSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKCFjdXJyZW50UmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIC8vIFZhbGlkIHNj
ZW5hcmlvIGlzIHdoZW4gcmVjZWl2ZXIgaGFzIGJlZW4gcmVtb3ZlZCwgYnV0IHRoZXJlIGFyZSBt
ZXNzYWdlcyBmb3IgaXQgaW4gdGhlIGJ1ZmZlci4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaW5j
ZSB3ZSBkbyBub3QgaGF2ZSBhIHJlY2VpdmVyLCB3ZSBkb24ndCBrbm93IGhvdyB0byBkZWNvZGUg
dGhlIG1lc3NhZ2UuCisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIG11c3QgdGltZW91dCBl
dmVyeSByZWNlaXZlciBpbiB0aGUgc3RyZWFtIGNvbm5lY3Rpb24uCisgICAgICAgICAgICAvLyBD
dXJyZW50bHkgd2UgYXNzZXJ0IHRoYXQgdGhlIHJlY2VpdmVycyBhcmUgZW1wdHksIGFzIHdlIG9u
bHkgaGF2ZSB1cCB0byBvbmUgcmVjZWl2ZXIgaW4KKyAgICAgICAgICAgIC8vIGEgc3RyZWFtIGNv
bm5lY3Rpb24gdW50aWwgcG9zc2liaWxpdHkgb2Ygc2tpcHBpbmcgaXMgaW1wbGVtZW50ZWQgcHJv
cGVybHkuCisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9j
ayk7CisgICAgICAgICAgICBBU1NFUlQobV9yZWNlaXZlcnMuaXNFbXB0eSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoIWRpc3BhdGNoU3RyZWFtTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpLCAqY3VycmVu
dFJlY2VpdmVyKSkKKyAgICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNz
YWdlczsKKyAgICB9CisgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNNb3JlTWVzc2FnZXM7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPFJlY2VpdmVyPjo6cHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoRGVjb2RlciYm
IGRlY29kZXIsIFJlZlB0cjxSZWNlaXZlcj4mIGN1cnJlbnRSZWNlaXZlcikKK3sKKyAgICB1aW50
NjRfdCBkZXN0aW5hdGlvbklEID0gMDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlc3RpbmF0
aW9uSUQpKSB7CisgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxp
ZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICBpZiAobV9jdXJyZW50RGVzdGluYXRpb25JRCAhPSBkZXN0aW5hdGlvbklEKSB7
CisgICAgICAgIG1fY3VycmVudERlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgICAg
ICBjdXJyZW50UmVjZWl2ZXIgPSBudWxscHRyOworICAgIH0KKyAgICByZWxlYXNlKGRlY29kZXIu
Y3VycmVudEJ1ZmZlclBvc2l0aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZl
cj46OmRpc3BhdGNoU3RyZWFtTWVzc2FnZShEZWNvZGVyJiYgZGVjb2RlciwgUmVjZWl2ZXImIHJl
Y2VpdmVyKQoreworICAgIHJlY2VpdmVyLmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKCp0aGlzLCBk
ZWNvZGVyKTsKKyAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKSB7CisgICAgICAgIG1fY29ubmVj
dGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZWxlYXNlKGRlY29kZXIu
Y3VycmVudEJ1ZmZlclBvc2l0aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZl
cj46OmRpc3BhdGNoT3V0T2ZTdHJlYW1NZXNzYWdlKERlY29kZXImJiBkZWNvZGVyKQoreworICAg
IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlOworICAgIHsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX291dE9mU3RyZWFtTWVzc2FnZXNMb2NrKTsKKyAgICAgICAgaWYg
KG1fb3V0T2ZTdHJlYW1NZXNzYWdlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIG1lc3NhZ2UgPSBtX291dE9mU3RyZWFtTWVzc2FnZXMudGFrZUZpcnN0KCk7
CisgICAgfQorICAgIGlmICghbWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
UmVmUHRyPFJlY2VpdmVyPiByZWNlaXZlcjsKKyAgICB7CisgICAgICAgIGF1dG8ga2V5ID0gc3Rk
OjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSwgbWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICByZWNlaXZlciA9IG1fcmVjZWl2
ZXJzLmdldChrZXkpOworICAgIH0KKyAgICBpZiAocmVjZWl2ZXIpIHsKKyAgICAgICAgcmVjZWl2
ZXItPmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKCp0aGlzLCAqbWVzc2FnZSk7CisgICAgICAgIGlm
ICghbWVzc2FnZS0+aXNWYWxpZCgpKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3Bh
dGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIC8vIElmIHJlY2Vp
dmVyIGRvZXMgbm90IGV4aXN0IGlmIGl0IGhhcyBiZWVuIHJlbW92ZWQgYnV0IG1lc3NhZ2VzIGFy
ZSBzdGlsbCBwZW5kaW5nIHRvIGJlCisgICAgLy8gcHJvY2Vzc2VkLiBJdCdzIG9rIHRvIHNraXAg
c3VjaCBtZXNzYWdlcy4KKyAgICAvLyBGSVhNRTogTm90ZSwgY29ycmVzcG9uZGluZyBza2lwIGlz
IG5vdCBwb3NzaWJsZSBhdCB0aGUgbW9tZW50IGZvciBzdHJlYW0gbWVzc2FnZXMuCisgICAgcmVs
ZWFzZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFj
aFBvcnQuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmgKaW5k
ZXggNzg1NGZhOGYxODY4ZmI4ZTQ1NjIyODlmZGRmNmYyNzk1YWYyZDkwZC4uODNkOTlmMGNiYzhm
ZTA0ODIwYjQ3ODNjOWMwNzZhYjU3YTNlYWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9jb2NvYS9NYWNoUG9ydC5oCkBAIC0yNSw5ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKLSNp
bmNsdWRlICJEZWNvZGVyLmgiCi0jaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgSVBD
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZWQwOGM3
Mzk3NzAyMjJmYzVjNGM0NmMzMzQ3OGFjMTAzMDFhOTk4OC4uYWM5ZTc4MmUyMTgzMTgxYmM5ODUz
NWQ1ZGU4NGZlODA1YWYwN2U5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CkBAIC0yNCw4ICsyNCw5IEBAIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IHJlCiBp
bXBvcnQgc3lzCiAKK2Zyb20gbW9kZWwgaW1wb3J0IE1lc3NhZ2VSZWNlaXZlciwgTWVzc2FnZQog
ZnJvbSB3ZWJraXQgaW1wb3J0IHBhcnNlcgotZnJvbSB3ZWJraXQubW9kZWwgaW1wb3J0IEJVSUxU
SU5fQVRUUklCVVRFLCBBU1lOQ19BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURSwgTUFJ
TlRIUkVBRENBTExCQUNLX0FUVFJJQlVURQorZnJvbSB3ZWJraXQubW9kZWwgaW1wb3J0IEJVSUxU
SU5fQVRUUklCVVRFLCBBU1lOQ19BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURSwgTUFJ
TlRIUkVBRENBTExCQUNLX0FUVFJJQlVURSwgU1RSRUFNX0FUVFJJQlVURSwgV0FOVFNfQ09OTkVD
VElPTl9BVFRSSUJVVEUKIAogX2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTUzLDEzICs1
NCwxMSBAQCBfbGljZW5zZV9oZWFkZXIgPSAiIiIvKgogCiAiIiIKIAotV0FOVFNfQ09OTkVDVElP
Tl9BVFRSSUJVVEUgPSAnV2FudHNDb25uZWN0aW9uJwogV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9B
VFRSSUJVVEUgPSAnV2FudHNEaXNwYXRjaE1lc3NhZ2UnCiBXQU5UU19BU1lOQ19ESVNQQVRDSF9N
RVNTQUdFX0FUVFJJQlVURSA9ICdXYW50c0FzeW5jRGlzcGF0Y2hNZXNzYWdlJwogTEVHQUNZX1JF
Q0VJVkVSX0FUVFJJQlVURSA9ICdMZWdhY3lSZWNlaXZlcicKIE5PVF9SRUZDT1VOVEVEX1JFQ0VJ
VkVSX0FUVFJJQlVURSA9ICdOb3RSZWZDb3VudGVkJwogCi0KIGRlZiByZWNlaXZlcl9lbnVtZXJh
dG9yX29yZGVyX2tleShyZWNlaXZlcl9uYW1lKToKICAgICBpZiByZWNlaXZlcl9uYW1lID09ICdJ
UEMnOgogICAgICAgICByZXR1cm4gMQpAQCAtMjExLDcgKzIxMCw3IEBAIGRlZiBtZXNzYWdlX3Rv
X3N0cnVjdF9kZWNsYXJhdGlvbihyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RG
OjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6Ok1haW5UaHJlYWQ7XG4nKQogICAgICAgICBl
bHNlOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0
byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25z
dHJ1Y3Rpb25UaHJlYWQ7XG4nKQotICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lO
Q0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklC
VVRFKToKKyAgICAgICAgaWYgKG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRS
SUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpKSBhbmQgbm90
IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mJykKICAgICAgICAgICAgIGlmIGxlbihzZW5kX3Bh
cmFtZXRlcnMpOgogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJXMnICUgY29tcGxl
dGlvbl9oYW5kbGVyX3BhcmFtZXRlcnMpCkBAIC0yNTksNiArMjU4LDcgQEAgZGVmIHR5cGVzX3Ro
YXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICByZXR1cm4gZnJvemVuc2V0KFsK
ICAgICAgICAgJ0lQQzo6RGF0YVJlZmVyZW5jZScsCiAgICAgICAgICdJUEM6OkZvbnRSZWZlcmVu
Y2UnLAorICAgICAgICAnSVBDOjpTZW1hcGhvcmUnLAogICAgICAgICAnTWFjaFNlbmRSaWdodCcs
CiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKQEAgLTU3MSwxMCArNTcx
LDE1IEBAIGRlZiBzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKToKICAg
ICAgICAgZGlzcGF0Y2hfZnVuY3Rpb24gKz0gJ0FzeW5jJwogCiAgICAgd2FudHNfY29ubmVjdGlv
biA9IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3Nh
Z2UuaGFzX2F0dHJpYnV0ZShXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSkKKyAgICBtYXliZV9y
ZXBseV9lbmNvZGVyID0gIiwgKnJlcGx5RW5jb2RlciIKKyAgICBpZiByZWNlaXZlci5oYXNfYXR0
cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAgICAgICBtYXliZV9yZXBseV9lbmNvZGVyID0g
JycKKyAgICBlbGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUp
IG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICBtYXli
ZV9yZXBseV9lbmNvZGVyID0gJywgcmVwbHlFbmNvZGVyJwogCiAgICAgcmVzdWx0ID0gW10KICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6JXM6OiVzOjpuYW1lKCkpIHtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkK
LSAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXNk
ZWNvZGVyLCAlc3JlcGx5RW5jb2RlciwgdGhpcywgJiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rp
b24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJ2Nvbm5lY3Rpb24sICcgaWYgd2FudHNf
Y29ubmVjdGlvbiBlbHNlICcnLCAnJyBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05P
VVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSBl
bHNlICcqJywgaGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQorICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglc2RlY29kZXIlcywg
dGhpcywgJiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3Nh
Z2UubmFtZSwgJ2Nvbm5lY3Rpb24sICcgaWYgd2FudHNfY29ubmVjdGlvbiBlbHNlICcnLCBtYXli
ZV9yZXBseV9lbmNvZGVyLCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKSkpCiAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQogICAgIHJlc3VsdC5hcHBlbmQo
JyAgICB9XG4nKQogICAgIHJldHVybiBzdXJyb3VuZF9pbl9jb25kaXRpb24oJycuam9pbihyZXN1
bHQpLCBtZXNzYWdlLmNvbmRpdGlvbikKQEAgLTg3NCw3ICs4NzksNyBAQCBkZWYgZ2VuZXJhdGVf
bWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgaWYgbWVzc2FnZS5yZXBseV9wYXJh
bWV0ZXJzICE9IE5vbmUgYW5kIChtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRU
UklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSk6CiAgICAg
ICAgICAgICBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQogCi0gICAg
aWYgZGVsYXllZF9vcl9hc3luY19tZXNzYWdlczoKKyAgICBpZiBkZWxheWVkX29yX2FzeW5jX21l
c3NhZ2VzIGFuZCBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIE1lc3NhZ2VzIHtcblxubmFtZXNwYWNl
ICVzIHtcblxuJyAlIHJlY2VpdmVyLm5hbWUpCiAKICAgICAgICAgZm9yIG1lc3NhZ2UgaW4gZGVs
YXllZF9vcl9hc3luY19tZXNzYWdlczoKQEAgLTkyMiwyNSArOTI3LDQ0IEBAIGRlZiBnZW5lcmF0
ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
YXN5bmNfbWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpCiAKLSAgICBpZiBhc3luY19tZXNzYWdlcyBv
ciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRF
KSBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0Vf
QVRUUklCVVRFKToKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZSVz
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
cilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0
cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQorICAgIGlmIHJlY2Vp
dmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CisgICAgICAgIHJlc3VsdC5hcHBl
bmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVj
ZWl2ZXIubmFtZSkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgICAgIGlmIG5v
dCByZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVU
RSk6CisgICAgICAgIGFzc2VydChyZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVE
X1JFQ0VJVkVSX0FUVFJJQlVURSkpCisgICAgICAgIGFzc2VydChub3QgcmVjZWl2ZXIuaGFzX2F0
dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkpCisgICAgICAgIGFzc2Vy
dChub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdF
X0FUVFJJQlVURSkpCisKKyAgICAgICAgcmVzdWx0ICs9IFthc3luY19tZXNzYWdlX3N0YXRlbWVu
dChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gYXN5bmNfbWVzc2FnZXNdCisgICAg
ICAgIHJlc3VsdCArPSBbc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkg
Zm9yIG1lc3NhZ2UgaW4gc3luY19tZXNzYWdlc10KKworICAgICAgICBpZiAocmVjZWl2ZXIuc3Vw
ZXJjbGFzcyk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJXM6OmRpZFJlY2VpdmVT
dHJlYW1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNs
YXNzKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVT
RURfUEFSQU0oZGVjb2Rlcik7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVO
VVNFRF9QQVJBTShjb25uZWN0aW9uKTtcbicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4n
KQorICAgIGVsaWYgYXN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5U
U19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShX
QU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CisgICAgICAgIHJlY2VpdmVf
dmFyaWFudCA9IHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lf
UkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQg
JXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVfdmFyaWFudCkp
CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisgICAgICAgIGlmIG5vdCAocmVjZWl2ZXIu
aGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpIG9yIHJlY2Vp
dmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSkpOgogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpO1xuJykKIAog
ICAgICAgICByZXN1bHQgKz0gW2FzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNz
YWdlKSBmb3IgbWVzc2FnZSBpbiBhc3luY19tZXNzYWdlc10KKwogICAgICAgICBpZiByZWNlaXZl
ci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSBvciByZWNl
aXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRF
KToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGlzcGF0Y2hNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpKVxuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgcmV0dXJuO1xuJykKICAgICAgICAgaWYgKHJlY2VpdmVyLnN1cGVyY2xhc3MpOgotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcykpCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xhc3MsIHJlY2VpdmVfdmFyaWFudCkpCiAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pO1xuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0o
ZGVjb2Rlcik7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpO1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKIAotICAgIGlmIHN5
bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSk6CisgICAgaWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFN
X0FUVFJJQlVURSkgYW5kIChzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUo
V0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKToKICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnXG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlU3luYyVz
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcilcbicgJSAocmVj
ZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKExFR0FD
WV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd7
XG4nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191
bml0dGVzdC5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRl
c3QucHkKaW5kZXggNDhkOGUxYjYyN2NjMzFiMThmYTFjNTBmYWJlZWVkOTcxYmQxNWJlOS4uZTg5
ZTE3ZTE0MDdiNWI1NjZiYzE5MmM0MGE5OWEyOGQ4YmY4ZGNkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CkBAIC00Niw2ICs0Niw4
IEBAIF90ZXN0X3JlY2VpdmVyX25hbWVzID0gWwogICAgICdUZXN0V2l0aElmTWVzc2FnZScsCiAg
ICAgJ1Rlc3RXaXRoU2VtYXBob3JlJywKICAgICAnVGVzdFdpdGhJbWFnZURhdGEnLAorICAgICdU
ZXN0V2l0aFN0cmVhbScsCisgICAgJ1Rlc3RXaXRoU3RyZWFtQnVmZmVyJwogXQogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5CmluZGV4IDQ4MDBmYTRlZmNhOTY3OGE4OWFmYzdl
NDM0ZjI2YjM0NmNlOGNmNmMuLjUwN2UwNDJhNTc3ZmY4YTAyMzM3MmMzYTYwN2FiMTA4YTVmYTk2
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQpAQCAtMjgsNiArMjgsOCBA
QCBCVUlMVElOX0FUVFJJQlVURSA9ICJCdWlsdGluIgogQVNZTkNfQVRUUklCVVRFID0gIkFzeW5j
IgogTUFJTlRIUkVBRENBTExCQUNLX0FUVFJJQlVURSA9ICJNYWluVGhyZWFkQ2FsbGJhY2siCiBT
WU5DSFJPTk9VU19BVFRSSUJVVEUgPSAnU3luY2hyb25vdXMnCitTVFJFQU1fQVRUUklCVVRFID0g
IlN0cmVhbSIKK1dBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFID0gJ1dhbnRzQ29ubmVjdGlvbicK
IAogY2xhc3MgTWVzc2FnZVJlY2VpdmVyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIHN1cGVyY2xhc3MsIGF0dHJpYnV0ZXMsIG1lc3NhZ2VzLCBjb25kaXRpb24pOgpAQCAt
NzMsNyArNzUsOSBAQCBpcGNfcmVjZWl2ZXIgPSBNZXNzYWdlUmVjZWl2ZXIobmFtZT0iSVBDIiwg
c3VwZXJjbGFzcz1Ob25lLCBhdHRyaWJ1dGVzPVtCVUlMVElOXwogICAgIE1lc3NhZ2UoJ1dyYXBw
ZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nJywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FU
VFJJQlVURSwgU1lOQ0hST05PVVNfQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAogICAgIE1l
c3NhZ2UoJ1N5bmNNZXNzYWdlUmVwbHknLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRU
UklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAogICAgIE1lc3NhZ2UoJ0luaXRpYWxpemVDb25uZWN0
aW9uJywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj0i
UExBVEZPUk0oQ09DT0EpIiksCi0gICAgTWVzc2FnZSgnTGVnYWN5U2Vzc2lvblN0YXRlJywgW10s
IFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKQorICAg
IE1lc3NhZ2UoJ0xlZ2FjeVNlc3Npb25TdGF0ZScsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJ
Tl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSksCisgICAgTWVzc2FnZSgnU2V0U3RyZWFtRGVz
dGluYXRpb25JRCcsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25k
aXRpb249Tm9uZSksCisgICAgTWVzc2FnZSgnUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZScsIFtd
LCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSkKIF0s
IGNvbmRpdGlvbj1Ob25lKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvTWFrZWZpbGUgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L01ha2VmaWxlCmluZGV4IDIxYjMwYWUyMGZhMTAzM2ZhNjY0ZTAzYWRiZDg4MDg2YTZjNzJjNDIu
LmUxOTdiZDNjMjY3YWU0MTFhNDUwMGQwZmY2OTM5ODYwM2E0NTA4MDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQpAQCAtNiw2ICs2LDggQEAgVEVTVFMg
PSBcCiAgICAgVGVzdFdpdGhJZk1lc3NhZ2UgXAogICAgIFRlc3RXaXRoU2VtYXBob3JlIFwKICAg
ICBUZXN0V2l0aEltYWdlRGF0YSBcCisJVGVzdFdpdGhTdHJlYW0gXAorCVRlc3RXaXRoU3RyZWFt
QnVmZmVyIFwKICMKIAogYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCmluZGV4IDdkNWFmYzkxOGU1YjA1YjhmN2E1Y2Q2MjM4
NTJiNWMwZTBjMThhMDMuLjJlN2NhMTVlNzRlYmJkYTg2Yzc5ZjhmYzBiOGYzOGI0YjVmNzU4OTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5h
bWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VO
YW1lcy5jcHAKQEAgLTEzNCw2ICsxMzQsMTAgQEAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVz
c2FnZU5hbWUgbmFtZSkKICAgICAgICAgcmV0dXJuICJJbml0aWFsaXplQ29ubmVjdGlvbiI7CiAg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOgogICAgICAgICByZXR1cm4g
IkxlZ2FjeVNlc3Npb25TdGF0ZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9m
U3RyZWFtTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdl
IjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklEOgorICAgICAg
ICByZXR1cm4gIlNldFN0cmVhbURlc3RpbmF0aW9uSUQiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlN5bmNNZXNzYWdlUmVwbHk6CiAgICAgICAgIHJldHVybiAiU3luY01lc3NhZ2VSZXBseSI7CiAg
ICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VS
ZXBseToKQEAgLTIyNCw2ICsyMjgsOCBAQCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3Nh
Z2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0
aG91dEF0dHJpYnV0ZXM7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rp
b246CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOgorICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2U6CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRDoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5j
TWVzc2FnZVJlcGx5OgogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpJUEM7CiAgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseToK
QEAgLTQwMSw2ICs0MDcsMTAgQEAgYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUg
bWVzc2FnZU5hbWUpCiAjZW5kaWYKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdl
TmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2Fn
ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVz
c2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaCBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKaW5kZXgg
ZWZlYTIzMDJkNjg3YmU0ZjUyMjY5MGY3OGEzYzY0ZjYzNmUzMWZkOC4uYTIyYmQxY2ZkN2Y3M2Jl
OWVhYjFjYmJjMGZmMGM2ZWYwNmEwNjQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCkBAIC05Myw2ICs5Myw4IEBAIGVudW0gY2xh
c3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdCB7CiAgICAgLCBUZXN0V2l0aG91dEF0dHJpYnV0ZXNf
VG91Y2hFdmVudAogICAgICwgSW5pdGlhbGl6ZUNvbm5lY3Rpb24KICAgICAsIExlZ2FjeVNlc3Np
b25TdGF0ZQorICAgICwgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZQorICAgICwgU2V0U3RyZWFt
RGVzdGluYXRpb25JRAogICAgICwgU3luY01lc3NhZ2VSZXBseQogICAgICwgVGVzdFdpdGhTdXBl
cmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rl
c3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvblJlcGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZDBmNTI4YzY5Y2RlZmRkYTljNDg2NzkxMzhjNjM4YjhhYzBjYjMyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN0cmVhbS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVGVzdHMgU3RyZWFtIHJlY2VpdmVyIGF0dHJpYnV0
ZS4KK21lc3NhZ2VzIC0+IFRlc3RXaXRoU3RyZWFtIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKKyAg
ICB2b2lkIFNlbmRTdHJpbmcoU3RyaW5nIHVybCkKKyAgICB2b2lkIFNlbmRTdHJpbmdTeW5jaHJv
bml6ZWQoU3RyaW5nIHVybCkgLT4gKGludDY0X3QgcmV0dXJuKQorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJl
YW1CdWZmZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE3MGFjODlhMjVmMDM5MjE5ZmU0MTgx
MDViMmMxZDA0YWUwYzdlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4KQEAgLTAsMCAr
MSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRlc3Rz
IFN0cmVhbSByZWNlaXZlciBhdHRyaWJ1dGUuCittZXNzYWdlcyAtPiBUZXN0V2l0aFN0cmVhbUJ1
ZmZlciAgeworICAgIHZvaWQgU2VuZFN0cmVhbUJ1ZmZlcihJUEM6OlN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIgc3RyZWFtKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJl
Y2VpdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWM5MjQwYTRlYjFhYjU1NzQwOTYwMjI5MWRjMTI3MzE5
ODdmMDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTAsMCArMSw0
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJU
ZXN0V2l0aFN0cmVhbUJ1ZmZlci5oIgorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUg
IkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisj
aW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordm9pZCBUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAg
YXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1C
dWZmZXI6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyPihkZWNvZGVyLCB0aGlzLCAmVGVz
dFdpdGhTdHJlYW1CdWZmZXI6OnNlbmRTdHJlYW1CdWZmZXIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVj
b2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTI0ZWJk
ZDIwMGYzMzkwNDc3ZGZhZjdjZDg1NzE5MWJkNTNiMjg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3Nh
Z2VzLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXJN
ZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXI7Cit9CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2Ug
VGVzdFdpdGhTdHJlYW1CdWZmZXIgeworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1l
IG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6
VGVzdFdpdGhTdHJlYW1CdWZmZXI7Cit9CisKK2NsYXNzIFNlbmRTdHJlYW1CdWZmZXIgeworcHVi
bGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXJfU2VuZFN0cmVh
bUJ1ZmZlcjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAg
ZXhwbGljaXQgU2VuZFN0cmVhbUJ1ZmZlcihjb25zdCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXImIHN0cmVhbSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhzdHJlYW0pCisgICAgeworICAgIH0K
KworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1f
YXJndW1lbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIKK30g
Ly8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2Fn
ZXNSZXBsaWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdmYTJhZDdkNTA2MzAwZjNjY2IzOTBmMTk3MjU5ZDkw
ZTY5M2YzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMuaApAQCAtMCwwICsxLDM2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdl
TmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdl
cyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIgeworCisKK30gLy8gbmFtZXNwYWNl
IFRlc3RXaXRoU3RyZWFtQnVmZmVyCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3Nh
Z2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mzk4ODU1YWQ1NmU5NTE5
OTdjOWQyYWIzZjg4ODA5NGM4ODkyMzI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAK
QEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2lu
Y2x1ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgVGVzdFdpdGhTdHJlYW06OmRp
ZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6bmFtZSgp
KSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06
OlNlbmRTdHJpbmc+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6Om5hbWUo
KSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFt
OjpTZW5kU3RyaW5nU3luY2hyb25pemVkPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06
OnNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFVO
VVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1l
c3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtTWVzc2FnZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGJmZWJhYjIzNzJjMWY2NjA1YzU1ODk0NTkzOGJm
MWU0ZTdhYWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICog
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5j
bHVkZSAiVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3Bh
Y2UgVGVzdFdpdGhTdHJlYW0geworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6VGVz
dFdpdGhTdHJlYW07Cit9CisKK2NsYXNzIFNlbmRTdHJpbmcgeworcHVibGljOgorICAgIHVzaW5n
IEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CisKKyAgICBzdGF0aWMgSVBD
OjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhT
dHJlYW1fU2VuZFN0cmluZzsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNl
OworCisgICAgZXhwbGljaXQgU2VuZFN0cmluZyhjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAg
OiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3Mg
U2VuZFN0cmluZ1N5bmNocm9uaXplZCB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0g
c3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1l
IG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3Ry
aW5nU3luY2hyb25pemVkOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsK
KworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxpbnQ2NF90Jj47CisgICAgdXNpbmcgUmVw
bHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGludDY0X3Q+OworICAgIGV4cGxpY2l0IFNlbmRTdHJp
bmdTeW5jaHJvbml6ZWQoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHMo
dXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRl
OgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
aXRoU3RyZWFtCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5o
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3Nh
Z2VzUmVwbGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYzVhMDc4ZGUwMWVjMTQzMGY4OTRmMjBjYjljMmY5
MTU1ZTdjYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAq
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVz
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgewor
bmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtIHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0
cmVhbQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGY5YmE1ZGM3ODI0
YjFlNWIwM2U1M2Y5OGI3YTdmOGU0ZGVmMjFjNjQuLjQ1ODkyNmYyNWJkNmQ1MTYyYTc1OWNlMGM3
M2Y4ZWExZWIxN2Q1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTUwLDYgKzE1MCwxMCBAQCBQbGF0Zm9y
bS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNz
YWdlU2VuZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNw
cCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcCBA
bm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBAbm8tdW5p
ZnkKK1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBAbm8tdW5pZnkKK1Bs
YXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCBAbm8tdW5pZnkKK1BsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQ
Qy9TdHJpbmdSZWZlcmVuY2UuY3BwIEBuby11bmlmeQogCiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCBjMzMwNzgyNWIyMDA4NmRlZDRjODZj
NjQ4OGNlNWRkNTdlYzBjMzU4Li44OTUyMDhjM2JjMjI2ZDZmYjEyODYxZGE0MzdjZGEzODFmNDhk
NjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDMwMWQwZWQ4MzBkYmVkOTA4Y2JiMjc4
ODZmMDRhOGZlZWE5ZmQ4OWUuLjIzYWIxMGQ2M2E0ZjRhM2ZkMjBjZWQ0ZDczMDE3M2Y0NzVkYzdm
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIK
ICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVu
Y2UuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJVUkxTY2hlbWVUYXNrUGFyYW1ldGVy
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNjA2MWE2MzdkYjkzYmIwYWZjNmQ5YzY1MTZjM2QwM2UyMzViNWNjMS4uZjAwNmU1MWFi
MjM4MzA4NDQyZTE2NDBmZjdlOGM2NTY0ZTczZjQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzI4LDYgKzEzMjgsMTYgQEAKIAkJ
N0I0ODNGMjAyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFDMjVDRERBOUIw
MDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi87IH07CiAJCTdCNDgzRjIxMjVDRERB
OUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAv
KiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLzsgfTsKIAkJN0I0ODNGMjIyNUNEREE5QzAw
MTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2Fn
ZVJlY2VpdmVRdWV1ZXMuaCAqLzsgfTsKKwkJN0I3MzEyM0EyNUNDODUyNTAwM0IyNzk2IC8qIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmggKi87IH07CisJCTdCNzMxMjNCMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlLmNwcCAqLzsgfTsKKwkJN0I3MzEyM0MyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNs
aWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNzMxMjMzMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9u
LmggKi87IH07CisJCTdCNzMxMjNEMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCNzMxMjM0MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCAq
LzsgfTsKKwkJN0I3MzEyM0UyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
NzMxMjM1MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggKi87
IH07CisJCTdCNzMxMjNGMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMx
MjM2MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCAqLzsgfTsK
KwkJN0I3MzEyNDAyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzcy
NUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovOyB9OworCQk3
QjczMTI0MTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzgyNUNDODUy
NDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKKwkJN0I3MzEyNDIy
NUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzOTI1Q0M4NTI1MDAzQjI3
OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAqLzsgfTsKKwkJN0JBQjExMTAyNUREMDJC
MzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQUIxMTBGMjVERDAyQjIwMDhG
QzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi87IH07CiAJCTdDMDY1
RjJDMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDY1RjJB
MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAq
LzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3
MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRBMEU2MDAwNDNF
MjQ5IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5Lmgg
Ki87IH07CkBAIC00NTQwLDYgKzQ1NTAsMTUgQEAKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2
IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1
ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1
ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAw
NkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAv
KiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QjczMTIzMzI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1DbGll
bnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM0MjVD
Qzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNTI1Q0M4NTI0MDAzQjI3OTYgLyogU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCNzMxMjM2MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNsaWVudENvbm5l
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNzI1Q0M4NTI0
MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzgyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIz
OTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
OTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1
NDcsNiArNDU2Niw3IEBACiAJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTZBMjU0QUZFQTcw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qjkw
NDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNH
ZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlv
bnNHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JBQjExMEYyNURE
MDJCMjAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1NzRGNjcyMDBFODVE
OTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25z
R2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NjgyNTc2
ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5ODUsMTAgKzcwMDUsMjAgQEAKIAkJCQkxQTNFRUQwRDE2
MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggKi8sCiAJCQkJMUFBQjAzNzcx
ODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuY3BwICovLAogCQkJCTFBQUIwMzc4MTg1
QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmggKi8sCisJCQkJN0JBQjExMEYyNUREMDJC
MjAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLywKIAkJCQky
REMxODAwMUQ5MERERDE1RkM2OTkxQTkgLyogU2hhcmVkQnVmZmVyQ29weS5jcHAgKi8sCiAJCQkJ
NUNDNURCOTEyMTQ4OEUxNjAwNkNCOEE4IC8qIFNoYXJlZEJ1ZmZlckNvcHkuaCAqLywKIAkJCQky
REMxODU1RURCRkI4NTBCQTBCNkQwNkQgLyogU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAg
Ki8sCiAJCQkJMkRDMTg4MUFDQkNBQjVENTdDNUM2RUYwIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuaCAqLywKKwkJCQk3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJN0I3MzEyMzMyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVh
bUNsaWVudENvbm5lY3Rpb24uaCAqLywKKwkJCQk3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi8sCisJCQkJN0I3MzEyMzEyNUNDODUyMzAwM0Iy
Nzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLywKKwkJCQk3QjczMTIzOTI1Q0M4NTI1
MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAqLywKKwkJCQk3QjczMTIzMjI1
Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8sCisJCQkJ
N0I3MzEyMzUyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAq
LywKKwkJCQk3QjczMTIzNzI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlv
bi5jcHAgKi8sCisJCQkJN0I3MzEyMzgyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaCAqLywKIAkJCQkxQUUwMEQ2OTE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVm
ZXJlbmNlLmNwcCAqLywKIAkJCQkxQUUwMEQ2QTE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVm
ZXJlbmNlLmggKi8sCiAJCQkpOwpAQCAtMTIwMTgsNiArMTIwNDgsNyBAQAogCQkJCUJDMkQwMjE3
MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFBQjRBOEQxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkFCMTExMDI1
REQwMkIzMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTRENTREMDQyMUYxRDcyRDAwN0UzQzM2IC8qIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMxQzFD
MThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9T
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjA2
Nyw2ICsxMjA5OCwxMSBAQAogCQkJCTkzNkIwNTk4MjMwMzkwOTcwMDJGQzA2QiAvKiBTdG9yYWdl
TWFuYWdlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM2OEVFREYyMzAzQTlFRDAwQkRCMTFB
IC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NUY0
RTA2MjMwQjJFOTUwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0I3MzEyM0MyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjNBMjVDQzg1MjUwMDNCMjc5NiAv
KiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTI0MjI1
Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTdCNzMxMjNFMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTI0MTI1Q0M4NTI1MDAzQjI3OTYgLyogU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENkMxODMyN0Mx
MjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk2QkQ4
NUQxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdGRDMxODYyMkIzNTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzg5NCw2ICsxMzkzMCwxMCBAQAogCQkJCTkzRDZC
NzgyMjU0Q0NDRjQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTMzNERFRDE2REU4Rjg4MDA2QThFMzggLyog
U3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM2
OEVFREUyMzAzQTkwMjAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjNGMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJl
YW1DbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjNEMjVDQzg1
MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdCNzMxMjNCMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjQwMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgzMjEyQjZB
NzEwMEY0OTNGRCAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQx
MUI3NTEyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQxMUI3NTIyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAK
aW5kZXggZjI5YmUwMDZlYjdiOTc2NGI3ODJkOTE2MjVjODAxNjBmZjhmMzZmMy4uYjE5YmMxZTBh
MDE5MDdmOWNlZGQ2MGE1NjU3NWZhZGY1YzlkODgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC00OCwxMyArNDgsMTYgQEAgUmVmUHRyPFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0
ZShjb25zdAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigp
LCBhdHRyaWJ1dGVzKSk7CiB9CiAKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJl
YW1TaXplID0gMSA8PCAyMTsKKwogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCiAgICAg
OiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShhdHRycykKICAgICAsIG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oJmdwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgICwgbV9zdHJlYW1Db25u
ZWN0aW9uKGdwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgZGVmYXVsdFN0cmVhbVNp
emUpCiB7CiAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBn
cHVQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMp
OwotICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseSk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgbV9zdHJlYW1Db25uZWN0aW9uLnN0cmVhbUJ1ZmZl
cigpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHkpOwogfQogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCkBAIC0xNjMsNyArMTY2LDcgQEAgR0NHTGVudW0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQogICAgIHJldHVybiBzdGQ6OmV4
Y2hhbmdlKG1fZXJyb3JXaGVuQ29udGV4dElzTG9zdCwgTk9fRVJST1IpOwogfQogCi12b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBT
dHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25z
KQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlk
U3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUsIFN0cmluZyYmIGF2YWlsYWJsZUV4
dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCiB7CiAgICAgaWYgKGlzQ29u
dGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTcyLDYgKzE3NSw3IEBAIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0
cmluZyYmIGF2YWlsYWJsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKCFtX2Rp
ZEluaXRpYWxpemUpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi5zZXRXYWtlVXBTZW1hcGhvcmUo
V1RGTW92ZShzZW1hcGhvcmUpKTsKICAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOwogICAgIGlu
aXRpYWxpemUoYXZhaWxhYmxlRXh0ZW5zaW9ucywgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDgzMWI0YjBhYjEzN2U2
YWFmODM1OTZlMGIwYTA3NmRmMWUwOTE3NjEuLjc4OTdmNmNmZTgzY2VjNTVmZmEyZjYzYTk3NGZh
YTdmMDEzYWE5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBA
IC0yOSwxMCArMjksMTEgQEAKIAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSVBDU2Vt
YXBob3JlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKyNpbmNsdWRlICJTdHJlYW1D
bGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaD4KQEAgLTMzNCwxOSArMzM1LDE4IEBAIHBy
b3RlY3RlZDoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCiAgICAgewotICAgICAgICBjb25uZWN0aW9uKCkuc2Vu
ZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2
NCgpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5
bmNSZXBseSk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gbV9zdHJlYW1D
b25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIGRlZmF1bHRTZW5kVGltZW91dCk7CiAgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1
bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCiAgICAg
ewotICAgICAgICByZXR1cm4gY29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSks
IFdURk1vdmUocmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9u
LnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKICAgICB9CiAgICAgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbi0+Y29ubmVjdGlvbigpOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUg
cmVjZWl2ZWQuCi0gICAgdm9pZCB3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYg
YXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAg
dm9pZCB3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUmJiwgU3RyaW5n
JiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CiAg
ICAgdm9pZCB3YXNMb3N0KCk7CiAgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CiAKQEAgLTM2MCw4ICsz
NjAsOCBAQCBwcml2YXRlOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3ND
b25uZWN0aW9uOwogICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKICAgICBHQ0dM
ZW51bSBtX2Vycm9yV2hlbkNvbnRleHRJc0xvc3QgPSBOT19FUlJPUjsKLQogICAgIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciB7IEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIElQQzo6U3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbiBtX3N0cmVhbUNvbm5lY3Rpb247CiB9OwogCiAvLyBUaGUgR0NHTCB0eXBl
cyBtYXAgdG8gZm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkg
Z2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYTdjNjQxMmFjOTQ2ZTI1OGNlMDEz
OGJjNDdiYzM4NjIxOTUwMjFkNy4uZjQzZWMwYTJlYWEzODRlNGVkZThkZDQ0MGQ5ZWZlMDI4YWNi
N2JmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKFdFQkdMKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
IE5vdFJlZkNvdW50ZWQgewotICAgIHZvaWQgV2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0
cmluZyBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zKQor
ICAgIHZvaWQgV2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlIHN0cmVh
bVdha2VVcFNlbWFwaG9yZSwgU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1
ZXN0YWJsZUV4dGVuc2lvbnMpCiAgICAgdm9pZCBXYXNMb3N0KCkKICAgICB2b2lkIFdhc0NoYW5n
ZWQoKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5kZXgg
N2FhZDdkYTIwNzBkZTgzZDE0YzcxZGQ5ODI0NzRhYWYxMDZhN2RiNS4uZjEzNDFkY2QyNzZkMGMx
MDFlNDRiZGRhMTdjZTQwYjhhM2NiMzYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaAppbmRleCBiYmU3ZmMyNmNmMzIzNDY2
OTVlNjFmZDAxZDZhMGIyMzJkZTBkMTg4Li5hNjExZGFiZjRlYmI1NmU3YTQyNTk0ZGQ3YmQzYmIw
YzgxYTVjODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDTmV0d29yay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgogI2luY2x1ZGUgIkxpYldlYlJU
Q1NvY2tldEZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJNRE5TUmVnaXN0ZXIuaCIKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3YTM0MDg4ZjBkZmUx
OGZlN2IxMTRhYzFiMDM4YmQ3OGIyNGMwMzBkLi40MGI1ZTg3NGUxMGFjMjAyNWU5ZjU1M2RhYmVm
NjQ1NWVjODk2ZGY3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDItMDUgIEtpbW1vIEtpbm51bmVuICA8a2tp
bm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBHUFUgcHJvY2VzcyBJUEMgc2hvdWxk
IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBhc3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzIzNDA2NTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFyayBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBtZXNzYWdlIHJlY2Vp
dmVyIGFzICJTdHJlYW0iLAorICAgICAgICBhIG5ldyB2YXJpYW50IG9mIHJlY2VpdmVyLgorCisg
ICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorCiAyMDIxLTAyLTE2ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgbWFrZUpT
QXJyYXkgaW4gYm90aCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjL0lPUy5tbS4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbAppbmRleCA1Njg1ZTkwNzUzNTNmZDFkMmNlYTk0NjIwNmI1N2U0OGI0
MjY2M2ZkLi44MzQ2MjgyMzQwMWMxNjgzMDcyMmFlYjM1NDVlY2ZlZWZiNjRhODgzIDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0
cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC04OSw3ICs4OSw3IEBAIGNvbnRleHRfbWVzc2FnZXNf
dGVtcGxhdGUgPSAoCiAgICAgdGVtcGxhdGVfcHJlYW1ibGUKICAgICArICIiIiNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7eworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFJlc2hhcGUoaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQ
cmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNo
cm9ub3VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMDZlNzQ3OWEyZTY1OWUzYTc4MzA2ZDMwNGJkMjE5M2EwMjFmNjUyZS4u
YWRhNWRjODcyNDQzYzc3YWJhNGQyMzgwY2Y2MjhlNGEwNjc1ZWIwYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIxLTAyLTE3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nlc3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9y
eSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQw
NjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
cmsgZmV3IHRlc3RzIGFzIG5vdCB0aW1pbmcgb3V0IG5vdyB0aGF0IHRoZSBpbXBsZW1lbnRhdGlv
biBpcyBub3Qgc28gc2xvdy4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlv
bnM6CisKIDIwMjEtMDItMTYgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW3NlbGVjdG9yc10gOmZvY3VzLXZpc2libGUgcGFyc2luZyBhbmQgZXhw
ZXJpbWVudGFsIGZsYWcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDNiOTBjMmFiYWMxYWZlMzVkZjg2NGE0YWJiOTNhYmIwMDI5MGZhYTQuLmYzYWY5M2M1OTZj
N2QzYTAxZGQ3MjkxYzkwNGJkMmQwMGVmOTgwZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dw
dS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3Mv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMzQsNyArMzQsNyBAQCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJ
bWFnZTJELW1zZS1mbGlwWS10cnVlLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvY2FudmFzL3dlYmds
L3RleEltYWdlMkQtdmlkZW8tZmxpcFktZmFsc2UuaHRtbCBbIFRpbWVvdXQgXQogZmFzdC9jYW52
YXMvd2ViZ2wvdGV4SW1hZ2UyRC12aWRlby1mbGlwWS10cnVlLmh0bWwgWyBGYWlsdXJlIF0KIGZh
c3QvY2FudmFzL3dlYmdsL3RleHR1cmUtYWN0aXZlLWJpbmQuaHRtbCBbIEZhaWx1cmUgXQotZmFz
dC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBUaW1lb3V0IF0KK2Zh
c3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgU2xvdyBdCiBmYXN0
L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQog
CiBmYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2guaHRtbCBbIEZhaWx1cmUgXQpA
QCAtMjMwLDcgKzIzMCw2IEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2Vz
LXRleHR1cmUtZmxvYXQtd2l0aC1jYW52YXMuaHRtbCBbIEZhaWx1cmUKIHdlYmdsLzEuMC4zL2Nv
bmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC12aWRlby5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJl
LWhhbGYtZmxvYXQtd2l0aC1jYW52YXMuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29u
Zm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgtdmlkZW8uaHRt
bCBbIEZhaWx1cmUgXQotd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJh
dy1jYWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9zdGF0ZS9n
bC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1h
bmNlL3RleHR1cmVzL2dsLXBpeGVsc3RvcmVpLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4z
L2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2Fu
dmFzLXJnYjU2NS5odG1sIFsgRmFpbHVyZSBdCkBAIC0yNDksNyArMjQ4LDcgQEAgd2ViZ2wvMS4w
LjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4LWltYWdlLXdlYmdsLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHBhcmFtZXRlci10ZXN0Lmh0bWwg
WyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtYWN0
aXZlLWJpbmQtMi5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0
dXJlcy90ZXh0dXJlLWFjdGl2ZS1iaW5kLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmdsLzEuMC4zL2Nv
bmZvcm1hbmNlL3VuaWZvcm1zL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgVGltZW91dCBd
Cit3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBsZXJzLXRlc3Qu
aHRtbCBbIFNsb3cgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvY2FudmFzL2NhbnZhcy10ZXN0
Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2NhbnZhcy9kcmF3LXN0
YXRpYy13ZWJnbC10by1tdWx0aXBsZS1jYW52YXMtdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJn
bC8yLjAuMC9jb25mb3JtYW5jZS9jYW52YXMvZHJhdy13ZWJnbC10by1jYW52YXMtdGVzdC5odG1s
IFsgRmFpbHVyZSBdCkBAIC0yNjEsNyArMjYwLDYgQEAgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9h
dC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9l
eHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9yZWFkaW5nL3JlYWQtcGl4ZWxzLXRlc3QuaHRt
bCBbIEZhaWx1cmUgXQotd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJh
dy1jYWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9zdGF0ZS9n
bC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1h
bmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQt
cmdiLXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sIFsgRmFpbHVyZSBdCkBAIC0yODcsNyAr
Mjg1LDcgQEAgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3Rl
eC0yZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl8KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNl
L3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRt
bCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2Fu
dmFzL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJk
LXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmds
LzIuMC4wL2NvbmZvcm1hbmNlL3VuaWZvcm1zL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsg
VGltZW91dCBdCit3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBs
ZXJzLXRlc3QuaHRtbCBbIFNsb3cgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3JlYWRpbmcv
cmVhZC1waXhlbHMtcGFjay1wYXJhbWV0ZXJzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4w
L2NvbmZvcm1hbmNlMi9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0K
IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXIxMWZfZzEx
Zl9iMTBmLXJnYi1mbG9hdC5odG1sIFsgRmFpbHVyZSBdCg==
</data>
<flag name="commit-queue"
          id="439212"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420627</attachid>
            <date>2021-02-17 03:47:47 -0800</date>
            <delta_ts>2021-02-17 10:58:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210217134745.patch</filename>
            <type>text/plain</type>
            <size>163444</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjNDg4MWE0MDdiNmI0NjYz
N2U1MzM0MGMyZGEwZmE5ZjQ2MGJiNDEuLmNkNmM5N2RkZjZlNjY1YjU5NTczZjMzY2ZmMWVmNTcz
M2FlMDdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2Vz
IGFuZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJl
Y2VpdmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNl
aXZlZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAg
cHJvY2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVu
dGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hy
b25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQg
dGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhh
dmluZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAg
IGluIHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0
IGluIGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBv
bmUgMm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJl
IHdpbGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24K
KyAgICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFy
IHRocmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJv
cHRpbWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAg
cHJvY2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2Ug
dG8gaGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGlj
aXBhdGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8g
c2FtZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1p
emF0aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFz
IHBhcnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAg
IEluIEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sg
cXVldWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQg
d2lsbCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24g
cGVyIGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAg
ICBTZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRp
b24gd2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYg
dGhlIG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUg
aXQgdGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91
dCBvZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9u
IGFycml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAg
ICBtZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2ls
bCBzdG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxs
IGNvbnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4g
cHJvY2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0
cmVhbSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1l
c3NhZ2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMg
c2VuZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0g
Y29ubmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9y
ZS4gVGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlz
IHdhaXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6
CisgICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAg
cG9pbnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAg
IC0gV2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2gg
fjYwZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVl
VW5pbml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4g
dGhlIHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0
aW9ucyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1
ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpzZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVl
dWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBtdWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0
aGUgSVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmls
aXR5IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xp
ZW50LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6
CisgICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNv
bnN0cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZm
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAo
SVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNw
ZWNpZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFy
ZSB1bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRo
cm91Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAg
ICAgVGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBp
cyByZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2Fz
ZSB3aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRo
ZSBzdHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAg
ICAgICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2Fr
ZXVwIHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNl
bWFwaG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24u
IEFsbCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2
ZSB0aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhl
eSBoYXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVz
dGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rp
b246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dCBjb25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0
YSB0aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVN
ZW1vcnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAo
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0
aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZl
ci4KKyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90
aCB0aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4K
KyAgICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1
cCwgdGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFs
bCB0aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAi
aG9sZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBv
ZiAiYnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAg
ICAgIGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBj
b250YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAg
ICAgRm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBw
cm9jZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUg
b2YgdGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwg
c2xlZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3
aWxsIHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdp
bGwgd2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9m
ZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXpl
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
cyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9j
ZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1l
c3NhZ2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUg
bWVzc2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRo
ZSBidWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRo
YXQgdGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1h
bCBJUEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3Nh
Z2UgdW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdT
dHJlYW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFz
CisgICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxs
IG1lc3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1l
c3NhZ2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAg
ICAgIGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUg
c3RyZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJ
UEMgbWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNz
ZWQuCisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0
aW9uSUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJl
YW0gbWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAg
ICAgIHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJl
YW1EZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVk
LgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZm
ZXI6OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5
bmNocm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToK
KyAgICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0
IG9mIHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6
On5TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZSk6CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVs
ZCBzaW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0x
NiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgYnVpbGQgZml4IGFmdGVyIHIyNzI5MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkNTc3ZTQzNDk5ZjE4
MTQ3OTFjOGEwZWY3MWNiMzRhMDI0YTFmYWUyLi5kYjc3MjM4MTQ0Y2E4YTMwZmY2ZWFjOWY4MmY1
YzQ5ZGNkMjFiMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2Rl
ckFWRlByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogewogICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0o
KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAgICAgIHJldHVybiBJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zMjYsMjEgKzMyNiwxMSBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAotR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RGTW92
ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25uZWN0
KCk7Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUo
c3RyZWFtKSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWJiMGQwMDhmM2Q3MTI5MjE3YjhlOTZl
ZmExOWJkNTFmZmFmYTE2Ny4uZDAyZTk3ODc3NTdjZDZmYzQ1YTlmOTg5NmU1YjExODdmOTViN2Jl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNz
aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKIAogI2luY2x1ZGUgPFdl
YkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWlu
Z01hbmFnZXIuaD4KQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtMjA2LDIwICsyMDcsMTAg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9Owog
I2VuZGlmCiAKLSAgICBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7Ci0gICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOwot
ICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoKTsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBI
YXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKKyAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKICNp
ZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBI
YXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CiAgICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKICNl
bmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDMwZjVjMjk4ODYyMTRmOTEwNGYxYWZhMDgzNWIyMzhhMzZkYzZlZjEuLmY2MzBi
MWJhZmUwZDJjMmVjNDAwMzdkOWE3YTdjNzIzZDI1OTk5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5n
QmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQ
Qzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgIHZvaWQgUmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRl
cywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQogICAgIHZvaWQg
UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNlbmRpZgogICAgIHZvaWQgQ2xlYXJO
b3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA3OWIzNDU5NmZi
ZjJkMGRmYzk4MTg2NTFiZGNmZWI0YjBhMGM4NzVkLi4xM2ViMWUyZjU3MTMzMDI3M2Q4NTdkNTMy
NWQzMTdiMzdlZDE1Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTMxLDU1ICsz
MSw3NyBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBvbmUgZ2xvYmFsIFdlYkdMIHByb2Nl
c3NpbmcgaW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiBy
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZT4gaW5zdGFuY2UoIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsKKyAgICByZXR1cm4gaW5zdGFuY2Uu
Z2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJikK
IHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNl
bmRpZgogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92
ZShjb250ZXh0KSkKLSAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0
cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0p
CisgICAgOiBtX3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMPjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3Ry
ZWFtV29ya1F1ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAg
ICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhp
cyk7Ci0gICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwotICAgIFN0cmluZyBleHRlbnNp
b25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMp
OwotICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmlu
ZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwg
ZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQogewotICAgIGlmIChh
dXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmdldCgpKQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVj
ZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVCghbV9zdHJlYW1Db25uZWN0aW9uKTsKKyAg
ICBBU1NFUlQoIW1fY29udGV4dCk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKLSAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmdldCgpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAg
cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbYXR0cmli
dXRlcyA9IFdURk1vdmUoYXR0cmlidXRlcyksIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlSW5pdGlhbGl6
ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICB9KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24t
PnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAordm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAg
ICAgIHJldHVybiAmZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpOwotICAg
IHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgbV9z
dHJlYW1Db25uZWN0aW9uLT5zdG9wUmVjZWl2aW5nTWVzc2FnZXMoTWVzc2FnZXM6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3Ry
ZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHJlZkZyb21D
b25uZWN0aW9uKV0oKSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtRdWV1ZVVuaW5pdGlh
bGl6ZSgpOworICAgIH0pOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3Jr
UXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0
dHJpYnV0ZXMpCit7CisgICAgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0
cmlidXRlcykpOworICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRD
bGllbnQoKnRoaXMpOworICAgICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0
U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICAgICAgU3RyaW5nIHJl
cXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6
UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSwgZXh0ZW5zaW9u
cywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFsc2UsIElQ
Qzo6U2VtYXBob3JlIHsgfSwgIiIsICIiKSk7CiB9CiAKLXVpbnQ2NF90IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit2b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVVbmluaXRpYWxpemUoKQogewotICAgIHJldHVy
biBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIG1fY29udGV4
dCA9IG51bGxwdHI7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKQEAgLTg4LDcgKzExMCw3
IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCiAKIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQogewotICAgIHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKQEAgLTk4LDcgKzEyMCw3IEBAIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpKTsKIH0KIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMDAxNTlhYzhiNTg2YThiNjJhM2RkYTNhNTcw
MDRlODgzZTE1NmQwOC4uNTJlNDc2OTEwYTRlYWQwMDM5Y2UwYzFhYTU1ZTRmNDQ2YTA0OTU2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLQorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CkBAIC00OSwzMSArNDgsMjEgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0KIC8v
IEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdl
cyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBo
aWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KIC8vIFRo
ZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ci0gICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRlIElQQzo6TWVz
c2FnZVJlY2VpdmVyCi0gICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpD
bGllbnQgeworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+LCBwcml2YXRlIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKIAotICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKyAg
ICAvLyBJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+
IHRlbXBsYXRlIGNvbnRyYWN0IGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgZGlkUmVjZWl2ZVN0
cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2Rl
ciYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMPik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVz
LgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBm
aW5hbDsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZp
bmFsOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgotICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAg
dm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsK
IAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQg
ZGlkQ29tcG9zaXRlKCkgZmluYWw7CkBAIC05NSw4ICs4NCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBO
T0xJTlQKIAotICAgIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250
ZXh0OwotICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOworICAgIHZvaWQgd29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3Jt
V29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JikgeyB9OworICAgIHZvaWQgd29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2UpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOyB9CisKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj4gbV9zdHJlYW1Db25uZWN0
aW9uOworICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250
ZXh0OwogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5p
bgppbmRleCA3YTE5MjVkYmIyN2FiZjNkMzAzNGNiN2ZjYjM4YTNmMzkzZTNkY2ZhLi40NzAyYzY0
Zjc1ZTQ3NmNmZjFhMTAwMDUwNzU1MDk2YmRjZTc4OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAvLyBUaGlzIGZpbGUgaXMg
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFJlc2hhcGUoaW50MzJf
dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQ
cmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNo
cm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggOGUyZDFmYzY1
MTg2MjgzOTVlOTc0MWM0NGU3YWM4NTFiMDhlZjYyNy4uYzRlNDExMjYxOTViMzUyOThhZWFmMmZj
YWVmMjBhZGZiNDMxZDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApA
QCAtMzksMTAgKzM5LDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wsIHByaXZh
dGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gewogcHVibGlj
OgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoKSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCBvdmVycmlkZXMuCisgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOwogICAgIHZvaWQg
cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmln
aHQmJik+JiYpIGZpbmFsOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2Fw
Q2hhaW4gb3ZlcnJpZGVzLgpAQCAtNTYsMTYgKzU3LDIzIEBAIHByaXZhdGU6CiAKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYg
YXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcikKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMQ29jb2EoYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKSk7CisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3Rh
bmNlLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5j
ZTsKIH0KIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woYXR0cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykpCitSZW1vdGVH
cmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgV1RGTW92ZShzdHJlYW0pKQogewogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OnBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQoreworICAgIG1fY29udGV4dCA9IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKFdURk1vdmUoYXR0cmlidXRlcyks
IHRoaXMpOworfQorCiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVy
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQogewogICAgIHJl
dHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5k
ZXggMmM3NjI1MTg2YWVlMTVkNzcyYjc2NGJkZDU1OWYwYTFjMjcwYmQ0MS4uNjIxMmVhMDRlOWQ4
ZThlMGMxODZlMTEyYTBiMzgwNzRjNWIxNDgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApA
QCAtODMsNyArODMsNyBAQCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5n
QmFja2VuZCgpCiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtyZW1vdGVSZXNvdXJjZUNhY2hl
ID0gV1RGTW92ZShtX3JlbW90ZVJlc291cmNlQ2FjaGUpXSB7IH0pOwogfQogCi12b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpc2Nvbm5lY3QoKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBiN2FlZTI2Mjc3MDViYjlhY2MxMDE5ZDcx
NTVlZjI3ZTE1M2QyYjI4Li5hNGFhN2I0Nzg3NTVhOWJiNWUyOTNmZDFiYzgyOGNjZGZlMjQ5NDQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYm
IHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKCk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKICAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4gbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlOyB9CiAKQEAgLTc4LDggKzc5LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlv
bik7CiAKLSAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKLQogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggNDk3
MTcxYjU2NDI2ODkyODk1MjEwNmJkN2VlYTU0YmVlOTNiZWUyMy4uYjBjZjcwZjA2ZTExOGUwMjFk
ODY0ZGViOThkNDE0ZWZiYTllN2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpZiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENSZXNvbHZlcklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUlRDTW9uaXRvci5oIgogI2luY2x1ZGUgIlJUQ05ldHdv
cmsuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29k
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAppbmRleCAz
MjA3NmFmZDAyYTg5OGExZTM5ZGUyODNlMTAyYjg1OTQ3ZjhlZGM3Li41MzM1MGY5ZjdjOGMxMmJl
NjI3NTk5OWM3ZWJmYzNjN2UwOTFiY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2Rlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNzUsNiArNzYsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBBcmd1bWVudENv
ZGVyIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSksIHNpemVv
ZihUKSwgYWxpZ25vZihUKSk7CkBAIC05MSw2ICs5Myw3IEBAIHN0cnVjdCBBcmd1bWVudENvZGVy
PFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4geworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IFQgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxUPihXVEY6
OmVudW1Ub1VuZGVybHlpbmdUeXBlPFQ+KHZhbHVlKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGIwYTQzZGU5ZDdhMTM3MjE2YTE5YmY3
ZDBiZDVlMTkxMTNiNWRhNjguLmFlZTg5ZTYyNjk2YzU2MGYwYTE4YmZiMWQ2NzY5MTY1MGU3ZmYy
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCiAjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCkBAIC0xMTEsNyArMTEyLDcgQEAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJn
dW1lbnRDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENTdHJpbmcKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBB
cmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKICAgICAvLyBTcGVjaWFsIGNhc2UgdGhlIG51bGwgc3RyaW5nLgpAQCAt
MTMwLDYgKzEzMSwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVsc2UKICAgICAgICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oc3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgYWxpZ25v
ZihVQ2hhcikpOwogfQordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNv
ZGU8RW5jb2Rlcj4oRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwordGVtcGxhdGUKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVh
bUNvbm5lY3Rpb25FbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIGlubGluZSBPcHRpb25hbDxTdHJpbmc+IGRlY29kZVN0
cmluZ1RleHQoRGVjb2RlciYgZGVjb2RlciwgdWludDMyX3QgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjBlYjE3YTBmZDgyNjBkNDBi
ZWM3ZmNkYWFlYTIzYmM1ZTg2NWUwOS4uZjg1Njk4MDczZGQwNDViMjgxNmUxNjEwY2E0OTk2YTVk
NGVlNmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5o
CkBAIC01NSw2ICs1NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVBcmd1
bWVudENvZGVyIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4gewogICAgIHVzaW5nIEFy
cmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKICAgICB7CiAg
ICAgICAgIGlmICghRXh0ZW50KQpAQCAtNzQsNiArNzUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBF
eHRlbgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJl
ZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJy
YXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWlj
RXh0ZW50PjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5
UmVmZXJlbmNlKQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI2Niw2ICsyNjgsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnBhaXI8VCwg
VT4+IHsKIAogdGVtcGxhdGU8c2l6ZV90IGluZGV4LCB0eXBlbmFtZS4uLiBFbGVtZW50cz4KIHN0
cnVjdCBUdXBsZUVuY29kZXIgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6dHVwbGU8RWxl
bWVudHMuLi4+JiB0dXBsZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8c2l6
ZW9mLi4uKEVsZW1lbnRzKSAtIGluZGV4Pih0dXBsZSk7CkBAIC0yNzUsNiArMjc4LDcgQEAgc3Ry
dWN0IFR1cGxlRW5jb2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3Ry
dWN0IFR1cGxlRW5jb2RlcjwwLCBFbGVtZW50cy4uLj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBzdGQ6OnR1
cGxlPEVsZW1lbnRzLi4uPiYpCiAgICAgewogICAgIH0KQEAgLTMzOCw2ICszNDIsNyBAQCBzdHJ1
Y3QgVHVwbGVEZWNvZGVyPDA+IHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRz
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4geworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkKICAgICB7CiAg
ICAgICAgIFR1cGxlRW5jb2RlcjxzaXplb2YuLi4oRWxlbWVudHMpLCBFbGVtZW50cy4uLj46OmVu
Y29kZShlbmNvZGVyLCB0dXBsZSk7CkBAIC0zNzQsNiArMzc5LDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6
OktleVZhbHUKIHRlbXBsYXRlPGJvb2wgZml4ZWRTaXplRWxlbWVudHMsIHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWlu
Q2FwYWNpdHk+IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6
ZV90IG1pbkNhcGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2RlcjxmYWxzZSwgVCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWlu
Q2FwYWNpdHk+JiB2ZWN0b3IpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih2ZWN0b3Iuc2l6ZSgpKTsKQEAgLTQxMSw2ICs0MTcsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxl
ciwgc2l6ZV90IG1pbgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4gc3Ry
dWN0IFZlY3RvckFyZ3VtZW50Q29kZXI8dHJ1ZSwgVCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlciwgbWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiB2ZWN0b3IpCiAg
ICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2ZWN0b3Iuc2l6
ZSgpKTsKQEAgLTc1Myw2ICs3NjAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PENTdHJpbmc+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3RyaW5n
PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFN0cmluZyYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxT
dHJpbmc+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDhiNzQzMTRhYzA0YTU1YTQ4YmQwOTM2MjljMzYyMjA3MWUwZjJjNTAu
LjFkMmVhNDg1YTk5OGFlMjY0NDZhM2FlNjAwZTA0ZjMwY2E4ZTFkNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQXJndW1l
bnRDb2Rlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3Mu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIgpAQCAtOTMwLDggKzkzMSwxMyBA
QCB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikK
IAogdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNz
YWdlTmFtZSBtZXNzYWdlTmFtZSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
CisgICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgeworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZU5hbWVdKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPmlzVmFsaWQoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2NsaWVu
dC5kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UocHJvdGVjdGVkVGhpcywgbWVzc2FnZU5hbWUpOwor
ICAgICAgICB9KTsKKyAgICB9CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDQ4NTUyMDEyNDdj
MjVkZjg1NTJjNWE1NGEwNDY3N2I4ZDcyYjgyY2EuLmZlOWNhMzE4NjA2ZmRlZGM2MWQyMWQwN2Rm
MGY4YWIxYmZlOTNiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
QEAgLTMwLDEwICszMCw5IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5j
b2Rlci5oIgotI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZVF1ZXVlTWFwLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSA8
YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0
Zi9Db25kaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgpAQCAtMzEyLDYgKzMxMSw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBk
aXNwYXRjaE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJlY2VpdmVyJiwgc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+JiYpOworICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFk
LgorICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUp
OwogcHJpdmF0ZToKICAgICBDb25uZWN0aW9uKElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENs
aWVudCYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIpOwpAQCAtMzM5
LDcgKzM0MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShEZWNvZGVyJik7CiAg
ICAgdm9pZCBkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImKTsKLSAgICB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKICAgICB2b2lkIGRpZEZhaWxU
b1NlbmRTeW5jTWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCA4MGEwZjc1YzcwNTcy
YmY0YzI0ODUyNmZlZDJmZWZiMDk3Y2RjOGY5Li40ZGUwNTA5OGM0NjMyYWQ0NWY0ZTg1M2Y2N2U5
ZWUzZTc3MTM2ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAt
OTAsNiArOTAsMTcgQEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNp
emVfdCBidWZmZXJTaXplLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGUKICAgICAgICAgbWFya0ludmFs
aWQoKTsKIH0KIAorRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVf
dCBzdHJlYW1TaXplLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgIDogbV9idWZmZXIgeyBz
dHJlYW0gfQorICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CisgICAgLCBtX2J1ZmZlckVu
ZCB7IG1fYnVmZmVyICsgc3RyZWFtU2l6ZSB9CisgICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yKFtd
IChjb25zdCB1aW50OF90Kiwgc2l6ZV90KSB7IH0pCisgICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVz
dGluYXRpb25JRCkKK3sKKyAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkKKyAgICAgICAg
cmV0dXJuOworfQorCiBEZWNvZGVyOjp+RGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1fYnVmZmVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA2Njk4NWJjMzg3ZDc0Mzkx
MzcwMWIxMTdiOTE4MDBiOWEyNzcxYWI4Li5iM2M2YWM4YTJkNWFjYmEyYzIxNTI4ZGZlYjE4YzY0
MTVjZWRkMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC01MSw2ICs1
MSw3IEBAIGNsYXNzIERlY29kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNp
emUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCksIFZl
Y3RvcjxBdHRhY2htZW50PiYmKTsKICAgICBleHBsaWNpdCBEZWNvZGVyKGNvbnN0IHVpbnQ4X3Qq
IGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29u
c3QgdWludDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKKyAgICBEZWNvZGVy
KGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOwogICAgIH5EZWNvZGVyKCk7CiAKICAgICBEZWNvZGVyKGNvbnN0IERlY29kZXIm
KSA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRs
ZU1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApp
bmRleCBlYThhZDQ1YzA5ZWI2ODJlMGU4NjIzYjkzNGQ1ZTBlOWM3MDI2MjJhLi45Mjk2M2UyMWUx
ZDcxN2Y2NGE4MjE5YzUyODliYWYwNTNmMDk5NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvSGFuZGxlTWVzc2FnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0xNjQsNiArMTY1LDI4IEBAIHZv
aWQgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIERlY29kZXImIGRlCiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24s
IFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3Qs
IGZ1bmN0aW9uKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5h
bWUgTUY+Cit2b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZSYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5j
dGlvbikKK3sKKyAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElEKSB7CisgICAgICAgIGRl
Y29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE9wdGlv
bmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJn
dW1lbnRzOworICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOworICAgIGlmICghYXJndW1lbnRzKSB7
CisgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtzeW5j
UmVxdWVzdElELCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBh
cmdzKSBtdXRhYmxlIHsKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShzeW5jUmVx
dWVzdElELCBhcmdzLi4uKTsKKyAgICB9OworICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3Zl
KCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlv
bik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgog
dm9pZCBoYW5kbGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYg
ZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lM2EwNTZhMDIwMWMyYWQwZTc0OTBlYzdkN2ZlYmJkZDc3MTA5N2IxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZl
TWVzc2FnZVJlY2VpdmVRdWV1ZS5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNs
dWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgSVBD
IHsKKworLy8gU2NvcGVkIGhvbGRlciBmb3Igb2JqZWN0cyB0aGF0IGhhdmUgYWN0aXZlIG1lc3Nh
Z2UgcmVjZWl2ZSBxdWV1ZXMuIEVuZm9yY2VzIHRoYXQKKy8vIG9uY2UgaG9sZGVyIHN0b3BzIGhv
bGRpbmcgdGhlIG9iamVjdCwgdGhlIG1lc3NhZ2UgcXVldWUgc2hvdWxkIGJlIHJlbW92ZWQuCisv
LyBUaGUgY29udmVudGlvbiBpcyB0byBjYWxsIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKSBmb3IgdGhl
IG9iamVjdC4KKy8vIE9wdGlvbmFsbHkgdGhlIG9iamVjdCBjYW4gb2J0YWluIHRoZSBvd25pbmcg
cmVmZXJlbmNlIHRoYXQgd2FzIHVzZWQgdG8gaG9sZCB0aGUgb2JqZWN0CisvLyBpbiBvcmRlciB0
byBhdHRlbXB0IHRvIGF2b2lkIG5lZWRsZXNzIGRlc3RydWN0aW9uIG9mIHRoZSBvYmplY3QgaW4g
aG9sZGVyIHRocmVhZC4KKy8vIFRoaXMgdXNlZnVsIGluIHRoZSBjYXNlIHRoZSBzdG9wIGludm9r
ZXMgYSBjbGVhbnVwIHRhc2sgaW4gdGhlIG1lc3NhZ2UgaGFuZGxlcgorLy8gdGhyZWFkLgordGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEhvbGRlclR5cGUgPSBSZWZQdHI8VD4+CitjbGFz
cyBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKCkgPSBkZWZhdWx0OworICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBVPgorICAgIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoVSYmIG9iamVjdCkK
KyAgICAgICAgOiBtX29iamVjdChXVEZNb3ZlKG9iamVjdCkpCisgICAgeworICAgIH0KKyAgICBT
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZl
UXVldWUmJiBvdGhlcikKKyAgICAgICAgOiBtX29iamVjdChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
b2JqZWN0LCBudWxscHRyKSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWUmIG9wZXJhdG9yPShTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlJiYg
b3RoZXIpCisgICAgeworICAgICAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgICAg
IHJlc2V0KCk7CisgICAgICAgICAgICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9v
YmplY3QsIG51bGxwdHIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9
CisgICAgflNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoKQorICAgIHsKKyAgICAgICAg
cmVzZXQoKTsKKyAgICB9CisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAgICBpZiAoIW1f
b2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdG9wTGlzdGVuaW5nRm9ySVBD
QW5kUmVsZWFzZShtX29iamVjdCk7CisgICAgfQorICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJu
IG1fb2JqZWN0LmdldCgpOyB9Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Cisg
ICAgc3RhdGljIGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0KSAt
PiBkZWNsdHlwZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0LnJlbGVhc2VOb25O
dWxsKCkpLCB2b2lkKCkpCisgICAgeworICAgICAgICBvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJ
UEMob2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPgorICAgIHN0YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9i
amVjdCkgLT4gZGVjbHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKFdURk1vdmUob2Jq
ZWN0KSksIHZvaWQoKSkKKyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQ
QyhXVEZNb3ZlKG9iamVjdCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAg
IHN0YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9iamVjdCkgLT4g
ZGVjbHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKCksIHZvaWQoKSkKKyAgICB7Cisg
ICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQygpOworICAgICAgICBvYmplY3QgPSBu
dWxscHRyOworICAgIH0KKyAgICBIb2xkZXJUeXBlIG1fb2JqZWN0OworfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoc3RkOjp1bmlxdWVf
cHRyPFQ+JiYpIC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwgc3RkOjp1bmlx
dWVfcHRyPFQ+PjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Njb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWUoUmVmPFQ+JiYpIC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8
VCwgUmVmUHRyPFQ+PjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGY1Y2RmMDA4ZTVhN2Yy
ZDJmMTAyYTIzNWMzYzIyNTE3MzM3NmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1DbGll
bnRDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVf
dCBzaXplKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2J1ZmZlcihz
aXplKQoreworICAgIC8vIFJlYWQgc3RhcnRzIGZyb20gMCB3aXRoIGxpbWl0IG9mIDAgYW5kIHJl
YWRlciBzbGVlcGluZy4KKyAgICBzaGFyZWRTZW5kZXJPZmZzZXQoKS5zdG9yZShTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVt
b3J5X29yZGVyX3JlbGF4ZWQpOworICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAgd2l0aCBhIGxp
bWl0IG9mIHRoZSB3aG9sZSBidWZmZXIuCisgICAgc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5zdG9y
ZSgwLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30KKwordm9pZCBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUp
Cit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUgPSBXVEZNb3Zl
KHNlbWFwaG9yZSk7CisjZW5kaWYKKyAgICB3YWtlVXBSZWNlaXZlcigpOworfQorCit2b2lkIFN0
cmVhbUNsaWVudENvbm5lY3Rpb246Ondha2VVcFJlY2VpdmVyKCkKK3sKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBpZiAobV93YWtlVXBTZW1hcGhvcmUpCisgICAgICAgIG1fd2FrZVVwU2VtYXBo
b3JlLT5zaWduYWwoKTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRmZmZlZWYz
YTA5OTVhMWIxODJhNWNmOWU4NjA3MDA5ODZiYzUxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsx
LDI0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgor
I2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2lu
Y2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0
aW9uRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgorbmFtZXNwYWNlIElQQyB7CisKKy8vIEEgbWVzc2FnZSBzdHJlYW0g
aXMgYSBoYWxmLWR1cGxleCB0d28td2F5IHN0cmVhbSBvZiBtZXNzYWdlcyB0byBhIGJldHdlZW4g
YSBzZW5kZXIgYW5kIHRoZQorLy8gZGVzdGluYXRpb24gcmVjZWl2ZXIuCisvLworLy8gU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbiBjYW4gc2VuZCBtZXNzYWdlcyBhbmQgcmVjZWl2ZSBzeW5jaHJvbm91
cyByZXBsaWVzCisvLyB0aHJvdWdoIHRoaXMgbWVzc2FnZSBzdHJlYW0gb3IgdGhyb3VnaCBJUEM6
OkNvbm5lY3Rpb24uCisvLworLy8gVGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdpbGwgcmVjZWl2
ZSBtZXNzYWdlcyBpbiBvcmRlciBfZm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdlc18uCisvLyBU
aGUgd2hvbGUgSVBDOjpDb25uZWN0aW9uIG1lc3NhZ2Ugb3JkZXIgaXMgbm90IHByZXNlcnZlZC4K
KworY2xhc3MgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoU3RyZWFtQ2xpZW50Q29ubmVjdGlvbik7CitwdWJsaWM6CisgICAgU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiwgc2l6ZV90IGJ1ZmZlclNpemUpOworCisgICAgU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYgc3RyZWFtQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0K
KyAgICB2b2lkIHNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2Jq
ZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpOworCisgICAg
dXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRT
eW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCBPYmplY3RJZGVudGlmaWVyPFU+
IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0
IFNwYW4geworICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXplX3Qgc2l6ZTsKKyAg
ICB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVy
OjptZXNzYWdlQWxpZ25tZW50OworICAgIGJvb2wgdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRl
ZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIHRpbWVvdXQpOworICAgIHZv
aWQgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmKTsKKworICAgIE9wdGlvbmFs
PFNwYW4+IHRyeUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KTsKKyAgICBlbnVtIGNsYXNz
IFdha2VVcFJlY2VpdmVyIDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAgICBZZXMKKyAgICB9
OworICAgIFdha2VVcFJlY2VpdmVyIHJlbGVhc2Uoc2l6ZV90IHdyaXRlU2l6ZSk7CisgICAgdm9p
ZCB3YWtlVXBSZWNlaXZlcigpOworCisgICAgU3BhbiBhbGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
aW1pdCk7CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNv
bnN0OworCisgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIud3JhcE9mZnNldChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0
KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3Nh
Z2VBbGlnbm1lbnQ+KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAgIEF0b21pYzxz
aXplX3Q+JiBzaGFyZWRTZW5kZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZW5kZXJPZmZz
ZXQoKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0
dXJuIG1fYnVmZmVyLnJlY2VpdmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQorCisgICAgQ29ubmVjdGlvbiYgbV9j
b25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgeyAwIH07CisK
KyAgICBzaXplX3QgbV9zZW5kZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciBtX2J1ZmZlcjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPcHRpb25hbDxTZW1hcGhv
cmU+IG1fd2FrZVVwU2VtYXBob3JlOworI2VuZGlmCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPgorYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNz
YWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCkK
K3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFUOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7Cisg
ICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSAr
IHRpbWVvdXQ7CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKGRlc3RpbmF0
aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAo
IXNwYW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB7CisgICAgICAgIFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyIG1lc3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBzcGFuLT5kYXRhLCBzcGFu
LT5zaXplIH07CisgICAgICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50
cygpKSB7CisgICAgICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2UobWVzc2FnZUVu
Y29kZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAgICAgICAgICAgICB3YWtl
VXBSZWNlaXZlcigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9
CisgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOworICAg
IGlmICghbV9jb25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRCwg
SVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5k
U3luY1Jlc3VsdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZSwg
dHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlv
bklELCBTZWNvbmRzIHRpbWVvdXQpCit7CisgICAgc3RhdGljX2Fzc2VydChUOjppc1N5bmMsICJN
ZXNzYWdlIGlzIG5vdCBzeW5jISIpOworICAgIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0
ID0gTW9ub3RvbmljVGltZTo6bm93KCkgKyB0aW1lb3V0OworICAgIGlmICghdHJ5U2VuZERlc3Rp
bmF0aW9uSURJZk5lZWRlZChkZXN0aW5hdGlvbklELnRvVUludDY0KCksIGFic29sdXRlVGltZW91
dCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZShhYnNv
bHV0ZVRpbWVvdXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50IHNlbmQgdGhyb3VnaCBzdHJlYW0uCisgICAgLy8gRklYTUU6IGlt
cGxlbWVudCByZWNlaXZlIHRocm91Z2ggc3RyZWFtLgorICAgIHNlbmRQcm9jZXNzT3V0T2ZTdHJl
YW1NZXNzYWdlKFdURk1vdmUoKnNwYW4pKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fY29ubmVjdGlv
bi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25J
RC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKKyAgICBBU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4g
V1RGTW92ZShyZXN1bHQpOworfQorCitpbmxpbmUgYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9u
Ojp0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1v
bm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0KQoreworICAgIGlmIChkZXN0aW5hdGlvbklEID09
IG1fY3VycmVudERlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGF1dG8g
c3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNvZGVyIHsg
TWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQsIHNwYW4tPmRhdGEsIHNwYW4tPnNp
emUgfTsKKyAgICBpZiAoIShlbmNvZGVyIDw8IGRlc3RpbmF0aW9uSUQpKSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBTaXplIG9mIHRoZSBtaW5pbXVtIGFsbG9jYXRpb24gaXMg
aW5jb3JyZWN0LiBMaWtlbHkgYW4gYWxpZ25tZW50IGlzc3VlLgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShlbmNvZGVyLnNpemUo
KSk7CisgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtl
VXBSZWNlaXZlcjo6WWVzKQorICAgICAgICB3YWtlVXBSZWNlaXZlcigpOworICAgIG1fY3VycmVu
dERlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgIHJldHVybiB0cnVlOworfQorCitp
bmxpbmUgdm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9mU3RyZWFt
TWVzc2FnZShTcGFuJiYgc3BhbikKK3sKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNv
ZGVyIHsgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UsIHNwYW4uZGF0YSwg
c3Bhbi5zaXplIH07CisgICAgLy8gTm90IG5vdGlmeWluZyBvbiB3YWtlIHVwIHNpbmNlIHRoZSBv
dXQtb2Ytc3RyZWFtIG1lc3NhZ2Ugd2lsbCBkbyB0aGF0LgorICAgICh2b2lkKSByZWxlYXNlKGVu
Y29kZXIuc2l6ZSgpKTsKK30KK2lubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKE1vbm90b25pY1RpbWUg
dGltZW91dCkKK3sKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNpemVfdCBzZW5kZXJMaW1pdCA9
IGNsYW1wZWRMaW1pdChzaGFyZWRSZWNlaXZlck9mZnNldCgpLmxvYWQoc3RkOjptZW1vcnlfb3Jk
ZXJfYWNxdWlyZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fc2VuZGVy
T2Zmc2V0LCBzZW5kZXJMaW1pdCk7CisgICAgICAgIGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1N
ZXNzYWdlU2l6ZSkgeworICAgICAgICAgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3co
KTsKKyAgICAgICAgICAgIGlmIChub3cgPj0gdGltZW91dCkKKyAgICAgICAgICAgICAgICBicmVh
azsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIHNpemVfdCBvbGRTZW5kZXJMaW1p
dCA9IHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHNlbmRlckxp
bWl0LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpyZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGlu
Z1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3Jl
bCk7CisgICAgICAgICAgICBpZiAoc2VuZGVyTGltaXQgPT0gb2xkU2VuZGVyTGltaXQpCisgICAg
ICAgICAgICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLndhaXRGb3IodGltZW91
dCAtIG5vdyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzZW5kZXJMaW1p
dCA9IGNsYW1wZWRMaW1pdChvbGRTZW5kZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgcmVzdWx0
ID0gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKKyAgICAgICAgICAg
IH0KKyNlbHNlCisgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisjZW5kaWYKKyAgICAgICAg
fQorICAgICAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXplKQorICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30K
KworaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVyIFN0cmVhbUNs
aWVudENvbm5lY3Rpb246OnJlbGVhc2Uoc2l6ZV90IHNpemUpCit7CisgICAgc2l6ZSA9IHN0ZDo6
bWF4KHNpemUsIG1pbmltdW1NZXNzYWdlU2l6ZSk7CisgICAgc2l6ZV90IGV4cGVjdGVkUmVjZWl2
ZXJMaW1pdCA9IG1fc2VuZGVyT2Zmc2V0OworICAgIG1fc2VuZGVyT2Zmc2V0ID0gd3JhcE9mZnNl
dChhbGlnbk9mZnNldChtX3NlbmRlck9mZnNldCkgKyBzaXplKTsKKyAgICBBU1NFUlQobV9zZW5k
ZXJPZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICAvLyBJZiB0aGUgcmVjZWl2ZXIgd3JvdGUgb3Zl
ciB0aGUgc2VuZGVyT2Zmc2V0IHdpdGggc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFn
LCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgorICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hh
cmVkU2VuZGVyT2Zmc2V0KCkuZXhjaGFuZ2UobV9zZW5kZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29y
ZGVyX2FjcV9yZWwpOworICAgIGlmIChyZWNlaXZlckxpbWl0ICE9IGV4cGVjdGVkUmVjZWl2ZXJM
aW1pdCkKKyAgICAgICAgcmV0dXJuIFdha2VVcFJlY2VpdmVyOjpZZXM7CisgICAgcmV0dXJuIFdh
a2VVcFJlY2VpdmVyOjpObzsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNw
YW4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6YWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxpbWl0KQoreworICAgIEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBBU1NF
UlQobGltaXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBzaXplX3QgYWxpZ25lZCA9IGFsaWduT2Zmc2V0
KG9mZnNldCk7CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSAwOworICAgIGlmIChvZmZzZXQgPCBs
aW1pdCkgeworICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgJiYgYWxpZ25lZCA8IGxpbWl0
KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwgbGltaXQp
CisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfQor
ICAgIHJldHVybiB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30KKworaW5saW5l
IHNpemVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVf
dCBsaW1pdCkKK3sKKyAgICBpZiAoIWxpbWl0KQorICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAt
IDEgLSBvZmZzZXQ7CisgICAgaWYgKGxpbWl0IDw9IG9mZnNldCkKKyAgICAgICAgcmV0dXJuIGRh
dGFTaXplKCkgLSBvZmZzZXQ7CisgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0IC0gMTsKK30KKwor
aW5saW5lIHNpemVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjbGFtcGVkTGltaXQoc2l6ZV90
IHVudHJ1c3RlZExpbWl0KSBjb25zdAoreworICAgIEFTU0VSVCh1bnRydXN0ZWRMaW1pdCA8IChk
YXRhU2l6ZSgpIC0gMSkpOworICAgIHJldHVybiBzdGQ6Om1pbih1bnRydXN0ZWRMaW1pdCwgZGF0
YVNpemUoKSAtIDEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NzlkYWJlNjg5YWQ0
NjI4ZTUyZGJkMWJhZTBmNjFmZTZkZTE2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApAQCAtMCwwICsxLDk3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IEZmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KworbmFtZXNwYWNlIElQQyB7CisKK3N0YXRpYyBSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IGNy
ZWF0ZU1lbW9yeShzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvIG1lbW9yeSA9IFdlYktpdDo6U2hh
cmVkTWVtb3J5OjphbGxvY2F0ZShzaXplKTsKKyAgICBpZiAoIW1lbW9yeSkKKyAgICAgICAgQ1JB
U0goKTsKKyAgICByZXR1cm4gbWVtb3J5LnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK1N0cmVhbUNv
bm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoc2l6ZV90IG1lbW9yeVNpemUp
CisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisgICAgLCBtX3No
YXJlZE1lbW9yeShjcmVhdGVNZW1vcnkobWVtb3J5U2l6ZSkpCit7Cit9CisKK1N0cmVhbUNvbm5l
Y3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVt
b3J5PiYmIG1lbW9yeSwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNlbmRlcldhaXRT
ZW1hcGhvcmUpCisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisg
ICAgLCBtX3NoYXJlZE1lbW9yeShXVEZNb3ZlKG1lbW9yeSkpCisgICAgLCBtX3NlbmRlcldhaXRT
ZW1hcGhvcmUoV1RGTW92ZShzZW5kZXJXYWl0U2VtYXBob3JlKSkKK3sKK30KKworU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyJiYgb3RoZXIpID0gZGVmYXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6flN0cmVh
bUNvbm5lY3Rpb25CdWZmZXIoKSA9IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIm
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0aW9uQnVmZmVy
JiYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgIG1fZGF0YVNp
emUgPSBvdGhlci5tX2RhdGFTaXplOworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9IFdURk1vdmUo
b3RoZXIubV9zaGFyZWRNZW1vcnkpOworICAgICAgICBtX3NlbmRlcldhaXRTZW1hcGhvcmUgPSBX
VEZNb3ZlKG90aGVyLm1fc2VuZGVyV2FpdFNlbWFwaG9yZSk7CisgICAgfQorICAgIHJldHVybiAq
dGhpczsKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRs
ZTsKKyAgICBpZiAoIW1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAgQ1JBU0goKTsK
KyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZSB7IFdURk1vdmUo
aGFuZGxlKSwgbV9zaGFyZWRNZW1vcnktPnNpemUoKSB9OworICAgIGVuY29kZXIgPDwgaXBjSGFu
ZGxlOworICAgIGVuY29kZXIgPDwgbV9zZW5kZXJXYWl0U2VtYXBob3JlOworfQorCitPcHRpb25h
bDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlPiBpcGNIYW5kbGU7CisgICAgZGVjb2RlciA+PiBpcGNIYW5kbGU7CisgICAgaWYg
KCFpcGNIYW5kbGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8
U2VtYXBob3JlPiBzZW1hcGhvcmU7CisgICAgZGVjb2RlciA+PiBzZW1hcGhvcmU7CisgICAgaWYg
KCFzZW1hcGhvcmUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgc2l6ZV90IGRh
dGFTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUtPmRhdGFTaXplKTsKKyAgICBp
ZiAoZGF0YVNpemUgPCBoZWFkZXJTaXplKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6bWFwKGlwY0hh
bmRsZS0+aGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRl
KTsKKyAgICBpZiAoc2hhcmVkTWVtb3J5LT5zaXplKCkgPCBkYXRhU2l6ZSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7IHNo
YXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhU2l6ZSwgIFdURk1vdmUoKnNlbWFwaG9y
ZSkgfTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3N2YyY2IxZWMwNzkzNWZjYzgwYWQ1ZjI0
NDRhZGVmZmIwMzk0NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJJUENT
ZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRv
bWljcy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSVBDIHsKKwor
Ly8gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBpcyBhIHNoYXJlZCAiYmktcGFydGl0ZSIgY2lyY3Vs
YXIgYnVmZmVyIHN1cHBvcnRpbmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdlcywgc3BlY2lm
aWMgZGF0YSBhbGlnbm1lbnQgd2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUuCisvLyBTdHJlYW1D
bGllbnRDb25uZWN0aW9uIGFuZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHVzZSBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyIHRvIGNvbW11bmljYXRlLgorLy8KKy8vIFRoZSAiYmktcGFydGl0ZSIgaXMg
aGVyZSB0byBtZWFuIHRoYXQgd3JpdGVzIGFuZCByZWFkcyB0byB0aGUgYnVmZmVyIG11c3QgYmUK
Ky8vIGNvbnRpbnVvdXMuCisvLworLy8gVGhlIGNsaWVudCAoc2VuZGVyIG9yIHJlY2VpdmVyKSAi
YWNxdWlyZXMiIHNvbWUgYW1vdW50IG9mIGJ1ZmZlciBkYXRhLiBJZiBidWZmZXIgaGFzIG5vCisv
LyBjYXBhY2l0eSwgYWNxdWlyZSByZXR1cm5zIHdpdGggemVybyBjYXBhY2l0eS4gSWYgYnVmZmVy
IGhhcyBhdCBsZWFzdCBhY3F1aXJlZAorLy8gY2FwYWNpdHksIGFsbCB0aGUgYXZhaWxhYmxlIGNh
cGFjaXR5IGlzIHJldHVybmVkLgorLy8KKy8vIFRoZSBjbGllbnQgInJlbGVhc2VzIiB0aGUgc29t
ZSBhbW91bnQgb2YgZGF0YSwgYXQgbGVhc3QgdGhlIGFtb3VudCBhY3F1aXJlZCBidXQgcG90ZW50
aWFsbHkKKy8vIG1vcmUuCisvLworLy8gQm90aCBzZW5kZXIgYW5kIHJlY2VpdmVyIG11c3QgYWNx
dWlyZSBzYW1lIGFtb3VudCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhlIGFjcXVpcmUg
c2VxdWVuY2UuCisvLyBJZiBzZW5kZXIgYWNxdWlyZXMgWCBhbmQgdGhlbiBZIGFtb3VudCwgcmVj
ZWl2ZXIgbXVzdCBkbyB0aGUgc2FtZS4KKy8vCisvLyBUaGUgY2lyY3VsYXIgYnVmZmVyIGhhcyBm
b2xsb3dpbmcgaW1wbGVtZW50YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRoZSBkYXRhIGJldHdl
ZW4gW3NlbmRlck9mZnNldCwgcmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9mZnNldCA9PQor
Ly8gcmVjZWl2ZXJPZmZzZXQsIHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4KKy8vICogUmVjZWl2
ZXIgb3ducyB0aGUgZGF0YSBiZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVyT2Zmc2V0Wy4K
Ky8vICogVGhlIGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhl
IGxhc3QgdmFsdWUgaXMgcmVzZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZl
ciBpcyBmdWxsLiBGSVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBp
ZgorLy8gaXQgd291bGQgdXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9mIHRoZSBob2xlIGFz
IHRoZSBpbmRpY2F0b3IuIFRoaXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWduZWRTcGFuIGltcGxl
bWVudGF0aW9uIHRvIHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgorLy8gKiBBbGwgYXRvbWlj
IHZhcmlhYmxlIGxvYWRzIGFyZSB1bnRydXN0ZWQsIHNvIHRoZXkncmUgY2xhbXBlZC4gVmlvbGF0
aW9ucyBhcmUgbm90IHJlcG9ydGVkLAorLy8gdGhvdWdoLgorLy8gU2VlIFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlLgorY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6ZSk7CisgICAg
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOworICAgIH5T
dHJlYW1Db25uZWN0aW9uQnVmZmVyKCk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgb3Bl
cmF0b3I9KFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisKKyAgICBzaXplX3Qgd3JhcE9mZnNl
dChzaXplX3Qgb2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8PSBk
YXRhU2l6ZSgpKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBkYXRhU2l6ZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgdGVtcGxh
dGU8c2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQ+CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVf
dCBvZmZzZXQsIHNpemVfdCBhY3F1aXJlU2l6ZSkgY29uc3QKKyAgICB7CisgICAgICAgIG9mZnNl
dCA9IHJvdW5kVXBUb011bHRpcGxlT2Y8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0KTsKKyAgICAg
ICAgaWYgKG9mZnNldCArIGFjcXVpcmVTaXplID49IGRhdGFTaXplKCkpCisgICAgICAgICAgICBv
ZmZzZXQgPSAwOworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAgIEF0b21pYzxz
aXplX3Q+JiBzZW5kZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZW5kZXJPZmZzZXQ7IH0K
KyAgICBBdG9taWM8c2l6ZV90PiYgcmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5y
ZWNlaXZlck9mZnNldDsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDx1aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBoZWFkZXJTaXplKCk7
IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTaXplOyB9Cisg
ICAgU2VtYXBob3JlJiBzZW5kZXJXYWl0U2VtYXBob3JlKCkgeyByZXR1cm4gbV9zZW5kZXJXYWl0
U2VtYXBob3JlOyB9CisKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6c2VuZGVy
T2Zmc2V0IHdoZW4gcmVjZWl2ZXIgaXMgc2xlZXBpbmcsIGUuZy4gbm90IHJ1bm5pbmcuCisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFn
ID0gMSA8PCAzMTsKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6cmVjZWl2ZXJP
ZmZzZXQgd2hlbiBzZW5kZXIgaXMgd2FpdGluZywgZS5nLiB3YWl0aW5nIG9uCisgICAgLy8gYSBz
ZW1hcGhvcmUuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVjZWl2ZXJPZmZzZXRTZW5k
ZXJJc1dhaXRpbmdUYWcgPSAxIDw8IDMxOworCisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHN0YXRpYyBPcHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBkZWNvZGUo
RGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdl
YktpdDo6U2hhcmVkTWVtb3J5PiYmLCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgc2Vu
ZGVyV2FpdFNlbWFwaG9yZSk7CisKKyAgICBzdHJ1Y3QgSGVhZGVyIHsKKyAgICAgICAgQXRvbWlj
PHNpemVfdD4gcmVjZWl2ZXJPZmZzZXQ7CisgICAgICAgIC8vIFBhZGRpbmcgc28gdGhhdCB0aGUg
dmFyaWFibGVzIG1vc3RseSBhY2Nlc3NlZCBieSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGRvIG5vdCBz
aGFyZSBhIGNhY2hlIGxpbmUuCisgICAgICAgIC8vIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBhdm9p
ZCBjYWNoZS1saW5lIGluZHVjZWQgcmVkdWN0aW9uIG9mIHBhcmFsbGVsIGFjY2Vzcy4KKyAgICAg
ICAgdWludDY0X3QgY2FjaGVMaW5lUGFkZGluZ1syXTsKKyAgICAgICAgQXRvbWljPHNpemVfdD4g
c2VuZGVyT2Zmc2V0OworICAgIH07CisgICAgSGVhZGVyJiBoZWFkZXIoKSBjb25zdCB7IHJldHVy
biAqcmVpbnRlcnByZXRfY2FzdDxIZWFkZXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKTsgfQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGhlYWRlclNpemUoKSB7IHJldHVybiByb3VuZFVw
VG9NdWx0aXBsZU9mPHNpemVvZihzdGQ6Om1heF9hbGlnbl90KT4oc2l6ZW9mKEhlYWRlcikpOyB9
CisKKyAgICBzaXplX3QgbV9kYXRhU2l6ZSB7IDAgfTsKKyAgICBSZWY8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworICAgIFNlbWFwaG9yZSBtX3NlbmRlcldhaXRTZW1hcGhv
cmU7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1Db25uZWN0aW9uRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q29ubmVjdGlvbkVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTIzMmRlY2Y2Yzc5M2E0NTc3MTY4ZTk3
ZWZiNTFhYWZiMzJmZGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaApAQCAtMCwwICsxLDk2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisj
aW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
CituYW1lc3BhY2UgSVBDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjsKKworLy8gSVBDIGVuY29kZXIgd2hpY2g6CisvLyAgLSBFbmNvZGVzIHRv
IGEgY2FsbGVyIGJ1ZmZlciB3aXRoIGZpeGVkIHNpemUsIGRvZXMgbm90IHJlc2l6ZSwgc3RvcHMg
d2hlbiBzaXplIHJ1bnMgb3V0CisvLyAgLSBEb2VzIG5vdCBpbml0aWFsaXplIGFsaWdubWVudCBn
YXBzCisvLworY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZmluYWwgeworcHVibGljOgor
ICAgIC8vIFN0cmVhbSBtZXNzYWdlIG5lZWRzIHRvIGJlIGF0IGxlYXN0IHNpemUgb2YgU3RyZWFt
U2V0RGVzdGluYXRpb25JRCBtZXNzYWdlLgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1p
bmltdW1NZXNzYWdlU2l6ZSA9IHNpemVvZihNZXNzYWdlTmFtZSkgKyBzaXplb2YodWludDY0X3Qp
OworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBhbGlnbm9m
KE1lc3NhZ2VOYW1lKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0g
dHJ1ZTsKKworICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lLCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1DYXBhY2l0eSkKKyAgICAgICAgOiBt
X2J1ZmZlcihzdHJlYW0pCisgICAgICAgICwgbV9idWZmZXJDYXBhY2l0eShzdHJlYW1DYXBhY2l0
eSkKKyAgICB7CisgICAgICAgICp0aGlzIDw8IG1lc3NhZ2VOYW1lOworICAgIH0KKworICAgIH5T
dHJlYW1Db25uZWN0aW9uRW5jb2RlcigpID0gZGVmYXVsdDsKKworICAgIGJvb2wgZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxp
Z25tZW50KQorICAgIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclBvaW50ZXIgPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fYnVmZmVyICsgbV9lbmNvZGVk
U2l6ZSkpOworICAgICAgICBzaXplX3QgbmV3QnVmZmVyUG9pbnRlciA9IHJvdW5kVXBUb011bHRp
cGxlT2YoYWxpZ25tZW50LCBidWZmZXJQb2ludGVyKTsKKyAgICAgICAgaWYgKG5ld0J1ZmZlclBv
aW50ZXIgPCBidWZmZXJQb2ludGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpbnRwdHJfdCBhbGlnbmVkU2l6ZSA9IG1fZW5jb2RlZFNpemUgKyAobmV3QnVmZmVyUG9pbnRl
ciAtIGJ1ZmZlclBvaW50ZXIpOworICAgICAgICBpZiAoIXJlc2VydmUoYWxpZ25lZFNpemUsIHNp
emUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1aW50OF90KiBidWZmZXIg
PSBtX2J1ZmZlciArIGFsaWduZWRTaXplOworICAgICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBz
aXplKTsKKyAgICAgICAgbV9lbmNvZGVkU2l6ZSA9IGFsaWduZWRTaXplICsgc2l6ZTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBT
dHJlYW1Db25uZWN0aW9uRW5jb2RlciYgb3BlcmF0b3I8PChUJiYgdCkKKyAgICB7CisgICAgICAg
IEFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2Vf
dDxUPj4sIHZvaWQ+OjplbmNvZGUoKnRoaXMsIHN0ZDo6Zm9yd2FyZDxUPih0KSk7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgQVNTRVJU
KGlzVmFsaWQoKSk7IHJldHVybiBtX2VuY29kZWRTaXplOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXJDYXBhY2l0eTsgfQorICAgIG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiBpc1ZhbGlkKCk7IH0KK3ByaXZhdGU6CisgICAgYm9vbCByZXNlcnZlKHNp
emVfdCBhbGlnbmVkU2l6ZSwgc2l6ZV90IGFkZGl0aW9uYWxTaXplKQorICAgIHsKKyAgICAgICAg
c2l6ZV90IHNpemUgPSBhbGlnbmVkU2l6ZSArIGFkZGl0aW9uYWxTaXplOworICAgICAgICBpZiAo
c2l6ZSA8IGFsaWduZWRTaXplIHx8IHNpemUgPiBtX2J1ZmZlckNhcGFjaXR5KSB7CisgICAgICAg
ICAgICBtX2J1ZmZlckNhcGFjaXR5ID0gMDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgdWludDhfdCogbV9idWZm
ZXI7CisgICAgc2l6ZV90IG1fYnVmZmVyQ2FwYWNpdHk7CisgICAgc2l6ZV90IG1fZW5jb2RlZFNp
emUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjQ5MGJjMDFhNDhlNzU2ZmVhNmRlMmY3ZWNiZDI3ZmQ5YzcyOWNkNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKworbmFtZXNwYWNl
IElQQyB7CisKK1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUoY29uc3QgY2hhciogbmFtZSkKKyAgICA6IG1fbmFtZShuYW1lKQoreworfQorCit2b2lk
IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OmRpc3BhdGNoKFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmIGZ1bmN0aW9uKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwor
ICAgICAgICBtX2Z1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOworICAgICAgICBB
U1NFUlQoIW1fc2hvdWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qg
c3VwcG9ydGVkLgorICAgIH0KKyAgICB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7CisKK30KK3Zv
aWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbikKK3sKKyAgICB7CisgICAgICAgIExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9jb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbik7
CisgICAgICAgIEFTU0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNo
dXRkb3duIG5vdCBzdXBwb3J0ZWQuCisgICAgfQorICAgIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQo
KTsKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpyZW1vdmVTdHJlYW1Db25u
ZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uKQoreworICAgIEFT
U0VSVChtX3Byb2Nlc3NpbmdUaHJlYWQpOworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciht
X2xvY2spOworICAgICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uKTsKKyAgICAg
ICAgQVNTRVJUKCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24g
bm90IHN1cHBvcnRlZC4KKyAgICB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBT
ZW1hcGhvcmUuc2lnbmFsKCk7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlOjpzdG9wKCkKK3sKKyAgICBtX3Nob3VsZFF1aXQgPSB0cnVlOworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIGlmICghbV9wcm9jZXNzaW5nVGhyZWFkKQorICAgICAgICByZXR1cm47Cisg
ICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkLT53
YWl0Rm9yQ29tcGxldGlvbigpOworICAgIG1fcHJvY2Vzc2luZ1RocmVhZCA9IG51bGxwdHI7Cisj
ZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXAoKQorewor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25hbCgpOworI2Vu
ZGlmCit9CisKK0lQQzo6U2VtYXBob3JlJiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtl
VXBTZW1hcGhvcmUoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHJldHVybiBtX3dha2VV
cFNlbWFwaG9yZTsKKyNlbHNlCisgICAgcmV0dXJuIHsgfTsKKyNlbmRpZgorfQorCit2b2lkIFN0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFByb2Nlc3NpbmdUaHJlYWQoKQoreworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChtX3Byb2Nlc3NpbmdUaHJlYWQpIHsKKyAgICAgICAg
bV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBhdXRvIHRhc2sgPSBbdGhpc10oKSBtdXRhYmxlIHsKKyAgICAgICAgZm9yICg7OykgeworICAg
ICAgICAgICAgcHJvY2Vzc1N0cmVhbXMoKTsKKyAgICAgICAgICAgIGlmIChtX3Nob3VsZFF1aXQp
IHsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU3RyZWFtcygpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLndhaXQo
KTsKKyAgICAgICAgfQorICAgIH07CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkID0gVGhyZWFkOjpj
cmVhdGUobV9uYW1lLCBXVEZNb3ZlKHRhc2spLCBUaHJlYWRUeXBlOjpHcmFwaGljcywgVGhyZWFk
OjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSk7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlOjpwcm9jZXNzU3RyZWFtcygpCit7CisgICAgY29uc3RleHByIHNpemVfdCBk
ZWZhdWx0TWVzc2FnZUxpbWl0ID0gMTAwMDsKKyAgICBib29sIGhhc01vcmVUb1Byb2Nlc3MgPSBm
YWxzZTsKKyAgICBkbyB7CisgICAgICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gZnVu
Y3Rpb25zOworICAgICAgICBIYXNoU2V0PFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4+
IGNvbm5lY3Rpb25zOworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fbG9jayk7CisgICAgICAgICAgICBmdW5jdGlvbnMuc3dhcChtX2Z1bmN0aW9ucyk7Cisg
ICAgICAgICAgICBjb25uZWN0aW9ucyA9IG1fY29ubmVjdGlvbnM7CisgICAgICAgIH0KKyAgICAg
ICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykKKyAgICAgICAgICAgIFdURk1vdmUo
ZnVuY3Rpb24pKCk7CisKKyAgICAgICAgaGFzTW9yZVRvUHJvY2VzcyA9IGZhbHNlOworICAgICAg
ICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBjb25uZWN0aW9ucykKKyAgICAgICAgICAgIGhhc01v
cmVUb1Byb2Nlc3MgfD0gY29ubmVjdGlvbi0+ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhkZWZhdWx0
TWVzc2FnZUxpbWl0KSA9PSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6SGFzTW9yZU1lc3Nh
Z2VzOworICAgIH0gd2hpbGUgKGhhc01vcmVUb1Byb2Nlc3MpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWY3YmEzZjM0MDI5MGYzMDI0YzViODlhMGVhM2Y4MzAwOWNkODI2YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWUuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCitu
YW1lc3BhY2UgSVBDIHsKKworY2xhc3MgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmaW5hbCA6
IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgeworcHVibGljOgorICAgIFN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWUoY29uc3QgY2hhciopOworICAgIH5TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
KCkgPSBkZWZhdWx0OworICAgIHZvaWQgYWRkU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZSYpOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZSYpOworCisgICAgdm9pZCBkaXNwYXRjaChXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBzdG9wKCk7CisKKyAgICB2b2lkIHdha2VVcCgp
OworCisgICAgU2VtYXBob3JlJiB3YWtlVXBTZW1hcGhvcmUoKTsKK3ByaXZhdGU6CisgICAgdm9p
ZCB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7CisgICAgdm9pZCBwcm9jZXNzU3RyZWFtcygpOwor
CisgICAgY29uc3QgY2hhciogY29uc3QgbV9uYW1lOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IFNlbWFwaG9yZSBtX3dha2VVcFNlbWFwaG9yZTsKKyNlbmRpZgorICAgIFJlZlB0cjxUaHJlYWQ+
IG1fcHJvY2Vzc2luZ1RocmVhZDsKKworICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hvdWxkUXVp
dCB7IGZhbHNlIH07CisKKyAgICBMb2NrIG1fbG9jazsKKyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lk
KCk+PiBtX2Z1bmN0aW9uczsKKyAgICBIYXNoU2V0PFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZT4+IG1fY29ubmVjdGlvbnM7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwZGEy
ZjRkYTJjMTViYTg5YmUyNzllNmMyMDBjNjYyNDE0YmNlYzMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAt
MCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgorCituYW1lc3BhY2UgSVBDIHsK
KworU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0s
IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICA6IG1fY29ubmVjdGlv
bihjb25uZWN0aW9uKQorICAgICwgbV93b3JrUXVldWUod29ya1F1ZXVlKQorICAgICwgbV9idWZm
ZXIoV1RGTW92ZShzdHJlYW0pKQoreworfQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2Fn
ZVJlY2VpdmVRdWV1ZSgqdGhpcywgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBt
X3dvcmtRdWV1ZS5hZGRTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKK30KKwordm9pZCBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5h
bWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIG1fY29ubmVj
dGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9u
SUQpOworICAgIG1fd29ya1F1ZXVlLnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOworfQor
Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjplbnF1ZXVlTWVzc2FnZShDb25uZWN0
aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYgbWVzc2FnZSkKK3sKKyAgICB7CisgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jayk7Cisg
ICAgICAgIG1fb3V0T2ZTdHJlYW1NZXNzYWdlcy5hcHBlbmQoV1RGTW92ZShtZXNzYWdlKSk7Cisg
ICAgfQorICAgIG1fd29ya1F1ZXVlLndha2VVcCgpOworfQorCitPcHRpb25hbDxTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFx
dWlyZSgpCit7CisgICAgc2l6ZV90IHJlY2VpdmVyTGltaXQgPSBzaGFyZWRTZW5kZXJPZmZzZXQo
KS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICAgIGlmIChyZWNlaXZlckxpbWl0
ID09IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGlu
Z1RhZykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIHJlc3VsdCA9IGFs
aWduZWRTcGFuKG1fcmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworICAgIGlmIChyZXN1
bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkgeworICAgICAgICByZWNlaXZlckxpbWl0ID0g
c2hhcmVkU2VuZGVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHJlY2VpdmVyTGltaXQs
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1Rh
Zywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7
CisgICAgICAgIEFTU0VSVCghKHJlY2VpdmVyTGltaXQgJiBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpKTsKKyAgICAgICAgcmVjZWl2ZXJM
aW1pdCA9IGNsYW1wZWRMaW1pdChyZWNlaXZlckxpbWl0KTsKKyAgICAgICAgcmVzdWx0ID0gYWxp
Z25lZFNwYW4obV9yZWNlaXZlck9mZnNldCwgcmVjZWl2ZXJMaW1pdCk7CisgICAgfQorCisgICAg
aWYgKHJlc3VsdC5zaXplID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit2b2lkIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpyZWxlYXNlKHNpemVfdCByZWFkU2l6ZSkKK3sKKyAgICBBU1NFUlQocmVh
ZFNpemUpOworICAgIHJlYWRTaXplID0gc3RkOjptYXgocmVhZFNpemUsIG1pbmltdW1NZXNzYWdl
U2l6ZSk7CisgICAgc2l6ZV90IHJlY2VpdmVyT2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9mZnNl
dChtX3JlY2VpdmVyT2Zmc2V0KSArIHJlYWRTaXplKTsKKyAgICBzaXplX3Qgb2xkUmVjZWl2ZXJP
ZmZzZXQgPSBzaGFyZWRSZWNlaXZlck9mZnNldCgpLmV4Y2hhbmdlKHJlY2VpdmVyT2Zmc2V0LCBz
dGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIC8v
IElmIHRoZSBzZW5kZXIgd3JvdGUgb3ZlciByZWNlaXZlck9mZnNldCwgaXQgbWVhbnMgdGhlIHNl
bmRlciBpcyB3YWl0aW5nLgorICAgIGlmIChvbGRSZWNlaXZlck9mZnNldCAhPSBtX3JlY2VpdmVy
T2Zmc2V0KQorICAgICAgICBtX2J1ZmZlci5zZW5kZXJXYWl0U2VtYXBob3JlKCkuc2lnbmFsKCk7
CisjZW5kaWYKKworICAgIG1fcmVjZWl2ZXJPZmZzZXQgPSByZWNlaXZlck9mZnNldDsKK30KKwor
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U6OmFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAgICBBU1NF
UlQob2Zmc2V0IDwgZGF0YVNpemUoKSk7CisgICAgQVNTRVJUKGxpbWl0IDwgZGF0YVNpemUoKSk7
CisgICAgc2l6ZV90IGFsaWduZWQgPSBhbGlnbk9mZnNldChvZmZzZXQpOworICAgIHNpemVfdCBy
ZXN1bHRTaXplID0gMDsKKyAgICBpZiAob2Zmc2V0IDwgbGltaXQpIHsKKyAgICAgICAgaWYgKG9m
ZnNldCA8PSBhbGlnbmVkICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgIHJlc3VsdFNp
emUgPSBzaXplKGFsaWduZWQsIGxpbWl0KTsKKyAgICB9IGVsc2UgaWYgKG9mZnNldCA+IGxpbWl0
KSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwgbGltaXQpCisg
ICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfQorICAg
IHJldHVybiB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30KKworc2l6ZV90IFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1p
dCkKK3sKKyAgICBpZiAob2Zmc2V0IDw9IGxpbWl0KQorICAgICAgICByZXR1cm4gbGltaXQgLSBv
ZmZzZXQ7CisgICAgcmV0dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7Cit9CisKK3NpemVfdCBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1p
dCkgY29uc3QKK3sKKyAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUoKSAtIDEp
KTsKKyAgICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkgLSAxKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyMGI5MjEzNmZmNmI2YTliOWUxOThkYzk3M2IzZDNh
NmVhNTY2MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSwyODMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVy
LmgiCisjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2lu
Y2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0
aW9uRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU7CisKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPiwgcHJvdGVjdGVkIE1l
c3NhZ2VSZWNlaXZlUXVldWUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlKTsKK3B1YmxpYzoKKyAgICB+U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2UoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgICBDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkg
eyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisKKyAgICBlbnVtIERpc3BhdGNoUmVzdWx0IDogYm9v
bCB7CisgICAgICAgIEhhc05vTWVzc2FnZXMsCisgICAgICAgIEhhc01vcmVNZXNzYWdlcworICAg
IH07CisgICAgdmlydHVhbCBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNp
emVfdCBtZXNzYWdlTGltaXQpID0gMDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cz4KKyAgICB2b2lkIHNlbmRTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgQXJn
dW1lbnRzJiYuLi4pOworCitwcm90ZWN0ZWQ6CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2UoSVBDOjpDb25uZWN0aW9uJiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlJik7CisKKyAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBs
KFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCBzdG9wUmVj
ZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7
CisKKyAgICAvLyBNZXNzYWdlUmVjZWl2ZVF1ZXVlCisgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShD
b25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpIGZpbmFsOworCisgICAgc3Ry
dWN0IFNwYW4geworICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXplX3Qgc2l6ZTsK
KyAgICB9OworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFxdWlyZSgpOworCisgICAgdm9pZCByZWxl
YXNlKHNpemVfdCByZWFkU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11
bU1lc3NhZ2VTaXplID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1pbmltdW1NZXNzYWdlU2l6
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50ID0gU3RyZWFt
Q29ubmVjdGlvbkVuY29kZXI6Om1lc3NhZ2VBbGlnbm1lbnQ7CisgICAgU3BhbiBhbGlnbmVkU3Bh
bihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBzaXplKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50
cnVzdGVkTGltaXQpIGNvbnN0OworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZzZXQp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zmc2V0KTsgfQorICAgIHNpemVf
dCBhbGlnbk9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5hbGln
bk9mZnNldDxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQsIG1pbmltdW1NZXNzYWdlU2l6ZSk7IH0K
KyAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkU2VuZGVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZm
ZXIuc2VuZGVyT2Zmc2V0KCk7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkUmVjZWl2ZXJP
ZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5yZWNlaXZlck9mZnNldCgpOyB9CisgICAgdWludDhf
dCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIHNpemVfdCBk
YXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFTaXplKCk7IH0KKworICAgIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlJiBtX3dvcmtRdWV1ZTsKKworICAgIHNpemVfdCBtX3JlY2VpdmVyT2Zmc2V0IHsgMCB9
OworICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgbV9idWZmZXI7CisKKyAgICBMb2NrIG1fb3V0
T2ZTdHJlYW1NZXNzYWdlc0xvY2s7CisgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+
PiBtX291dE9mU3RyZWFtTWVzc2FnZXM7CisKKyAgICBmcmllbmQgY2xhc3MgU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK3Zv
aWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5jUmVwbHkodWludDY0X3Qgc3lu
Y1JlcXVlc3RJRCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQgc2VuZGluZyB0byBidWZmZXIuCisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1
ZTxJUEM6OkVuY29kZXI+KElQQzo6TWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNS
ZXF1ZXN0SUQpOworICAgICgqZW5jb2RlciA8PCAuLi4gPDwgYXJndW1lbnRzKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKKy8vIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb24gcmVwcmVzZW50cyB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHN0cmVh
bSBzZW5kZXIgYW5kIHJlY2VpdmVyLCBhcyB1c2VkIGJ5IHRoZSByZWNlaXZlci4KKy8vIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb246CisvLyAgKiBIb2xkcyB0aGUgbWVzc2FnZXMgdG93YXJkcyB0aGUg
cmVjZWl2ZXIuCisvLyAgKiBTZW5kcyB0aGUgcmVwbGllcyBiYWNrIHRvIHRoZSBzZW5kZXIgdmlh
IHRoZSBzdHJlYW0gb3Igbm9ybWFsIENvbm5lY3Rpb24gZmFsbGJhY2suCisvLworLy8gUmVjZWl2
ZXIgdGVtcGxhdGUgY29udHJhY3Q6CisvLyAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2Uo
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBEZWNvZGVyJik7CisvLwordGVtcGxhdGU8dHlw
ZW5hbWUgUmVjZWl2ZXI+CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGZpbmFsIDogcHVi
bGljIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFN0cmVhbVNlcnZlckNvbm5lY3Rpb24+IGNyZWF0ZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyLCBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlJiB3b3JrUXVldWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwg
d29ya1F1ZXVlKSk7CisgICAgfQorICAgIH5TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWwg
PSBkZWZhdWx0OworCisgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyJiwg
UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICAvLyBTdG9wcyB0aGUg
bWVzc2FnZSByZWNlaXB0LiBOb3RlOiBhbHJlYWR5IHJlY2VpdmVkIG1lc3NhZ2VzIG1pZ2h0IHN0
aWxsIGJlIGRlbGl2ZXJlZC4KKyAgICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgLy8gU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2Ugb3ZlcnJpZGVzLgorICAgIERpc3BhdGNoUmVzdWx0IGRpc3BhdGNoU3RyZWFt
TWVzc2FnZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3Jr
UXVldWUpCisgICAgICAgIDogU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoY29ubmVjdGlvbiwg
V1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpCisgICAgeworICAgIH0KKyAgICBib29s
IHByb2Nlc3NTZXRTdHJlYW1EZXN0aW5hdGlvbklEKERlY29kZXImJiwgUmVmUHRyPFJlY2VpdmVy
PiYgY3VycmVudFJlY2VpdmVyKTsKKyAgICBib29sIGRpc3BhdGNoU3RyZWFtTWVzc2FnZShEZWNv
ZGVyJiYsIFJlY2VpdmVyJik7CisgICAgYm9vbCBkaXNwYXRjaE91dE9mU3RyZWFtTWVzc2FnZShE
ZWNvZGVyJiYpOworICAgIExvY2sgbV9yZWNlaXZlcnNMb2NrOworICAgIHVzaW5nIFJlY2VpdmVy
c01hcCA9IEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90PiwgUmVmPFJlY2VpdmVy
Pj47CisgICAgUmVjZWl2ZXJzTWFwIG1fcmVjZWl2ZXJzOworCisgICAgdWludDY0X3QgbV9jdXJy
ZW50RGVzdGluYXRpb25JRCA9IDA7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4K
K3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnN0YXJ0UmVjZWl2aW5nTWVz
c2FnZXMoUmVjZWl2ZXImIHJlY2VpdmVyLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIHsKKyAgICAgICAgYXV0byBrZXkgPSBzdGQ6Om1h
a2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklE
KTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAg
ICAgICBBU1NFUlQoIW1fcmVjZWl2ZXJzLmNvbnRhaW5zKGtleSkpOworICAgICAgICBtX3JlY2Vp
dmVycy5hZGQoa2V5LCBtYWtlUmVmKHJlY2VpdmVyKSk7CisgICAgfQorICAgIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChyZWNlaXZlck5hbWUs
IGRlc3RpbmF0aW9uSUQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK3ZvaWQg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhS
ZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAg
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKHJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFp
cihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsKKyAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgQVNTRVJUKG1f
cmVjZWl2ZXJzLmNvbnRhaW5zKGtleSkpOworICAgIG1fcmVjZWl2ZXJzLnJlbW92ZShrZXkpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlOjpEaXNwYXRjaFJlc3VsdCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlz
cGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KQoreworICAgIFJlZlB0cjxS
ZWNlaXZlcj4gY3VycmVudFJlY2VpdmVyOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgV1RGOjpp
c1ZhbGlkKFJlY2VpdmVyTmFtZSkuCisgICAgdWludDhfdCBjdXJyZW50UmVjZWl2ZXJOYW1lID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oUmVjZWl2ZXJOYW1lOjpJbnZhbGlkKTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbWVzc2FnZUxpbWl0OyArK2kpIHsKKyAgICAgICAgYXV0byBzcGFu
ID0gdHJ5QXF1aXJlKCk7CisgICAgICAgIGlmICghc3BhbikKKyAgICAgICAgICAgIHJldHVybiBE
aXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgSVBDOjpEZWNvZGVyIGRlY29k
ZXIgeyBzcGFuLT5kYXRhLCBzcGFuLT5zaXplLCBtX2N1cnJlbnREZXN0aW5hdGlvbklEIH07Cisg
ICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlv
bi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1l
OjpTZXRTdHJlYW1EZXN0aW5hdGlvbklEKSB7CisgICAgICAgICAgICBpZiAoIXByb2Nlc3NTZXRT
dHJlYW1EZXN0aW5hdGlvbklEKFdURk1vdmUoZGVjb2RlciksIGN1cnJlbnRSZWNlaXZlcikpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSkgeworICAg
ICAgICAgICAgaWYgKCFkaXNwYXRjaE91dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIp
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3VycmVudFJl
Y2VpdmVyTmFtZSAhPSBzdGF0aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkpIHsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlck5hbWUgPSBzdGF0aWNfY2Fz
dDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgICAgICBj
dXJyZW50UmVjZWl2ZXIgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGlmICghY3VycmVu
dFJlY2VpdmVyKSB7CisgICAgICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KGN1cnJlbnRSZWNlaXZlck5hbWUpLCBtX2N1cnJlbnREZXN0aW5hdGlv
bklEKTsKKyAgICAgICAgICAgIGlmICghUmVjZWl2ZXJzTWFwOjppc1ZhbGlkS2V5KGtleSkpIHsK
KyAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIERp
c3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICAgICAgY3Vy
cmVudFJlY2VpdmVyID0gbV9yZWNlaXZlcnMuZ2V0KGtleSk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKCFjdXJyZW50UmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIC8vIFZhbGlkIHNjZW5hcmlvIGlz
IHdoZW4gcmVjZWl2ZXIgaGFzIGJlZW4gcmVtb3ZlZCwgYnV0IHRoZXJlIGFyZSBtZXNzYWdlcyBm
b3IgaXQgaW4gdGhlIGJ1ZmZlci4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaW5jZSB3ZSBkbyBu
b3QgaGF2ZSBhIHJlY2VpdmVyLCB3ZSBkb24ndCBrbm93IGhvdyB0byBkZWNvZGUgdGhlIG1lc3Nh
Z2UuCisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIG11c3QgdGltZW91dCBldmVyeSByZWNl
aXZlciBpbiB0aGUgc3RyZWFtIGNvbm5lY3Rpb24uCisgICAgICAgICAgICAvLyBDdXJyZW50bHkg
d2UgYXNzZXJ0IHRoYXQgdGhlIHJlY2VpdmVycyBhcmUgZW1wdHksIGFzIHdlIG9ubHkgaGF2ZSB1
cCB0byBvbmUgcmVjZWl2ZXIgaW4KKyAgICAgICAgICAgIC8vIGEgc3RyZWFtIGNvbm5lY3Rpb24g
dW50aWwgcG9zc2liaWxpdHkgb2Ygc2tpcHBpbmcgaXMgaW1wbGVtZW50ZWQgcHJvcGVybHkuCisg
ICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAg
ICAgICAgICBBU1NFUlQobV9yZWNlaXZlcnMuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJldHVy
biBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgfQorICAgICAgICBpZiAo
IWRpc3BhdGNoU3RyZWFtTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpLCAqY3VycmVudFJlY2VpdmVy
KSkKKyAgICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAg
ICB9CisgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNNb3JlTWVzc2FnZXM7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJl
Y2VpdmVyPjo6cHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoRGVjb2RlciYmIGRlY29kZXIs
IFJlZlB0cjxSZWNlaXZlcj4mIGN1cnJlbnRSZWNlaXZlcikKK3sKKyAgICB1aW50NjRfdCBkZXN0
aW5hdGlvbklEID0gMDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlc3RpbmF0aW9uSUQpKSB7
CisgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICBpZiAobV9jdXJyZW50RGVzdGluYXRpb25JRCAhPSBkZXN0aW5hdGlvbklEKSB7CisgICAgICAg
IG1fY3VycmVudERlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgICAgICBjdXJyZW50
UmVjZWl2ZXIgPSBudWxscHRyOworICAgIH0KKyAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1
ZmZlclBvc2l0aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZWNlaXZlcj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3Bh
dGNoU3RyZWFtTWVzc2FnZShEZWNvZGVyJiYgZGVjb2RlciwgUmVjZWl2ZXImIHJlY2VpdmVyKQor
eworICAgIHJlY2VpdmVyLmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKCp0aGlzLCBkZWNvZGVyKTsK
KyAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKSB7CisgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlz
cGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1
ZmZlclBvc2l0aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBSZWNlaXZlcj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3Bh
dGNoT3V0T2ZTdHJlYW1NZXNzYWdlKERlY29kZXImJiBkZWNvZGVyKQoreworICAgIHN0ZDo6dW5p
cXVlX3B0cjxEZWNvZGVyPiBtZXNzYWdlOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX291dE9mU3RyZWFtTWVzc2FnZXNMb2NrKTsKKyAgICAgICAgaWYgKG1fb3V0T2ZT
dHJlYW1NZXNzYWdlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIG1lc3NhZ2UgPSBtX291dE9mU3RyZWFtTWVzc2FnZXMudGFrZUZpcnN0KCk7CisgICAgfQor
ICAgIGlmICghbWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPFJl
Y2VpdmVyPiByZWNlaXZlcjsKKyAgICB7CisgICAgICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3Bh
aXIoc3RhdGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwg
bWVzc2FnZS0+ZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICByZWNlaXZlciA9IG1fcmVjZWl2ZXJzLmdldChr
ZXkpOworICAgIH0KKyAgICBpZiAocmVjZWl2ZXIpIHsKKyAgICAgICAgcmVjZWl2ZXItPmRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlKCp0aGlzLCAqbWVzc2FnZSk7CisgICAgICAgIGlmICghbWVzc2Fn
ZS0+aXNWYWxpZCgpKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIC8vIElmIHJlY2VpdmVyIGRvZXMg
bm90IGV4aXN0IGlmIGl0IGhhcyBiZWVuIHJlbW92ZWQgYnV0IG1lc3NhZ2VzIGFyZSBzdGlsbCBw
ZW5kaW5nIHRvIGJlCisgICAgLy8gcHJvY2Vzc2VkLiBJdCdzIG9rIHRvIHNraXAgc3VjaCBtZXNz
YWdlcy4KKyAgICAvLyBGSVhNRTogTm90ZSwgY29ycmVzcG9uZGluZyBza2lwIGlzIG5vdCBwb3Nz
aWJsZSBhdCB0aGUgbW9tZW50IGZvciBzdHJlYW0gbWVzc2FnZXMuCisgICAgcmVsZWFzZShkZWNv
ZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmgKaW5kZXggNzg1NGZh
OGYxODY4ZmI4ZTQ1NjIyODlmZGRmNmYyNzk1YWYyZDkwZC4uODNkOTlmMGNiYzhmZTA0ODIwYjQ3
ODNjOWMwNzZhYjU3YTNlYWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvY29jb2EvTWFjaFBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2Nv
YS9NYWNoUG9ydC5oCkBAIC0yNSw5ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKLSNpbmNsdWRlICJE
ZWNvZGVyLmgiCi0jaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgSVBDIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZWQwOGM3Mzk3NzAyMjJm
YzVjNGM0NmMzMzQ3OGFjMTAzMDFhOTk4OC4uYWM5ZTc4MmUyMTgzMTgxYmM5ODUzNWQ1ZGU4NGZl
ODA1YWYwN2U5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0yNCw4ICsyNCw5IEBAIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IHJlCiBpbXBvcnQgc3lz
CiAKK2Zyb20gbW9kZWwgaW1wb3J0IE1lc3NhZ2VSZWNlaXZlciwgTWVzc2FnZQogZnJvbSB3ZWJr
aXQgaW1wb3J0IHBhcnNlcgotZnJvbSB3ZWJraXQubW9kZWwgaW1wb3J0IEJVSUxUSU5fQVRUUklC
VVRFLCBBU1lOQ19BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURSwgTUFJTlRIUkVBRENB
TExCQUNLX0FUVFJJQlVURQorZnJvbSB3ZWJraXQubW9kZWwgaW1wb3J0IEJVSUxUSU5fQVRUUklC
VVRFLCBBU1lOQ19BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURSwgTUFJTlRIUkVBRENB
TExCQUNLX0FUVFJJQlVURSwgU1RSRUFNX0FUVFJJQlVURSwgV0FOVFNfQ09OTkVDVElPTl9BVFRS
SUJVVEUKIAogX2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKICAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTUzLDEzICs1NCwxMSBAQCBf
bGljZW5zZV9oZWFkZXIgPSAiIiIvKgogCiAiIiIKIAotV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJV
VEUgPSAnV2FudHNDb25uZWN0aW9uJwogV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUg
PSAnV2FudHNEaXNwYXRjaE1lc3NhZ2UnCiBXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FU
VFJJQlVURSA9ICdXYW50c0FzeW5jRGlzcGF0Y2hNZXNzYWdlJwogTEVHQUNZX1JFQ0VJVkVSX0FU
VFJJQlVURSA9ICdMZWdhY3lSZWNlaXZlcicKIE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJ
QlVURSA9ICdOb3RSZWZDb3VudGVkJwogCi0KIGRlZiByZWNlaXZlcl9lbnVtZXJhdG9yX29yZGVy
X2tleShyZWNlaXZlcl9uYW1lKToKICAgICBpZiByZWNlaXZlcl9uYW1lID09ICdJUEMnOgogICAg
ICAgICByZXR1cm4gMQpAQCAtMjExLDcgKzIxMCw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9k
ZWNsYXJhdGlvbihyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0
aW9uSGFuZGxlckNhbGxUaHJlYWQ6Ok1haW5UaHJlYWQ7XG4nKQogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFj
a1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25U
aHJlYWQ7XG4nKQotICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNf
QVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAg
ICAgICAgaWYgKG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9y
IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpKSBhbmQgbm90IHJlY2VpdmVy
Lmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYm
LCBJUEM6OkNvbm5lY3Rpb24mJykKICAgICAgICAgICAgIGlmIGxlbihzZW5kX3BhcmFtZXRlcnMp
OgogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJXMnICUgY29tcGxldGlvbl9oYW5k
bGVyX3BhcmFtZXRlcnMpCkBAIC0yNTksNiArMjU4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90
X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICByZXR1cm4gZnJvemVuc2V0KFsKICAgICAgICAg
J0lQQzo6RGF0YVJlZmVyZW5jZScsCiAgICAgICAgICdJUEM6OkZvbnRSZWZlcmVuY2UnLAorICAg
ICAgICAnSVBDOjpTZW1hcGhvcmUnLAogICAgICAgICAnTWFjaFNlbmRSaWdodCcsCiAgICAgICAg
ICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKQEAgLTU3MSwxMCArNTcxLDE1IEBAIGRl
ZiBzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAgICAgZGlz
cGF0Y2hfZnVuY3Rpb24gKz0gJ0FzeW5jJwogCiAgICAgd2FudHNfY29ubmVjdGlvbiA9IG1lc3Nh
Z2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0
dHJpYnV0ZShXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSkKKyAgICBtYXliZV9yZXBseV9lbmNv
ZGVyID0gIiwgKnJlcGx5RW5jb2RlciIKKyAgICBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNU
UkVBTV9BVFRSSUJVVEUpOgorICAgICAgICBtYXliZV9yZXBseV9lbmNvZGVyID0gJycKKyAgICBl
bGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3Nh
Z2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICBtYXliZV9yZXBseV9l
bmNvZGVyID0gJywgcmVwbHlFbmNvZGVyJwogCiAgICAgcmVzdWx0ID0gW10KICAgICByZXN1bHQu
YXBwZW5kKCcgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6JXM6OiVz
OjpuYW1lKCkpIHtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKLSAgICByZXN1
bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXNkZWNvZGVyLCAl
c3JlcGx5RW5jb2RlciwgdGhpcywgJiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2Vp
dmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJ2Nvbm5lY3Rpb24sICcgaWYgd2FudHNfY29ubmVjdGlv
biBlbHNlICcnLCAnJyBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklC
VVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSBlbHNlICcqJywg
aGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQorICAgIHJlc3VsdC5hcHBlbmQo
JyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglc2RlY29kZXIlcywgdGhpcywgJiVz
KTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwg
J2Nvbm5lY3Rpb24sICcgaWYgd2FudHNfY29ubmVjdGlvbiBlbHNlICcnLCBtYXliZV9yZXBseV9l
bmNvZGVyLCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKSkpCiAgICAgcmVzdWx0
LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9XG4n
KQogICAgIHJldHVybiBzdXJyb3VuZF9pbl9jb25kaXRpb24oJycuam9pbihyZXN1bHQpLCBtZXNz
YWdlLmNvbmRpdGlvbikKQEAgLTg3NCw3ICs4NzksNyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9o
YW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9
IE5vbmUgYW5kIChtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBv
ciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSk6CiAgICAgICAgICAgICBk
ZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQogCi0gICAgaWYgZGVsYXll
ZF9vcl9hc3luY19tZXNzYWdlczoKKyAgICBpZiBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzIGFu
ZCBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToKICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIE1lc3NhZ2VzIHtcblxubmFtZXNwYWNlICVzIHtcblxu
JyAlIHJlY2VpdmVyLm5hbWUpCiAKICAgICAgICAgZm9yIG1lc3NhZ2UgaW4gZGVsYXllZF9vcl9h
c3luY19tZXNzYWdlczoKQEAgLTkyMiwyNSArOTI3LDQ0IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdl
X2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYXN5bmNfbWVz
c2FnZXMuYXBwZW5kKG1lc3NhZ2UpCiAKLSAgICBpZiBhc3luY19tZXNzYWdlcyBvciByZWNlaXZl
ci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSBvciByZWNl
aXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRF
KToKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAo
cmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKExF
R0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQorICAgIGlmIHJlY2VpdmVyLmhhc19h
dHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQg
JXM6OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2UmIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIubmFt
ZSkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgICAgIGlmIG5vdCByZWNlaXZl
ci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSk6CisgICAg
ICAgIGFzc2VydChyZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVS
X0FUVFJJQlVURSkpCisgICAgICAgIGFzc2VydChub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShX
QU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkpCisgICAgICAgIGFzc2VydChub3QgcmVj
ZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVU
RSkpCisKKyAgICAgICAgcmVzdWx0ICs9IFthc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZl
ciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gYXN5bmNfbWVzc2FnZXNdCisgICAgICAgIHJlc3Vs
dCArPSBbc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3Nh
Z2UgaW4gc3luY19tZXNzYWdlc10KKworICAgICAgICBpZiAocmVjZWl2ZXIuc3VwZXJjbGFzcyk6
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJXM6OmRpZFJlY2VpdmVTdHJlYW1NZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNsYXNzKSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0o
ZGVjb2Rlcik7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJB
TShjb25uZWN0aW9uKTtcbicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7XG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQorICAgIGVs
aWYgYXN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRD
SF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lO
Q19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CisgICAgICAgIHJlY2VpdmVfdmFyaWFudCA9
IHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJf
QVRUUklCVVRFKSBlbHNlICcnCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJl
Y2VpdmUlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVfdmFyaWFudCkpCisgICAgICAg
IHJlc3VsdC5hcHBlbmQoJ3tcbicpCisgICAgICAgIGlmIG5vdCAocmVjZWl2ZXIuaGFzX2F0dHJp
YnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19h
dHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSkpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpO1xuJykKIAogICAgICAgICBy
ZXN1bHQgKz0gW2FzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3Ig
bWVzc2FnZSBpbiBhc3luY19tZXNzYWdlc10KKwogICAgICAgICBpZiByZWNlaXZlci5oYXNfYXR0
cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNf
YXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpKVxuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJu
O1xuJykKICAgICAgICAgaWYgKHJlY2VpdmVyLnN1cGVyY2xhc3MpOgotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcykpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcgICAgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7XG4nICUg
KHJlY2VpdmVyLnN1cGVyY2xhc3MsIHJlY2VpdmVfdmFyaWFudCkpCiAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pO1xu
JykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7
XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
O1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKIAotICAgIGlmIHN5bmNfbWVzc2Fn
ZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJ
QlVURSk6CisgICAgaWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVU
RSkgYW5kIChzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElT
UEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKToKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlU3luYyVzTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcilcbicgJSAocmVjZWl2ZXIubmFt
ZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNFSVZF
Ul9BVFRSSUJVVEUpIGVsc2UgJycpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5w
eSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKaW5k
ZXggNDhkOGUxYjYyN2NjMzFiMThmYTFjNTBmYWJlZWVkOTcxYmQxNWJlOS4uZTg5ZTE3ZTE0MDdi
NWI1NjZiYzE5MmM0MGE5OWEyOGQ4YmY4ZGNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CkBAIC00Niw2ICs0Niw4IEBAIF90ZXN0
X3JlY2VpdmVyX25hbWVzID0gWwogICAgICdUZXN0V2l0aElmTWVzc2FnZScsCiAgICAgJ1Rlc3RX
aXRoU2VtYXBob3JlJywKICAgICAnVGVzdFdpdGhJbWFnZURhdGEnLAorICAgICdUZXN0V2l0aFN0
cmVhbScsCisgICAgJ1Rlc3RXaXRoU3RyZWFtQnVmZmVyJwogXQogCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21vZGVsLnB5CmluZGV4IDQ4MDBmYTRlZmNhOTY3OGE4OWFmYzdlNDM0ZjI2YjM0
NmNlOGNmNmMuLjUwN2UwNDJhNTc3ZmY4YTAyMzM3MmMzYTYwN2FiMTA4YTVmYTk2NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQpAQCAtMjgsNiArMjgsOCBAQCBCVUlMVElO
X0FUVFJJQlVURSA9ICJCdWlsdGluIgogQVNZTkNfQVRUUklCVVRFID0gIkFzeW5jIgogTUFJTlRI
UkVBRENBTExCQUNLX0FUVFJJQlVURSA9ICJNYWluVGhyZWFkQ2FsbGJhY2siCiBTWU5DSFJPTk9V
U19BVFRSSUJVVEUgPSAnU3luY2hyb25vdXMnCitTVFJFQU1fQVRUUklCVVRFID0gIlN0cmVhbSIK
K1dBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFID0gJ1dhbnRzQ29ubmVjdGlvbicKIAogY2xhc3Mg
TWVzc2FnZVJlY2VpdmVyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN1
cGVyY2xhc3MsIGF0dHJpYnV0ZXMsIG1lc3NhZ2VzLCBjb25kaXRpb24pOgpAQCAtNzMsNyArNzUs
OSBAQCBpcGNfcmVjZWl2ZXIgPSBNZXNzYWdlUmVjZWl2ZXIobmFtZT0iSVBDIiwgc3VwZXJjbGFz
cz1Ob25lLCBhdHRyaWJ1dGVzPVtCVUlMVElOXwogICAgIE1lc3NhZ2UoJ1dyYXBwZWRBc3luY01l
c3NhZ2VGb3JUZXN0aW5nJywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURSwg
U1lOQ0hST05PVVNfQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAogICAgIE1lc3NhZ2UoJ1N5
bmNNZXNzYWdlUmVwbHknLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwg
Y29uZGl0aW9uPU5vbmUpLAogICAgIE1lc3NhZ2UoJ0luaXRpYWxpemVDb25uZWN0aW9uJywgW10s
IFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj0iUExBVEZPUk0o
Q09DT0EpIiksCi0gICAgTWVzc2FnZSgnTGVnYWN5U2Vzc2lvblN0YXRlJywgW10sIFtdLCBhdHRy
aWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKQorICAgIE1lc3NhZ2Uo
J0xlZ2FjeVNlc3Npb25TdGF0ZScsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJV
VEVdLCBjb25kaXRpb249Tm9uZSksCisgICAgTWVzc2FnZSgnU2V0U3RyZWFtRGVzdGluYXRpb25J
RCcsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9u
ZSksCisgICAgTWVzc2FnZSgnUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZScsIFtdLCBbXSwgYXR0
cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSkKIF0sIGNvbmRpdGlv
bj1Ob25lKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvTWFrZWZpbGUgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxl
CmluZGV4IDIxYjMwYWUyMGZhMTAzM2ZhNjY0ZTAzYWRiZDg4MDg2YTZjNzJjNDIuLmUxOTdiZDNj
MjY3YWU0MTFhNDUwMGQwZmY2OTM5ODYwM2E0NTA4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQpAQCAtNiw2ICs2LDggQEAgVEVTVFMgPSBcCiAgICAg
VGVzdFdpdGhJZk1lc3NhZ2UgXAogICAgIFRlc3RXaXRoU2VtYXBob3JlIFwKICAgICBUZXN0V2l0
aEltYWdlRGF0YSBcCisJVGVzdFdpdGhTdHJlYW0gXAorCVRlc3RXaXRoU3RyZWFtQnVmZmVyIFwK
ICMKIAogYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9NZXNzYWdlTmFtZXMuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9N
ZXNzYWdlTmFtZXMuY3BwCmluZGV4IDdkNWFmYzkxOGU1YjA1YjhmN2E1Y2Q2MjM4NTJiNWMwZTBj
MThhMDMuLjJlN2NhMTVlNzRlYmJkYTg2Yzc5ZjhmYzBiOGYzOGI0YjVmNzU4OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAK
QEAgLTEzNCw2ICsxMzQsMTAgQEAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUg
bmFtZSkKICAgICAgICAgcmV0dXJuICJJbml0aWFsaXplQ29ubmVjdGlvbiI7CiAgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOgogICAgICAgICByZXR1cm4gIkxlZ2FjeVNl
c3Npb25TdGF0ZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVz
c2FnZToKKyAgICAgICAgcmV0dXJuICJQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlIjsKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklEOgorICAgICAgICByZXR1cm4g
IlNldFN0cmVhbURlc3RpbmF0aW9uSUQiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNNZXNz
YWdlUmVwbHk6CiAgICAgICAgIHJldHVybiAiU3luY01lc3NhZ2VSZXBseSI7CiAgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseToKQEAg
LTIyNCw2ICsyMjgsOCBAQCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1l
c3NhZ2VOYW1lKQogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0aG91dEF0dHJp
YnV0ZXM7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246CiAgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOgorICAgIGNhc2UgTWVzc2FnZU5h
bWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6U2V0
U3RyZWFtRGVzdGluYXRpb25JRDoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJl
cGx5OgogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpJUEM7CiAgICAgY2FzZSBNZXNzYWdl
TmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseToKQEAgLTQwMSw2
ICs0MDcsMTAgQEAgYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5h
bWUpCiAjZW5kaWYKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6TGVn
YWN5U2Vzc2lvblN0YXRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5h
bWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6
OlNldFN0cmVhbURlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICht
ZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKaW5kZXggZWZlYTIzMDJk
Njg3YmU0ZjUyMjY5MGY3OGEzYzY0ZjYzNmUzMWZkOC4uYTIyYmQxY2ZkN2Y3M2JlOWVhYjFjYmJj
MGZmMGM2ZWYwNmEwNjQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9NZXNzYWdlTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCkBAIC05Myw2ICs5Myw4IEBAIGVudW0gY2xhc3MgTWVzc2Fn
ZU5hbWUgOiB1aW50MTZfdCB7CiAgICAgLCBUZXN0V2l0aG91dEF0dHJpYnV0ZXNfVG91Y2hFdmVu
dAogICAgICwgSW5pdGlhbGl6ZUNvbm5lY3Rpb24KICAgICAsIExlZ2FjeVNlc3Npb25TdGF0ZQor
ICAgICwgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZQorICAgICwgU2V0U3RyZWFtRGVzdGluYXRp
b25JRAogICAgICwgU3luY01lc3NhZ2VSZXBseQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rl
c3RBc3luY01lc3NhZ2VSZXBseQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01l
c3NhZ2VXaXRoQ29ubmVjdGlvblJlcGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZDBmNTI4YzY5Y2RlZmRkYTljNDg2NzkxMzhjNjM4YjhhYzBjYjMyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVh
bS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyMgVGVzdHMgU3RyZWFtIHJlY2VpdmVyIGF0dHJpYnV0ZS4KK21lc3Nh
Z2VzIC0+IFRlc3RXaXRoU3RyZWFtIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKKyAgICB2b2lkIFNl
bmRTdHJpbmcoU3RyaW5nIHVybCkKKyAgICB2b2lkIFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQoU3Ry
aW5nIHVybCkgLT4gKGludDY0X3QgcmV0dXJuKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlci5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIu
bWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE3MGFjODlhMjVmMDM5MjE5ZmU0MTgxMDViMmMxZDA0
YWUwYzdlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNiBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRlc3RzIFN0cmVhbSBy
ZWNlaXZlciBhdHRyaWJ1dGUuCittZXNzYWdlcyAtPiBUZXN0V2l0aFN0cmVhbUJ1ZmZlciAgewor
ICAgIHZvaWQgU2VuZFN0cmVhbUJ1ZmZlcihJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3Ry
ZWFtKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jOWM5MjQwYTRlYjFhYjU1NzQwOTYwMjI5MWRjMTI3MzE5ODdmMDU0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
ICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0
cmVhbUJ1ZmZlci5oIgorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1l
c3NhZ2UuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisjaW5jbHVkZSAi
VGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
dm9pZCBUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI6Om5h
bWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3Ry
ZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJl
YW1CdWZmZXI6OnNlbmRTdHJlYW1CdWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVh
bUJ1ZmZlck1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTI0ZWJkZDIwMGYzMzkw
NDc3ZGZhZjdjZDg1NzE5MWJkNTNiMjg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgKQEAg
LTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
TWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1Jl
cGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXI7Cit9CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhT
dHJlYW1CdWZmZXIgeworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VS
ZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6VGVzdFdpdGhT
dHJlYW1CdWZmZXI7Cit9CisKK2NsYXNzIFNlbmRTdHJlYW1CdWZmZXIgeworcHVibGljOgorICAg
IHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpTdHJlYW1Db25uZWN0aW9u
QnVmZmVyJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZlcjsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQg
U2VuZFN0cmVhbUJ1ZmZlcihjb25zdCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIHN0cmVh
bSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhzdHJlYW0pCisgICAgeworICAgIH0KKworICAgIGNv
bnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIKK30gLy8gbmFtZXNw
YWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmggYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODdmYTJhZDdkNTA2MzAwZjNjY2IzOTBmMTk3MjU5ZDkwZTY5M2YzMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMuaApAQCAtMCwwICsxLDM2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisg
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1l
c3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIgeworCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRo
U3RyZWFtQnVmZmVyCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZVJlY2VpdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mzk4ODU1YWQ1NmU5NTE5OTdjOWQyYWIz
Zjg4ODA5NGM4ODkyMzI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJUZXN0V2l0aFN0cmVhbS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNs
dWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUgIlRl
c3RXaXRoU3RyZWFtTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgVGVzdFdpdGhTdHJlYW06OmRpZFJlY2VpdmVT
dHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24s
IElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6bmFtZSgpKSB7CisgICAg
ICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJp
bmc+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6Om5hbWUoKSkgeworICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3Ry
aW5nU3luY2hyb25pemVkPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJp
bmdTeW5jaHJvbml6ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFVOVVNFRF9QQVJB
TShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2Fn
ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MGJmZWJhYjIzNzJjMWY2NjA1YzU1ODk0NTkzOGJmMWU0ZTdhYWZj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVz
dFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdp
dGhTdHJlYW0geworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNl
aXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6VGVzdFdpdGhTdHJl
YW07Cit9CisKK2NsYXNzIFNlbmRTdHJpbmcgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2Vu
ZFN0cmluZzsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAg
ZXhwbGljaXQgU2VuZFN0cmluZyhjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3Vt
ZW50cyh1cmwpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgU2VuZFN0cmlu
Z1N5bmNocm9uaXplZCB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBs
ZTxjb25zdCBTdHJpbmcmPjsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7
IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hy
b25pemVkOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVz
aW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxpbnQ2NF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVu
dHMgPSBzdGQ6OnR1cGxlPGludDY0X3Q+OworICAgIGV4cGxpY2l0IFNlbmRTdHJpbmdTeW5jaHJv
bml6ZWQoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAg
IHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFy
Z3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFt
Cit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGll
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjIyYzVhMDc4ZGUwMWVjMTQzMGY4OTRmMjBjYjljMmY5MTU1ZTdjYWIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNl
IFRlc3RXaXRoU3RyZWFtIHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbQorfSAv
LyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGY5YmE1ZGM3ODI0YjFlNWIwM2U1
M2Y5OGI3YTdmOGU0ZGVmMjFjNjQuLjQ1ODkyNmYyNWJkNmQ1MTYyYTc1OWNlMGM3M2Y4ZWExZWIx
N2Q1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTUwLDYgKzE1MCwxMCBAQCBQbGF0Zm9ybS9JUEMvTWVz
c2FnZVJlY2VpdmVyTWFwLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVy
LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBAbm8tdW5p
ZnkKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkK
K1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKK1BsYXRm
b3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQ
Qy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9T
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TdHJpbmdS
ZWZlcmVuY2UuY3BwIEBuby11bmlmeQogCiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCBjMzMwNzgyNWIyMDA4NmRlZDRjODZjNjQ4OGNlNWRk
NTdlYzBjMzU4Li44OTUyMDhjM2JjMjI2ZDZmYjEyODYxZGE0MzdjZGEzODFmNDhkNjM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxv
YWRJRC5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDMwMWQwZWQ4MzBkYmVkOTA4Y2JiMjc4ODZmMDRhOGZl
ZWE5ZmQ4OWUuLjIzYWIxMGQ2M2E0ZjRhM2ZkMjBjZWQ0ZDczMDE3M2Y0NzVkYzdmNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRl
ICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKKyNp
bmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjA2
MWE2MzdkYjkzYmIwYWZjNmQ5YzY1MTZjM2QwM2UyMzViNWNjMS4uZjAwNmU1MWFiMjM4MzA4NDQy
ZTE2NDBmZjdlOGM2NTY0ZTczZjQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzI4LDYgKzEzMjgsMTYgQEAKIAkJN0I0ODNGMjAy
NUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAv
KiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi87IH07CiAJCTdCNDgzRjIxMjVDRERBOUMwMDEyMDQ4
NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdl
UmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLzsgfTsKIAkJN0I0ODNGMjIyNUNEREE5QzAwMTIwNDg2IC8q
IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVR
dWV1ZXMuaCAqLzsgfTsKKwkJN0I3MzEyM0EyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgg
Ki87IH07CisJCTdCNzMxMjNCMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNw
cCAqLzsgfTsKKwkJN0I3MzEyM0MyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
NzMxMjMzMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggKi87IH07
CisJCTdCNzMxMjNEMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM0
MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCAqLzsgfTsKKwkJ
N0I3MzEyM0UyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM1MjVD
Qzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggKi87IH07CisJCTdC
NzMxMjNGMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM2MjVDQzg1
MjQwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJN0I3MzEy
NDAyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzcyNUNDODUyNDAw
M0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovOyB9OworCQk3QjczMTI0MTI1
Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzgyNUNDODUyNDAwM0IyNzk2
IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKKwkJN0I3MzEyNDIyNUNDODUyNTAw
M0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzOTI1Q0M4NTI1MDAzQjI3OTYgLyogU3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAqLzsgfTsKKwkJN0JBQjExMTAyNUREMDJCMzAwOEZDNDc5
IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBT
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi87IH07CiAJCTdDMDY1RjJDMUM4Q0Q5
NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5NUYw
MEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLzsgfTsKIAkJ
N0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0Ew
MDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQ
SURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggKi87IH07CkBA
IC00NTQwLDYgKzQ1NTAsMTUgQEAKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3Nh
Z2VSZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyog
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIz
MTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjczMTIzMzI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1DbGllbnRDb25uZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM0MjVDQzg1MjQwMDNC
Mjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QjczMTIzNTI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMx
MjM2MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNzI1Q0M4NTI0MDAzQjI3OTYg
LyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I3MzEyMzgyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzOTI1Q0M4NTI1
MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY2MjU0
QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NDcsNiArNDU2
Niw3IEBACiAJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2RDI1NTAx
MDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0
ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JBQjExMEYyNUREMDJCMjAwOEZD
NDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1NzRGNjcyMDBFODVEOTggLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NjgyNTc2ODBFRjAwRTg1
RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTY5ODUsMTAgKzcwMDUsMjAgQEAKIAkJCQkxQTNFRUQwRDE2MUE1MzUzMDBB
RUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggKi8sCiAJCQkJMUFBQjAzNzcxODVBN0M2QTAw
RURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuY3BwICovLAogCQkJCTFBQUIwMzc4MTg1QTdDNkEwMEVE
RjUwMSAvKiBNZXNzYWdlU2VuZGVyLmggKi8sCisJCQkJN0JBQjExMEYyNUREMDJCMjAwOEZDNDc5
IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLywKIAkJCQkyREMxODAwMUQ5
MERERDE1RkM2OTkxQTkgLyogU2hhcmVkQnVmZmVyQ29weS5jcHAgKi8sCiAJCQkJNUNDNURCOTEy
MTQ4OEUxNjAwNkNCOEE4IC8qIFNoYXJlZEJ1ZmZlckNvcHkuaCAqLywKIAkJCQkyREMxODU1RURC
RkI4NTBCQTBCNkQwNkQgLyogU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJ
MkRDMTg4MUFDQkNBQjVENTdDNUM2RUYwIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCAq
LywKKwkJCQk3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5jcHAgKi8sCisJCQkJN0I3MzEyMzMyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENv
bm5lY3Rpb24uaCAqLywKKwkJCQk3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlci5jcHAgKi8sCisJCQkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLywKKwkJCQk3QjczMTIzOTI1Q0M4NTI1MDAzQjI3OTYg
LyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAqLywKKwkJCQk3QjczMTIzMjI1Q0M4NTIzMDAz
QjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8sCisJCQkJN0I3MzEyMzUy
NUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAqLywKKwkJCQk3
QjczMTIzNzI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8s
CisJCQkJN0I3MzEyMzgyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24u
aCAqLywKIAkJCQkxQUUwMEQ2OTE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmNw
cCAqLywKIAkJCQkxQUUwMEQ2QTE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmgg
Ki8sCiAJCQkpOwpAQCAtMTIwMTgsNiArMTIwNDgsNyBAQAogCQkJCUJDMkQwMjE3MTJBQzQxQ0Iw
MEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFBQjRBOEQxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkFCMTExMDI1REQwMkIzMDA4
RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTRENTREMDQyMUYxRDcyRDAwN0UzQzM2IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMxQzFDMThDNTcxMTkw
MERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjA2Nyw2ICsxMjA5
OCwxMSBAQAogCQkJCTkzNkIwNTk4MjMwMzkwOTcwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM2OEVFREYyMzAzQTlFRDAwQkRCMTFBIC8qIFN0b3Jh
Z2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NUY0RTA2MjMwQjJF
OTUwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJN0I3MzEyM0MyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjNBMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTI0MjI1Q0M4NTI1MDAz
QjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdC
NzMxMjNFMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3QjczMTI0MTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENkMxODMyN0MxMjAwMDg3REQ3
IC8qIFN0cmluZ1JlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk2QkQ4NUQxNTAxOUJD
MzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMx
ODYyMkIzNTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMzg5NCw2ICsxMzkzMCwxMCBAQAogCQkJCTkzRDZCNzgyMjU0Q0ND
RjQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTMzNERFRDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFy
ZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM2OEVFREUyMzAz
QTkwMjAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTdCNzMxMjNGMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRD
b25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjNEMjVDQzg1MjUwMDNCMjc5
NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMx
MjNCMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTdCNzMxMjQwMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgzMjEyQjZBNzEwMEY0OTNG
RCAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3NTEyMTI2
QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkQxMUI3NTIyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggZjI5
YmUwMDZlYjdiOTc2NGI3ODJkOTE2MjVjODAxNjBmZjhmMzZmMy4uYjE5YmMxZTBhMDE5MDdmOWNl
ZGQ2MGE1NjU3NWZhZGY1YzlkODgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwCkBAIC00OCwxMyArNDgsMTYgQEAgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdAog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1
dGVzKSk7CiB9CiAKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0g
MSA8PCAyMTsKKwogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24s
IGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCiAgICAgOiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShhdHRycykKICAgICAsIG1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oJmdwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKGdw
dVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgZGVmYXVsdFN0cmVhbVNpemUpCiB7CiAg
ICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBncHVQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwotICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
LCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5
bmNSZXBseSk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgbV9zdHJlYW1Db25uZWN0aW9uLnN0cmVhbUJ1ZmZlcigpKSwgMCwg
SVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkpOwogfQogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eSgpCkBAIC0xNjMsNyArMTY2LDcgQEAgR0NHTGVudW0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1f
ZXJyb3JXaGVuQ29udGV4dElzTG9zdCwgTk9fRVJST1IpOwogfQogCi12b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcmJiBh
dmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQordm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwg
SVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMs
IFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3Qo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTcyLDYgKzE3NSw3IEBAIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2
YWlsYWJsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKCFtX2RpZEluaXRpYWxp
emUpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi5zZXRXYWtlVXBTZW1hcGhvcmUoV1RGTW92ZShz
ZW1hcGhvcmUpKTsKICAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOwogICAgIGluaXRpYWxpemUo
YXZhaWxhYmxlRXh0ZW5zaW9ucywgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDgzMWI0YjBhYjEzN2U2YWFmODM1OTZl
MGIwYTA3NmRmMWUwOTE3NjEuLjc4OTdmNmNmZTgzY2VjNTVmZmEyZjYzYTk3NGZhYTdmMDEzYWE5
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0yOSwxMCAr
MjksMTEgQEAKIAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5o
IgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKyNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UuaD4KQEAgLTMzNCwxOSArMzM1LDE4IEBAIHByb3RlY3RlZDoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNl
bmQoVCYmIG1lc3NhZ2UpCiAgICAgewotICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChXVEZNb3Zl
KG1lc3NhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCBJUEM6
OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7
Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9u
LnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIGRl
ZmF1bHRTZW5kVGltZW91dCk7CiAgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAg
V0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCiAgICAgewotICAgICAg
ICByZXR1cm4gY29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUo
cmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9uLnNlbmRTeW5j
KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKICAgICB9CiAgICAgSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQu
Ci0gICAgdm9pZCB3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZhaWxhYmxl
RXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgdm9pZCB3YXND
cmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUmJiwgU3RyaW5nJiYgYXZhaWxh
YmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CiAgICAgdm9pZCB3
YXNMb3N0KCk7CiAgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CiAKQEAgLTM2MCw4ICszNjAsOCBAQCBw
cml2YXRlOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9u
OwogICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKICAgICBHQ0dMZW51bSBtX2Vy
cm9yV2hlbkNvbnRleHRJc0xvc3QgPSBOT19FUlJPUjsKLQogICAgIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciB7IEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIElQQzo6U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbiBtX3N0cmVhbUNvbm5lY3Rpb247CiB9OwogCiAvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8g
Zm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUt
Z3B1cC13ZWJnbCBzY3JpcHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYTdjNjQxMmFjOTQ2ZTI1OGNlMDEzOGJjNDdiYzM4
NjIxOTUwMjFkNy4uZjQzZWMwYTJlYWEzODRlNGVkZThkZDQ0MGQ5ZWZlMDI4YWNiN2JmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdF
QkdMKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNv
dW50ZWQgewotICAgIHZvaWQgV2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyBhdmFp
bGFibGVFeHRlbnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zKQorICAgIHZvaWQg
V2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlIHN0cmVhbVdha2VVcFNl
bWFwaG9yZSwgU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0YWJsZUV4
dGVuc2lvbnMpCiAgICAgdm9pZCBXYXNMb3N0KCkKICAgICB2b2lkIFdhc0NoYW5nZWQoKQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5kZXggN2FhZDdkYTIw
NzBkZTgzZDE0YzcxZGQ5ODI0NzRhYWYxMDZhN2RiNS4uZjEzNDFkY2QyNzZkMGMxMDFlNDRiZGRh
MTdjZTQwYjhhM2NiMzYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRj
aGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDTmV0d29yay5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaAppbmRleCBiYmU3ZmMyNmNmMzIzNDY2OTVlNjFmZDAx
ZDZhMGIyMzJkZTBkMTg4Li5hNjExZGFiZjRlYmI1NmU3YTQyNTk0ZGQ3YmQzYmIwYzgxYTVjODBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGli
V2ViUlRDTmV0d29yay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1NvY2tldEZh
Y3RvcnkuaCIKICNpbmNsdWRlICJXZWJNRE5TUmVnaXN0ZXIuaCIKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3YTM0MDg4ZjBkZmUxOGZlN2IxMTRh
YzFiMDM4YmQ3OGIyNGMwMzBkLi40MGI1ZTg3NGUxMGFjMjAyNWU5ZjU1M2RhYmVmNjQ1NWVjODk2
ZGY3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMjEtMDItMDUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWJHTCBHUFUgcHJvY2VzcyBJUEMgc2hvdWxkIHVzZSBzaGFy
ZWQgbWVtb3J5IGZvciBhc3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNzIzNDA2NTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTWFyayBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBtZXNzYWdlIHJlY2VpdmVyIGFzICJT
dHJlYW0iLAorICAgICAgICBhIG5ldyB2YXJpYW50IG9mIHJlY2VpdmVyLgorCisgICAgICAgICog
U2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorCiAyMDIxLTAyLTE2ICBBbmRyZXMgR29uemFs
ZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgbWFrZUpTQXJyYXkgaW4g
Ym90aCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjL0lPUy5tbS4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbAppbmRleCA1Njg1ZTkwNzUzNTNmZDFkMmNlYTk0NjIwNmI1N2U0OGI0MjY2M2ZkLi44
MzQ2MjgyMzQwMWMxNjgzMDcyMmFlYjM1NDVlY2ZlZWZiNjRhODgzIDEwMDc1NQotLS0gYS9Ub29s
cy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1ncHVwLXdlYmdsCkBAIC04OSw3ICs4OSw3IEBAIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUg
PSAoCiAgICAgdGVtcGxhdGVfcHJlYW1ibGUKICAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wgTm90UmVmQ291bnRlZCB7eworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wg
Tm90UmVmQ291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9y
RGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMDZlNzQ3OWEyZTY1OWUzYTc4MzA2ZDMwNGJkMjE5M2EwMjFmNjUyZS4uYWRhNWRjODcy
NDQzYzc3YWJhNGQyMzgwY2Y2MjhlNGEwNjc1ZWIwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIxLTAyLTE3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgV2ViR0wgR1BVIHByb2Nlc3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5
bmNocm9ub3VzIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTk2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hcmsgZmV3IHRl
c3RzIGFzIG5vdCB0aW1pbmcgb3V0IG5vdyB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3Qg
c28gc2xvdy4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIw
MjEtMDItMTYgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW3NlbGVjdG9yc10gOmZvY3VzLXZpc2libGUgcGFyc2luZyBhbmQgZXhwZXJpbWVudGFs
IGZsYWcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDNiOTBj
MmFiYWMxYWZlMzVkZjg2NGE0YWJiOTNhYmIwMDI5MGZhYTQuLmYzYWY5M2M1OTZjN2QzYTAxZGQ3
MjkxYzkwNGJkMmQwMGVmOTgwZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNz
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMzQsNyArMzQsNyBAQCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1z
ZS1mbGlwWS10cnVlLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdl
MkQtdmlkZW8tZmxpcFktZmFsc2UuaHRtbCBbIFRpbWVvdXQgXQogZmFzdC9jYW52YXMvd2ViZ2wv
dGV4SW1hZ2UyRC12aWRlby1mbGlwWS10cnVlLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvY2FudmFz
L3dlYmdsL3RleHR1cmUtYWN0aXZlLWJpbmQuaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9jYW52YXMv
d2ViZ2wvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBUaW1lb3V0IF0KK2Zhc3QvY2FudmFz
L3dlYmdsL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgU2xvdyBdCiBmYXN0L2NhbnZhcy93
ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQogCiBmYXN0L2Rv
bS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2guaHRtbCBbIEZhaWx1cmUgXQpAQCAtMjMwLDcg
KzIzMCw2IEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUt
ZmxvYXQtd2l0aC1jYW52YXMuaHRtbCBbIEZhaWx1cmUKIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxv
YXQtd2l0aC1jYW52YXMuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1
cmUgXQotd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJhdy1jYWxscy5o
dG1sIFsgVGltZW91dCBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9zdGF0ZS9nbC1vYmplY3Qt
Z2V0LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1
cmVzL2dsLXBpeGVsc3RvcmVpLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1h
bmNlL3RleHR1cmVzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXJnYjU2
NS5odG1sIFsgRmFpbHVyZSBdCkBAIC0yNDksNyArMjQ4LDcgQEAgd2ViZ2wvMS4wLjMvY29uZm9y
bWFuY2UvdGV4dHVyZXMvdGV4LWltYWdlLXdlYmdsLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEu
MC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHBhcmFtZXRlci10ZXN0Lmh0bWwgWyBGYWlsdXJl
IF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtYWN0aXZlLWJpbmQt
Mi5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0
dXJlLWFjdGl2ZS1iaW5kLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNl
L3VuaWZvcm1zL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgVGltZW91dCBdCit3ZWJnbC8x
LjAuMy9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFNs
b3cgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvY2FudmFzL2NhbnZhcy10ZXN0Lmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2NhbnZhcy9kcmF3LXN0YXRpYy13ZWJn
bC10by1tdWx0aXBsZS1jYW52YXMtdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9j
b25mb3JtYW5jZS9jYW52YXMvZHJhdy13ZWJnbC10by1jYW52YXMtdGVzdC5odG1sIFsgRmFpbHVy
ZSBdCkBAIC0yNjEsNyArMjYwLDYgQEAgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvZXh0ZW5zaW9u
cy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIu
MC4wL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLWNh
bnZhcy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9leHRlbnNpb25z
L29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVyZSBdCiB3ZWJn
bC8yLjAuMC9jb25mb3JtYW5jZS9yZWFkaW5nL3JlYWQtcGl4ZWxzLXRlc3QuaHRtbCBbIEZhaWx1
cmUgXQotd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJhdy1jYWxscy5o
dG1sIFsgVGltZW91dCBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9zdGF0ZS9nbC1vYmplY3Qt
Z2V0LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1
cmVzL2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11
bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sIFsgRmFpbHVyZSBdCkBAIC0yODcsNyArMjg1LDcgQEAg
d2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2It
cmdiLXVuc2lnbmVkX3Nob3J0XzVfNl8KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVz
L3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBbIEZhaWx1
cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0y
ZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJn
bC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYmEtcmdi
YS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlL3VuaWZvcm1zL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgVGltZW91dCBd
Cit3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBsZXJzLXRlc3Qu
aHRtbCBbIFNsb3cgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3JlYWRpbmcvcmVhZC1waXhl
bHMtcGFjay1wYXJhbWV0ZXJzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1h
bmNlMi9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzIu
MC4wL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJn
Yi1mbG9hdC5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420671</attachid>
            <date>2021-02-17 10:59:01 -0800</date>
            <delta_ts>2021-02-17 11:18:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210217205859.patch</filename>
            <type>text/plain</type>
            <size>163664</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjNDg4MWE0MDdiNmI0NjYz
N2U1MzM0MGMyZGEwZmE5ZjQ2MGJiNDEuLmNkNmM5N2RkZjZlNjY1YjU5NTczZjMzY2ZmMWVmNTcz
M2FlMDdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2Vz
IGFuZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJl
Y2VpdmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNl
aXZlZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAg
cHJvY2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVu
dGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hy
b25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQg
dGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhh
dmluZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAg
IGluIHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0
IGluIGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBv
bmUgMm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJl
IHdpbGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24K
KyAgICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFy
IHRocmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJv
cHRpbWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAg
cHJvY2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2Ug
dG8gaGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGlj
aXBhdGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8g
c2FtZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1p
emF0aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFz
IHBhcnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAg
IEluIEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sg
cXVldWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQg
d2lsbCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24g
cGVyIGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAg
ICBTZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRp
b24gd2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYg
dGhlIG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUg
aXQgdGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91
dCBvZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9u
IGFycml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAg
ICBtZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2ls
bCBzdG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxs
IGNvbnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4g
cHJvY2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0
cmVhbSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1l
c3NhZ2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMg
c2VuZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0g
Y29ubmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9y
ZS4gVGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlz
IHdhaXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6
CisgICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAg
cG9pbnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAg
IC0gV2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2gg
fjYwZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVl
VW5pbml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4g
dGhlIHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0
aW9ucyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1
ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpzZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVl
dWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBtdWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0
aGUgSVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmls
aXR5IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xp
ZW50LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6
CisgICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNv
bnN0cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZm
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAo
SVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNw
ZWNpZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFy
ZSB1bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRo
cm91Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAg
ICAgVGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBp
cyByZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2Fz
ZSB3aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRo
ZSBzdHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAg
ICAgICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2Fr
ZXVwIHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNl
bWFwaG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24u
IEFsbCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2
ZSB0aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhl
eSBoYXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVz
dGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rp
b246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dCBjb25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0
YSB0aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVN
ZW1vcnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAo
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0
aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZl
ci4KKyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90
aCB0aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4K
KyAgICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1
cCwgdGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFs
bCB0aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAi
aG9sZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBv
ZiAiYnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAg
ICAgIGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBj
b250YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAg
ICAgRm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBw
cm9jZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUg
b2YgdGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwg
c2xlZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3
aWxsIHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdp
bGwgd2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9m
ZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXpl
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
cyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9j
ZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1l
c3NhZ2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUg
bWVzc2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRo
ZSBidWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRo
YXQgdGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1h
bCBJUEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3Nh
Z2UgdW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdT
dHJlYW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFz
CisgICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxs
IG1lc3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1l
c3NhZ2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAg
ICAgIGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUg
c3RyZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJ
UEMgbWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNz
ZWQuCisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0
aW9uSUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJl
YW0gbWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAg
ICAgIHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJl
YW1EZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVk
LgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZm
ZXI6OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5
bmNocm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToK
KyAgICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0
IG9mIHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6
On5TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZSk6CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVs
ZCBzaW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0x
NiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgYnVpbGQgZml4IGFmdGVyIHIyNzI5MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkNTc3ZTQzNDk5ZjE4
MTQ3OTFjOGEwZWY3MWNiMzRhMDI0YTFmYWUyLi5kYjc3MjM4MTQ0Y2E4YTMwZmY2ZWFjOWY4MmY1
YzQ5ZGNkMjFiMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2Rl
ckFWRlByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogewogICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0o
KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAgICAgIHJldHVybiBJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zMjYsMjEgKzMyNiwxMSBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAotR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RGTW92
ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25uZWN0
KCk7Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUo
c3RyZWFtKSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWJiMGQwMDhmM2Q3MTI5MjE3YjhlOTZl
ZmExOWJkNTFmZmFmYTE2Ny4uZDAyZTk3ODc3NTdjZDZmYzQ1YTlmOTg5NmU1YjExODdmOTViN2Jl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNz
aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKIAogI2luY2x1ZGUgPFdl
YkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWlu
Z01hbmFnZXIuaD4KQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtMjA2LDIwICsyMDcsMTAg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9Owog
I2VuZGlmCiAKLSAgICBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7Ci0gICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOwot
ICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoKTsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBI
YXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKKyAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKICNp
ZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBI
YXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CiAgICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKICNl
bmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDMwZjVjMjk4ODYyMTRmOTEwNGYxYWZhMDgzNWIyMzhhMzZkYzZlZjEuLmY2MzBi
MWJhZmUwZDJjMmVjNDAwMzdkOWE3YTdjNzIzZDI1OTk5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5n
QmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQ
Qzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgIHZvaWQgUmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRl
cywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQogICAgIHZvaWQg
UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNlbmRpZgogICAgIHZvaWQgQ2xlYXJO
b3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA3OWIzNDU5NmZi
ZjJkMGRmYzk4MTg2NTFiZGNmZWI0YjBhMGM4NzVkLi5hMGEwZjY4ZGI2NTQ0YWEyYzA0YjJlYWM5
ZDA1ZmY4NzI1YTg0ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTMxLDU1ICsz
MSw3OSBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBvbmUgZ2xvYmFsIFdlYkdMIHByb2Nl
c3NpbmcgaW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiBy
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZT4gaW5zdGFuY2UoIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsKKyAgICByZXR1cm4gaW5zdGFuY2Uu
Z2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmIHN0cmVhbSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBhdXRvIGluc3RhbmNlID0gbWFrZVVuaXF1ZTxSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTD4oZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCBXVEZNb3ZlKHN0cmVhbSkpOworICAgIGluc3RhbmNlLT5pbml0aWFsaXplKFdURk1v
dmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5jZTsKIH0KICNlbmRpZgogCi1SZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkK
LSAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKSkKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCisgICAgOiBtX3N0
cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMPjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigp
LCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVl
KCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
ID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0gICAgbV9j
b250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwotICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250
ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOwotICAgIFN0cmlu
ZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25z
R0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgZXh0ZW5zaW9ucywg
cmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQogewotICAgIGlmIChhdXRvKiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQot
ICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworICAgIEFTU0VSVCghbV9zdHJlYW1Db25uZWN0aW9uKTsKKyAgICBBU1NFUlQoIW1f
Y29udGV4dCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUo
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKK3sKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworICAgIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29y
a1F1ZXVlKCkuZGlzcGF0Y2goW2F0dHJpYnV0ZXMgPSBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPndvcmtRdWV1ZUluaXRpYWxpemUoV1RGTW92ZShhdHRyaWJ1dGVzKSk7CisgICAgfSk7
CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlzLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLUdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkgY29uc3QKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnN0b3BM
aXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21Db25u
ZWN0aW9uKQogewotICAgIHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCk7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24t
PnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24pXSgpIHsK
KyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAgfSk7
CiB9CiAKLUlQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ondv
cmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYg
YXR0cmlidXRlcykKIHsKLSAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgcmV0dXJuICZncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOwor
ICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMp
OworICAgICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBo
aWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0
ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVf
RVhURU5TSU9OU19BTkdMRSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xT
dHJlYW1Xb3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSwgZXh0ZW5zaW9ucywgcmVxdWVzdGFi
bGVFeHRlbnNpb25zKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFsc2UsIElQQzo6U2VtYXBob3Jl
IHsgfSwgIiIsICIiKSk7CiB9CiAKLXVpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjp3b3JrUXVldWVVbmluaXRpYWxpemUoKQogewotICAgIHJldHVybiBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIG1fY29udGV4dCA9IG51bGxwdHI7
CisgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKQEAgLTg4LDcgKzExMiw3IEBAIHZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCiAKIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Oldhc0xvc3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJl
Y3ljbGVDb250ZXh0KCkKQEAgLTk4LDcgKzEyMiw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmgKaW5kZXggMDAxNTlhYzhiNTg2YThiNjJhM2RkYTNhNTcwMDRlODgzZTE1NmQw
OC4uNTJlNDc2OTEwYTRlYWQwMDM5Y2UwYzFhYTU1ZTRmNDQ2YTA0OTU2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3Nh
Z2VTZW5kZXIuaCIKLQorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBA
IC00OSwzMSArNDgsMjEgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLWNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0KIC8vIEdQVSBwcm9jZXNz
IHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFw
aGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdM
IGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KIC8vIFRoZSBpbXBsZW1lbnRh
dGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJh
dGUtZ3B1cC13ZWJnbC4KLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCi0gICAgOiBwdWJs
aWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
Ci0gICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgeworY2xh
c3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBj
cmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKIAotICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKyAgICAvLyBJUEM6OlN0
cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IHRlbXBsYXRlIGNv
bnRyYWN0IGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2Uo
SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMPik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgotICAgIElQQzo6
Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKLSAgICB1
aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwotCi0gICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgotICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgdm9pZCBpbml0aWFs
aXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKIAogICAgIC8vIEdy
YXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkQ29tcG9zaXRl
KCkgZmluYWw7CkBAIC05NSw4ICs4NCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICNpbmNsdWRlICJSZW1v
dGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKIAotICAg
IFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwotICAgIFdl
YWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOworICAgIHZvaWQgd29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmJik7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtV29ya1F1ZXVlSW5p
dGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJikgeyB9OworICAg
IHZvaWQgd29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2UpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtQ29ubmVj
dGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOyB9CisKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj4gbV9zdHJlYW1Db25uZWN0aW9uOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwogICAgIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCA3YTE5
MjVkYmIyN2FiZjNkMzAzNGNiN2ZjYjM4YTNmMzkzZTNkY2ZhLi40NzAyYzY0Zjc1ZTQ3NmNmZjFh
MTAwMDUwNzU1MDk2YmRjZTc4OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5v
dFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50
MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlz
cGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggOGUyZDFmYzY1MTg2MjgzOTVlOTc0
MWM0NGU3YWM4NTFiMDhlZjYyNy4uYzRlNDExMjYxOTViMzUyOThhZWFmMmZjYWVmMjBhZGZiNDMx
ZDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtMzksMTAgKzM5
LDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eg
ZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wsIHByaXZhdGUgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gewogcHVibGljOgotICAgIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVh
bUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
KSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBvdmVy
cmlkZXMuCisgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOwogICAgIHZvaWQgcHJlcGFyZUZvckRp
c3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYpIGZp
bmFsOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3ZlcnJp
ZGVzLgpAQCAtNTYsMTYgKzU3LDIzIEBAIHByaXZhdGU6CiAKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKK1Jl
ZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0
ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoYXR0
cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKSk7CisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3RhbmNlLT5pbml0aWFs
aXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShj
b25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBpZGVudGlmaWVyKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0cmli
dXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNy
ZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykpCitSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV1RGTW92ZShz
dHJlYW0pKQogewogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBsYXRm
b3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmJiBhdHRyaWJ1dGVzKQoreworICAgIG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKFdURk1vdmUoYXR0cmlidXRlcyksIHRoaXMpOworfQor
CiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQogewogICAgIHJldHVybiBXVEZNb3Zl
KG1fZGlzcGxheUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMmM3NjI1MTg2
YWVlMTVkNzcyYjc2NGJkZDU1OWYwYTFjMjcwYmQ0MS4uNjIxMmVhMDRlOWQ4ZThlMGMxODZlMTEy
YTBiMzgwNzRjNWIxNDgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtODMsNyArODMs
NyBAQCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpCiAg
ICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtyZW1vdGVSZXNvdXJjZUNhY2hlID0gV1RGTW92ZSht
X3JlbW90ZVJlc291cmNlQ2FjaGUpXSB7IH0pOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmRpc2Nvbm5lY3QoKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdG9wTGlz
dGVuaW5nRm9ySVBDKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaAppbmRleCBiN2FlZTI2Mjc3MDViYjlhY2MxMDE5ZDcxNTVlZjI3ZTE1M2Qy
YjI4Li5hNGFhN2I0Nzg3NTVhOWJiNWUyOTNmZDFiYzgyOGNjZGZlMjQ5NDQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3Bs
YXlMaXN0U2VtYXBob3JlKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7
CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNh
Y2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hl
OyB9CiAKQEAgLTc4LDggKzc5LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXROZXh0SXRlbUJ1
ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbik7CiAKLSAgICB2
b2lkIGRpc2Nvbm5lY3QoKTsKLQogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwg
SVBDOjpTZW1hcGhvcmUmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggNDk3MTcxYjU2NDI2ODky
ODk1MjEwNmJkN2VlYTU0YmVlOTNiZWUyMy4uYjBjZjcwZjA2ZTExOGUwMjFkODY0ZGViOThkNDE0
ZWZiYTllN2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBVU0Uo
TElCV0VCUlRDKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJOZXR3b3JrUlRDTW9uaXRvci5oIgogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAppbmRleCAzMjA3NmFmZDAyYTg5
OGExZTM5ZGUyODNlMTAyYjg1OTQ3ZjhlZGM3Li41MzM1MGY5ZjdjOGMxMmJlNjI3NTk5OWM3ZWJm
YzNjN2UwOTFiY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
ci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAi
RW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNzUsNiArNzYsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBBcmd1bWVudENvZGVyIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
VCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihUKSwgYWxpZ25v
ZihUKSk7CkBAIC05MSw2ICs5Myw3IEBAIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29k
ZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIFQgdmFsdWUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxUPihXVEY6OmVudW1Ub1VuZGVy
bHlpbmdUeXBlPFQ+KHZhbHVlKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2RlcnMuY3BwCmluZGV4IGIwYTQzZGU5ZDdhMTM3MjE2YTE5YmY3ZDBiZDVlMTkxMTNi
NWRhNjguLmFlZTg5ZTYyNjk2YzU2MGYwYTE4YmZiMWQ2NzY5MTY1MGU3ZmYyYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCiAjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBA
IC0xMTEsNyArMTEyLDcgQEAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2RlcjxD
U3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENTdHJpbmcKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBBcmd1bWVudENvZGVy
PFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykK
IHsKICAgICAvLyBTcGVjaWFsIGNhc2UgdGhlIG51bGwgc3RyaW5nLgpAQCAtMTMwLDYgKzEzMSwx
MCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVsc2UKICAgICAgICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmNo
YXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgYWxpZ25vZihVQ2hhcikpOwog
fQordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8RW5jb2Rlcj4o
RW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxT
dHJpbmc+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgogc3RhdGljIGlubGluZSBPcHRpb25hbDxTdHJpbmc+IGRlY29kZVN0cmluZ1RleHQoRGVj
b2RlciYgZGVjb2RlciwgdWludDMyX3QgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjBlYjE3YTBmZDgyNjBkNDBiZWM3ZmNkYWFlYTIz
YmM1ZTg2NWUwOS4uZjg1Njk4MDczZGQwNDViMjgxNmUxNjEwY2E0OTk2YTVkNGVlNmMyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC01NSw2ICs1
NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVBcmd1bWVudENvZGVyIHsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4gewogICAgIHVzaW5nIEFycmF5UmVmZXJlbmNl
VHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
QXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKICAgICB7CiAgICAgICAgIGlmICgh
RXh0ZW50KQpAQCAtNzQsNiArNzUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0
ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBFeHRlbgogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBh
cnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VU
eXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQog
ICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZl
cmVuY2Uuc2l6ZSgpKTsKQEAgLTI2Niw2ICsyNjgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnBhaXI8VCwgVT4+IHsKIAogdGVt
cGxhdGU8c2l6ZV90IGluZGV4LCB0eXBlbmFtZS4uLiBFbGVtZW50cz4KIHN0cnVjdCBUdXBsZUVu
Y29kZXIgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0
dXBsZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8c2l6ZW9mLi4uKEVsZW1l
bnRzKSAtIGluZGV4Pih0dXBsZSk7CkBAIC0yNzUsNiArMjc4LDcgQEAgc3RydWN0IFR1cGxlRW5j
b2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1cGxlRW5j
b2RlcjwwLCBFbGVtZW50cy4uLj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBzdGQ6OnR1cGxlPEVsZW1lbnRz
Li4uPiYpCiAgICAgewogICAgIH0KQEAgLTMzOCw2ICszNDIsNyBAQCBzdHJ1Y3QgVHVwbGVEZWNv
ZGVyPDA+IHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4geworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkKICAgICB7CiAgICAgICAgIFR1cGxl
RW5jb2RlcjxzaXplb2YuLi4oRWxlbWVudHMpLCBFbGVtZW50cy4uLj46OmVuY29kZShlbmNvZGVy
LCB0dXBsZSk7CkBAIC0zNzQsNiArMzc5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwg
dHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6OktleVZhbHUKIHRl
bXBsYXRlPGJvb2wgZml4ZWRTaXplRWxlbWVudHMsIHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+IHN0
cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFj
aXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2RlcjxmYWxzZSwgVCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBW
ZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiB2
ZWN0b3IpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2
ZWN0b3Iuc2l6ZSgpKTsKQEAgLTQxMSw2ICs0MTcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1p
bgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4gc3RydWN0IFZlY3RvckFy
Z3VtZW50Q29kZXI8dHJ1ZSwgVCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWlu
Q2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiB2ZWN0b3IpCiAgICAgewogICAgICAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2ZWN0b3Iuc2l6ZSgpKTsKQEAgLTc1
Myw2ICs3NjAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENTdHJpbmc+IHsK
IH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3RyaW5nPiB7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGUoRGVjb2RlciYsIFN0cmluZyYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGRlY29k
ZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCmlu
ZGV4IDhiNzQzMTRhYzA0YTU1YTQ4YmQwOTM2MjljMzYyMjA3MWUwZjJjNTAuLjFkMmVhNDg1YTk5
OGFlMjY0NDZhM2FlNjAwZTA0ZjMwY2E4ZTFkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIgpAQCAtOTMwLDggKzkzMSwxMyBAQCB2b2lkIENvbm5l
Y3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKIAogdm9pZCBDb25u
ZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSBtZXNz
YWdlTmFtZSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCisgICAgaWYgKCFS
dW5Mb29wOjppc01haW4oKSkgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZU5hbWVdKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2NsaWVudC5kaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UocHJvdGVjdGVkVGhpcywgbWVzc2FnZU5hbWUpOworICAgICAgICB9KTsK
KyAgICB9CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDQ4NTUyMDEyNDdjMjVkZjg1NTJjNWE1
NGEwNDY3N2I4ZDcyYjgyY2EuLmZlOWNhMzE4NjA2ZmRlZGM2MWQyMWQwN2RmMGY4YWIxYmZlOTNi
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTMwLDEwICsz
MCw5IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgotI2lu
Y2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFw
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSA8YXRvbWljPgorI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24u
aD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
MzEyLDYgKzMxMSw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBkaXNwYXRjaE1lc3Nh
Z2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJlY2VpdmVyJiwgc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+JiYpOworICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgorICAgIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUpOwogcHJpdmF0ZToK
ICAgICBDb25uZWN0aW9uKElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCYpOwogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIpOwpAQCAtMzM5LDcgKzM0MCw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERlY29k
ZXI+KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShEZWNvZGVyJik7CiAgICAgdm9pZCBkaXNw
YXRjaFN5bmNNZXNzYWdlKERlY29kZXImKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKICAgICB2b2lkIGRpZEZhaWxUb1NlbmRTeW5jTWVz
c2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCA4MGEwZjc1YzcwNTcyYmY0YzI0ODUyNmZl
ZDJmZWZiMDk3Y2RjOGY5Li40ZGUwNTA5OGM0NjMyYWQ0NWY0ZTg1M2Y2N2U5ZWUzZTc3MTM2ZDdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAtOTAsNiArOTAsMTcg
QEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGUKICAgICAgICAgbWFya0ludmFsaWQoKTsKIH0KIAor
RGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1TaXpl
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgIDogbV9idWZmZXIgeyBzdHJlYW0gfQorICAg
ICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CisgICAgLCBtX2J1ZmZlckVuZCB7IG1fYnVmZmVy
ICsgc3RyZWFtU2l6ZSB9CisgICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yKFtdIChjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSB7IH0pCisgICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25JRCkK
K3sKKyAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkKKyAgICAgICAgcmV0dXJuOworfQor
CiBEZWNvZGVyOjp+RGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1fYnVmZmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA2Njk4NWJjMzg3ZDc0MzkxMzcwMWIxMTdiOTE4
MDBiOWEyNzcxYWI4Li5iM2M2YWM4YTJkNWFjYmEyYzIxNTI4ZGZlYjE4YzY0MTVjZWRkMjJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNz
IERlY29kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4g
Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpi
dWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2ht
ZW50PiYmKTsKICAgICBleHBsaWNpdCBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCos
IHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKKyAgICBEZWNvZGVyKGNvbnN0IHVpbnQ4
X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwog
ICAgIH5EZWNvZGVyKCk7CiAKICAgICBEZWNvZGVyKGNvbnN0IERlY29kZXImKSA9IGRlbGV0ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCBlYThhZDQ1
YzA5ZWI2ODJlMGU4NjIzYjkzNGQ1ZTBlOWM3MDI2MjJhLi45Mjk2M2UyMWUxZDcxN2Y2NGE4MjE5
YzUyODliYWYwNTNmMDk5NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxl
TWVzc2FnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0xNjQsNiArMTY1LDI4IEBAIHZvaWQgaGFuZGxlTWVz
c2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERl
Y29kZXImIGRlCiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUoKmFy
Z3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+Cit2b2lk
IGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29u
bmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3sKKyAg
ICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN5
bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElEKSB7CisgICAgICAgIGRlY29kZXIubWFya0lu
dmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE9wdGlvbmFsPHR5cGVuYW1l
IENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOworICAg
IGRlY29kZXIgPj4gYXJndW1lbnRzOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAgIGRl
Y29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHR5cGVu
YW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtzeW5jUmVxdWVzdElELCBj
b25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxl
IHsKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShzeW5jUmVxdWVzdElELCBhcmdz
Li4uKTsKKyAgICB9OworICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7Cit9CisKIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5kbGVN
ZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyog
b2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lM2EwNTZhMDIwMWMyYWQwZTc0OTBlYzdkN2ZlYmJkZDc3MTA5N2IxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZS5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvUmVm
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKKworLy8gU2Nv
cGVkIGhvbGRlciBmb3Igb2JqZWN0cyB0aGF0IGhhdmUgYWN0aXZlIG1lc3NhZ2UgcmVjZWl2ZSBx
dWV1ZXMuIEVuZm9yY2VzIHRoYXQKKy8vIG9uY2UgaG9sZGVyIHN0b3BzIGhvbGRpbmcgdGhlIG9i
amVjdCwgdGhlIG1lc3NhZ2UgcXVldWUgc2hvdWxkIGJlIHJlbW92ZWQuCisvLyBUaGUgY29udmVu
dGlvbiBpcyB0byBjYWxsIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKSBmb3IgdGhlIG9iamVjdC4KKy8v
IE9wdGlvbmFsbHkgdGhlIG9iamVjdCBjYW4gb2J0YWluIHRoZSBvd25pbmcgcmVmZXJlbmNlIHRo
YXQgd2FzIHVzZWQgdG8gaG9sZCB0aGUgb2JqZWN0CisvLyBpbiBvcmRlciB0byBhdHRlbXB0IHRv
IGF2b2lkIG5lZWRsZXNzIGRlc3RydWN0aW9uIG9mIHRoZSBvYmplY3QgaW4gaG9sZGVyIHRocmVh
ZC4KKy8vIFRoaXMgdXNlZnVsIGluIHRoZSBjYXNlIHRoZSBzdG9wIGludm9rZXMgYSBjbGVhbnVw
IHRhc2sgaW4gdGhlIG1lc3NhZ2UgaGFuZGxlcgorLy8gdGhyZWFkLgordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEhvbGRlclR5cGUgPSBSZWZQdHI8VD4+CitjbGFzcyBTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBTY29wZWRBY3RpdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlKCkgPSBkZWZhdWx0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAg
IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoVSYmIG9iamVjdCkKKyAgICAgICAgOiBt
X29iamVjdChXVEZNb3ZlKG9iamVjdCkpCisgICAgeworICAgIH0KKyAgICBTY29wZWRBY3RpdmVN
ZXNzYWdlUmVjZWl2ZVF1ZXVlKFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUmJiBvdGhl
cikKKyAgICAgICAgOiBtX29iamVjdChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCBudWxs
cHRyKSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUm
IG9wZXJhdG9yPShTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlJiYgb3RoZXIpCisgICAg
eworICAgICAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgICAgIHJlc2V0KCk7Cisg
ICAgICAgICAgICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIG51bGxw
dHIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgflNjb3Bl
ZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAg
ICB9CisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAgICBpZiAoIW1fb2JqZWN0KQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZSht
X29iamVjdCk7CisgICAgfQorICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Lmdl
dCgpOyB9Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgc3RhdGljIGF1
dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0KSAtPiBkZWNsdHlwZShv
YmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpLCB2b2lk
KCkpCisgICAgeworICAgICAgICBvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0LnJl
bGVhc2VOb25OdWxsKCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHN0
YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9iamVjdCkgLT4gZGVj
bHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKFdURk1vdmUob2JqZWN0KSksIHZvaWQo
KSkKKyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhXVEZNb3ZlKG9i
amVjdCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBhdXRv
IHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9iamVjdCkgLT4gZGVjbHR5cGUob2Jq
ZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKCksIHZvaWQoKSkKKyAgICB7CisgICAgICAgIG9iamVj
dC0+c3RvcExpc3RlbmluZ0ZvcklQQygpOworICAgICAgICBvYmplY3QgPSBudWxscHRyOworICAg
IH0KKyAgICBIb2xkZXJUeXBlIG1fb2JqZWN0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoc3RkOjp1bmlxdWVfcHRyPFQ+JiYpIC0+
IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwgc3RkOjp1bmlxdWVfcHRyPFQ+PjsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUo
UmVmPFQ+JiYpIC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwgUmVmUHRyPFQ+
PjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGY1Y2RmMDA4ZTVhN2YyZDJmMTAyYTIzNWMz
YzIyNTE3MzM3NmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0aW9u
LmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBzaXplKQorICAg
IDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2J1ZmZlcihzaXplKQoreworICAg
IC8vIFJlYWQgc3RhcnRzIGZyb20gMCB3aXRoIGxpbWl0IG9mIDAgYW5kIHJlYWRlciBzbGVlcGlu
Zy4KKyAgICBzaGFyZWRTZW5kZXJPZmZzZXQoKS5zdG9yZShTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX3Jl
bGF4ZWQpOworICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAgd2l0aCBhIGxpbWl0IG9mIHRoZSB3
aG9sZSBidWZmZXIuCisgICAgc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5zdG9yZSgwLCBzdGQ6Om1l
bW9yeV9vcmRlcl9yZWxheGVkKTsKK30KKwordm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpz
ZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUgPSBXVEZNb3ZlKHNlbWFwaG9yZSk7
CisjZW5kaWYKKyAgICB3YWtlVXBSZWNlaXZlcigpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENv
bm5lY3Rpb246Ondha2VVcFJlY2VpdmVyKCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBp
ZiAobV93YWtlVXBTZW1hcGhvcmUpCisgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLT5zaWduYWwo
KTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1DbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRmZmZlZWYzYTA5OTVhMWIxODJh
NWNmOWU4NjA3MDA5ODZiYzUxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDI0MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIklQ
Q1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlN0cmVh
bUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5o
IgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgorbmFtZXNwYWNlIElQQyB7CisKKy8vIEEgbWVzc2FnZSBzdHJlYW0gaXMgYSBoYWxmLWR1
cGxleCB0d28td2F5IHN0cmVhbSBvZiBtZXNzYWdlcyB0byBhIGJldHdlZW4gYSBzZW5kZXIgYW5k
IHRoZQorLy8gZGVzdGluYXRpb24gcmVjZWl2ZXIuCisvLworLy8gU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbiBjYW4gc2VuZCBtZXNzYWdlcyBhbmQgcmVjZWl2ZSBzeW5jaHJvbm91cyByZXBsaWVzCisv
LyB0aHJvdWdoIHRoaXMgbWVzc2FnZSBzdHJlYW0gb3IgdGhyb3VnaCBJUEM6OkNvbm5lY3Rpb24u
CisvLworLy8gVGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdpbGwgcmVjZWl2ZSBtZXNzYWdlcyBp
biBvcmRlciBfZm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdlc18uCisvLyBUaGUgd2hvbGUgSVBD
OjpDb25uZWN0aW9uIG1lc3NhZ2Ugb3JkZXIgaXMgbm90IHByZXNlcnZlZC4KKworY2xhc3MgU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbik7CitwdWJsaWM6CisgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bihDb25uZWN0aW9uJiwgc2l6ZV90IGJ1ZmZlclNpemUpOworCisgICAgU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciYgc3RyZWFtQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICB2b2lkIHNl
dFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmll
cjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpOworCisgICAgdXNpbmcgU2VuZFN5
bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPgorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNz
YWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9u
SUQsIFNlY29uZHMgdGltZW91dCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFNwYW4geworICAg
ICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXplX3Qgc2l6ZTsKKyAgICB9OworICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdlQWxp
Z25tZW50OworICAgIGJvb2wgdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIHRpbWVvdXQpOworICAgIHZvaWQgc2VuZFByb2Nl
c3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmKTsKKworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFj
cXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KTsKKyAgICBlbnVtIGNsYXNzIFdha2VVcFJlY2Vp
dmVyIDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAgICBZZXMKKyAgICB9OworICAgIFdha2VV
cFJlY2VpdmVyIHJlbGVhc2Uoc2l6ZV90IHdyaXRlU2l6ZSk7CisgICAgdm9pZCB3YWtlVXBSZWNl
aXZlcigpOworCisgICAgU3BhbiBhbGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGlt
aXQpOworICAgIHNpemVfdCBzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CisgICAg
c2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0OworCisgICAg
c2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
d3JhcE9mZnNldChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZz
ZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+
KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFy
ZWRTZW5kZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQorICAg
IEF0b21pYzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVy
LnJlY2VpdmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuZGF0YVNpemUoKTsgfQorCisgICAgQ29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwor
ICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgeyAwIH07CisKKyAgICBzaXplX3Qg
bV9zZW5kZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1ZmZl
cjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPcHRpb25hbDxTZW1hcGhvcmU+IG1fd2FrZVVw
U2VtYXBob3JlOworI2VuZGlmCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PgorYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJ
ZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBzdGF0
aWNfYXNzZXJ0KCFUOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CisgICAgTW9ub3Rvbmlj
VGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7Cisg
ICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKGRlc3RpbmF0aW9uSUQudG9VSW50
NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8g
c3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4pCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB7CisgICAgICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVy
IG1lc3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBzcGFuLT5kYXRhLCBzcGFuLT5zaXplIH07Cisg
ICAgICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpKSB7CisgICAg
ICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2UobWVzc2FnZUVuY29kZXIuc2l6ZSgp
KTsKKyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAgICAgICAgICAgICB3YWtlVXBSZWNlaXZlcigp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgc2VuZFBy
b2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOworICAgIGlmICghbV9jb25u
ZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRCwgSVBDOjpTZW5kT3B0
aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+CitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6
UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRz
IHRpbWVvdXQpCit7CisgICAgc3RhdGljX2Fzc2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5v
dCBzeW5jISIpOworICAgIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0ID0gTW9ub3Rvbmlj
VGltZTo6bm93KCkgKyB0aW1lb3V0OworICAgIGlmICghdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5l
ZWRlZChkZXN0aW5hdGlvbklELnRvVUludDY0KCksIGFic29sdXRlVGltZW91dCkpCisgICAgICAg
IHJldHVybiB7IH07CisgICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZShhYnNvbHV0ZVRpbWVvdXQp
OworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50IHNlbmQgdGhyb3VnaCBzdHJlYW0uCisgICAgLy8gRklYTUU6IGltcGxlbWVudCByZWNl
aXZlIHRocm91Z2ggc3RyZWFtLgorICAgIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFdU
Rk1vdmUoKnNwYW4pKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fY29ubmVjdGlvbi5zZW5kU3luYyhX
VEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgp
LCB0aW1lb3V0KTsKKyAgICBBU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1
bHQpOworfQorCitpbmxpbmUgYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVz
dGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1vbm90b25pY1RpbWUg
YWJzb2x1dGVUaW1lb3V0KQoreworICAgIGlmIChkZXN0aW5hdGlvbklEID09IG1fY3VycmVudERl
c3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGF1dG8gc3BhbiA9IHRyeUFj
cXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNvZGVyIHsgTWVzc2FnZU5hbWU6
OlNldFN0cmVhbURlc3RpbmF0aW9uSUQsIHNwYW4tPmRhdGEsIHNwYW4tPnNpemUgfTsKKyAgICBp
ZiAoIShlbmNvZGVyIDw8IGRlc3RpbmF0aW9uSUQpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyAvLyBTaXplIG9mIHRoZSBtaW5pbXVtIGFsbG9jYXRpb24gaXMgaW5jb3JyZWN0LiBM
aWtlbHkgYW4gYWxpZ25tZW50IGlzc3VlLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShlbmNvZGVyLnNpemUoKSk7CisgICAgaWYg
KHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBSZWNlaXZlcjo6
WWVzKQorICAgICAgICB3YWtlVXBSZWNlaXZlcigpOworICAgIG1fY3VycmVudERlc3RpbmF0aW9u
SUQgPSBkZXN0aW5hdGlvbklEOworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgdm9pZCBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShTcGFu
JiYgc3BhbikKK3sKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNvZGVyIHsgTWVzc2Fn
ZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UsIHNwYW4uZGF0YSwgc3Bhbi5zaXplIH07
CisgICAgLy8gTm90IG5vdGlmeWluZyBvbiB3YWtlIHVwIHNpbmNlIHRoZSBvdXQtb2Ytc3RyZWFt
IG1lc3NhZ2Ugd2lsbCBkbyB0aGF0LgorICAgICh2b2lkKSByZWxlYXNlKGVuY29kZXIuc2l6ZSgp
KTsKK30KK2lubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKE1vbm90b25pY1RpbWUgdGltZW91dCkKK3sK
KyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNpemVfdCBzZW5kZXJMaW1pdCA9IGNsYW1wZWRMaW1p
dChzaGFyZWRSZWNlaXZlck9mZnNldCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkp
OworICAgICAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fc2VuZGVyT2Zmc2V0LCBzZW5k
ZXJMaW1pdCk7CisgICAgICAgIGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkg
eworICAgICAgICAgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICAgICAg
ICAgIGlmIChub3cgPj0gdGltZW91dCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICAgICAgICAgIHNpemVfdCBvbGRTZW5kZXJMaW1pdCA9IHNoYXJlZFJl
Y2VpdmVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHNlbmRlckxpbWl0LCBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyOjpyZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGluZ1RhZywgc3RkOjpt
ZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgICAg
ICAgICBpZiAoc2VuZGVyTGltaXQgPT0gb2xkU2VuZGVyTGltaXQpCisgICAgICAgICAgICAgICAg
bV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLndhaXRGb3IodGltZW91dCAtIG5vdyk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzZW5kZXJMaW1pdCA9IGNsYW1wZWRM
aW1pdChvbGRTZW5kZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gYWxpZ25lZFNw
YW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKKyAgICAgICAgICAgIH0KKyNlbHNlCisg
ICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBp
ZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXplKQorICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworaW5saW5lIFN0
cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVyIFN0cmVhbUNsaWVudENvbm5lY3Rp
b246OnJlbGVhc2Uoc2l6ZV90IHNpemUpCit7CisgICAgc2l6ZSA9IHN0ZDo6bWF4KHNpemUsIG1p
bmltdW1NZXNzYWdlU2l6ZSk7CisgICAgc2l6ZV90IGV4cGVjdGVkUmVjZWl2ZXJMaW1pdCA9IG1f
c2VuZGVyT2Zmc2V0OworICAgIG1fc2VuZGVyT2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9mZnNl
dChtX3NlbmRlck9mZnNldCkgKyBzaXplKTsKKyAgICBBU1NFUlQobV9zZW5kZXJPZmZzZXQgPCBk
YXRhU2l6ZSgpKTsKKyAgICAvLyBJZiB0aGUgcmVjZWl2ZXIgd3JvdGUgb3ZlciB0aGUgc2VuZGVy
T2Zmc2V0IHdpdGggc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCB3ZSBrbm93IGl0
IGlzIHNsZWVwaW5nLgorICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zm
c2V0KCkuZXhjaGFuZ2UobV9zZW5kZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwp
OworICAgIGlmIChyZWNlaXZlckxpbWl0ICE9IGV4cGVjdGVkUmVjZWl2ZXJMaW1pdCkKKyAgICAg
ICAgcmV0dXJuIFdha2VVcFJlY2VpdmVyOjpZZXM7CisgICAgcmV0dXJuIFdha2VVcFJlY2VpdmVy
OjpObzsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4gU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6YWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQor
eworICAgIEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBBU1NFUlQobGltaXQgPCBk
YXRhU2l6ZSgpKTsKKyAgICBzaXplX3QgYWxpZ25lZCA9IGFsaWduT2Zmc2V0KG9mZnNldCk7Cisg
ICAgc2l6ZV90IHJlc3VsdFNpemUgPSAwOworICAgIGlmIChvZmZzZXQgPCBsaW1pdCkgeworICAg
ICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgJiYgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAg
ICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAg
ICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfQorICAgIHJldHVybiB7
IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30KKworaW5saW5lIHNpemVfdCBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sK
KyAgICBpZiAoIWxpbWl0KQorICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAtIDEgLSBvZmZzZXQ7
CisgICAgaWYgKGxpbWl0IDw9IG9mZnNldCkKKyAgICAgICAgcmV0dXJuIGRhdGFTaXplKCkgLSBv
ZmZzZXQ7CisgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0IC0gMTsKK30KKworaW5saW5lIHNpemVf
dCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExp
bWl0KSBjb25zdAoreworICAgIEFTU0VSVCh1bnRydXN0ZWRMaW1pdCA8IChkYXRhU2l6ZSgpIC0g
MSkpOworICAgIHJldHVybiBzdGQ6Om1pbih1bnRydXN0ZWRMaW1pdCwgZGF0YVNpemUoKSAtIDEp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NzlkYWJlNjg5YWQ0NjI4ZTUyZGJkMWJh
ZTBmNjFmZTZkZTE2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IEZmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNl
IElQQyB7CisKK3N0YXRpYyBSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IGNyZWF0ZU1lbW9yeShz
aXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvIG1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5Ojph
bGxvY2F0ZShzaXplKTsKKyAgICBpZiAoIW1lbW9yeSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICBy
ZXR1cm4gbWVtb3J5LnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoc2l6ZV90IG1lbW9yeVNpemUpCisgICAgOiBtX2Rh
dGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisgICAgLCBtX3NoYXJlZE1lbW9yeShj
cmVhdGVNZW1vcnkobWVtb3J5U2l6ZSkpCit7Cit9CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXI6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYmIG1lbW9y
eSwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNlbmRlcldhaXRTZW1hcGhvcmUpCisg
ICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisgICAgLCBtX3NoYXJl
ZE1lbW9yeShXVEZNb3ZlKG1lbW9yeSkpCisgICAgLCBtX3NlbmRlcldhaXRTZW1hcGhvcmUoV1RG
TW92ZShzZW5kZXJXYWl0U2VtYXBob3JlKSkKK3sKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3RoZXIp
ID0gZGVmYXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6flN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIoKSA9IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXImIFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3RoZXIpCit7
CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgIG1fZGF0YVNpemUgPSBvdGhlci5t
X2RhdGFTaXplOworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9IFdURk1vdmUob3RoZXIubV9zaGFy
ZWRNZW1vcnkpOworICAgICAgICBtX3NlbmRlcldhaXRTZW1hcGhvcmUgPSBXVEZNb3ZlKG90aGVy
Lm1fc2VuZGVyV2FpdFNlbWFwaG9yZSk7CisgICAgfQorICAgIHJldHVybiAqdGhpczsKK30KKwor
dm9pZCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKK3sKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAo
IW1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICBXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgbV9z
aGFyZWRNZW1vcnktPnNpemUoKSB9OworICAgIGVuY29kZXIgPDwgaXBjSGFuZGxlOworICAgIGVu
Y29kZXIgPDwgbV9zZW5kZXJXYWl0U2VtYXBob3JlOworfQorCitPcHRpb25hbDxTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyPiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBPcHRpb25hbDxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBp
cGNIYW5kbGU7CisgICAgZGVjb2RlciA+PiBpcGNIYW5kbGU7CisgICAgaWYgKCFpcGNIYW5kbGUp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8U2VtYXBob3JlPiBz
ZW1hcGhvcmU7CisgICAgZGVjb2RlciA+PiBzZW1hcGhvcmU7CisgICAgaWYgKCFzZW1hcGhvcmUp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgc2l6ZV90IGRhdGFTaXplID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUtPmRhdGFTaXplKTsKKyAgICBpZiAoZGF0YVNpemUg
PCBoZWFkZXJTaXplKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBz
aGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS0+aGFuZGxl
LCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKyAgICBpZiAo
c2hhcmVkTWVtb3J5LT5zaXplKCkgPCBkYXRhU2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7IHNoYXJlZE1lbW9yeS5y
ZWxlYXNlTm9uTnVsbCgpLCBkYXRhU2l6ZSwgIFdURk1vdmUoKnNlbWFwaG9yZSkgfTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk3N2YyY2IxZWMwNzkzNWZjYzgwYWQ1ZjI0NDRhZGVmZmIwMzk0
NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmgKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIK
KyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSVBDIHsKKworLy8gU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciBpcyBhIHNoYXJlZCAiYmktcGFydGl0ZSIgY2lyY3VsYXIgYnVmZmVyIHN1
cHBvcnRpbmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdlcywgc3BlY2lmaWMgZGF0YSBhbGln
bm1lbnQgd2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUuCisvLyBTdHJlYW1DbGllbnRDb25uZWN0
aW9uIGFuZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHVzZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
IHRvIGNvbW11bmljYXRlLgorLy8KKy8vIFRoZSAiYmktcGFydGl0ZSIgaXMgaGVyZSB0byBtZWFu
IHRoYXQgd3JpdGVzIGFuZCByZWFkcyB0byB0aGUgYnVmZmVyIG11c3QgYmUKKy8vIGNvbnRpbnVv
dXMuCisvLworLy8gVGhlIGNsaWVudCAoc2VuZGVyIG9yIHJlY2VpdmVyKSAiYWNxdWlyZXMiIHNv
bWUgYW1vdW50IG9mIGJ1ZmZlciBkYXRhLiBJZiBidWZmZXIgaGFzIG5vCisvLyBjYXBhY2l0eSwg
YWNxdWlyZSByZXR1cm5zIHdpdGggemVybyBjYXBhY2l0eS4gSWYgYnVmZmVyIGhhcyBhdCBsZWFz
dCBhY3F1aXJlZAorLy8gY2FwYWNpdHksIGFsbCB0aGUgYXZhaWxhYmxlIGNhcGFjaXR5IGlzIHJl
dHVybmVkLgorLy8KKy8vIFRoZSBjbGllbnQgInJlbGVhc2VzIiB0aGUgc29tZSBhbW91bnQgb2Yg
ZGF0YSwgYXQgbGVhc3QgdGhlIGFtb3VudCBhY3F1aXJlZCBidXQgcG90ZW50aWFsbHkKKy8vIG1v
cmUuCisvLworLy8gQm90aCBzZW5kZXIgYW5kIHJlY2VpdmVyIG11c3QgYWNxdWlyZSBzYW1lIGFt
b3VudCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhlIGFjcXVpcmUgc2VxdWVuY2UuCisv
LyBJZiBzZW5kZXIgYWNxdWlyZXMgWCBhbmQgdGhlbiBZIGFtb3VudCwgcmVjZWl2ZXIgbXVzdCBk
byB0aGUgc2FtZS4KKy8vCisvLyBUaGUgY2lyY3VsYXIgYnVmZmVyIGhhcyBmb2xsb3dpbmcgaW1w
bGVtZW50YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRoZSBkYXRhIGJldHdlZW4gW3NlbmRlck9m
ZnNldCwgcmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9mZnNldCA9PQorLy8gcmVjZWl2ZXJP
ZmZzZXQsIHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4KKy8vICogUmVjZWl2ZXIgb3ducyB0aGUg
ZGF0YSBiZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVyT2Zmc2V0Wy4KKy8vICogVGhlIGJ1
ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhlIGxhc3QgdmFsdWUg
aXMgcmVzZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsLiBG
SVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBpZgorLy8gaXQgd291
bGQgdXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9mIHRoZSBob2xlIGFzIHRoZSBpbmRpY2F0
b3IuIFRoaXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWduZWRTcGFuIGltcGxlbWVudGF0aW9uIHRv
IHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgorLy8gKiBBbGwgYXRvbWljIHZhcmlhYmxlIGxv
YWRzIGFyZSB1bnRydXN0ZWQsIHNvIHRoZXkncmUgY2xhbXBlZC4gVmlvbGF0aW9ucyBhcmUgbm90
IHJlcG9ydGVkLAorLy8gdGhvdWdoLgorLy8gU2VlIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLgor
Y2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6ZSk7CisgICAgU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOworICAgIH5TdHJlYW1Db25uZWN0
aW9uQnVmZmVyKCk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgb3BlcmF0b3I9KFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXImJik7CisKKyAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zm
c2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8PSBkYXRhU2l6ZSgpKTsK
KyAgICAgICAgaWYgKG9mZnNldCA9PSBkYXRhU2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90IG1l
c3NhZ2VBbGlnbm1lbnQ+CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQsIHNp
emVfdCBhY3F1aXJlU2l6ZSkgY29uc3QKKyAgICB7CisgICAgICAgIG9mZnNldCA9IHJvdW5kVXBU
b011bHRpcGxlT2Y8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0KTsKKyAgICAgICAgaWYgKG9mZnNl
dCArIGFjcXVpcmVTaXplID49IGRhdGFTaXplKCkpCisgICAgICAgICAgICBvZmZzZXQgPSAwOwor
ICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAgIEF0b21pYzxzaXplX3Q+JiBzZW5k
ZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZW5kZXJPZmZzZXQ7IH0KKyAgICBBdG9taWM8
c2l6ZV90PiYgcmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5yZWNlaXZlck9mZnNl
dDsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50
OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBoZWFkZXJTaXplKCk7IH0KKyAgICBzaXpl
X3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTaXplOyB9CisgICAgU2VtYXBob3Jl
JiBzZW5kZXJXYWl0U2VtYXBob3JlKCkgeyByZXR1cm4gbV9zZW5kZXJXYWl0U2VtYXBob3JlOyB9
CisKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6c2VuZGVyT2Zmc2V0IHdoZW4g
cmVjZWl2ZXIgaXMgc2xlZXBpbmcsIGUuZy4gbm90IHJ1bm5pbmcuCisgICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3Qgc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnID0gMSA8PCAzMTsK
KyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6cmVjZWl2ZXJPZmZzZXQgd2hlbiBz
ZW5kZXIgaXMgd2FpdGluZywgZS5nLiB3YWl0aW5nIG9uCisgICAgLy8gYSBzZW1hcGhvcmUuCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdU
YWcgPSAxIDw8IDMxOworCisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHN0
YXRpYyBPcHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwor
Citwcml2YXRlOgorICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVk
TWVtb3J5PiYmLCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgc2VuZGVyV2FpdFNlbWFw
aG9yZSk7CisKKyAgICBzdHJ1Y3QgSGVhZGVyIHsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gcmVj
ZWl2ZXJPZmZzZXQ7CisgICAgICAgIC8vIFBhZGRpbmcgc28gdGhhdCB0aGUgdmFyaWFibGVzIG1v
c3RseSBhY2Nlc3NlZCBieSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGRvIG5vdCBzaGFyZSBhIGNhY2hl
IGxpbmUuCisgICAgICAgIC8vIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBhdm9pZCBjYWNoZS1saW5l
IGluZHVjZWQgcmVkdWN0aW9uIG9mIHBhcmFsbGVsIGFjY2Vzcy4KKyAgICAgICAgdWludDY0X3Qg
Y2FjaGVMaW5lUGFkZGluZ1syXTsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gc2VuZGVyT2Zmc2V0
OworICAgIH07CisgICAgSGVhZGVyJiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnBy
ZXRfY2FzdDxIZWFkZXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKTsgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IGhlYWRlclNpemUoKSB7IHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9m
PHNpemVvZihzdGQ6Om1heF9hbGlnbl90KT4oc2l6ZW9mKEhlYWRlcikpOyB9CisKKyAgICBzaXpl
X3QgbV9kYXRhU2l6ZSB7IDAgfTsKKyAgICBSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IG1fc2hh
cmVkTWVtb3J5OworICAgIFNlbWFwaG9yZSBtX3NlbmRlcldhaXRTZW1hcGhvcmU7Cit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9u
RW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVu
Y29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iOTIzMmRlY2Y2Yzc5M2E0NTc3MTY4ZTk3ZWZiNTFhYWZiMzJm
ZGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q29ubmVjdGlvbkVuY29kZXIuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiTWVz
c2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2Ug
SVBDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjsKKworLy8gSVBDIGVuY29kZXIgd2hpY2g6CisvLyAgLSBFbmNvZGVzIHRvIGEgY2FsbGVyIGJ1
ZmZlciB3aXRoIGZpeGVkIHNpemUsIGRvZXMgbm90IHJlc2l6ZSwgc3RvcHMgd2hlbiBzaXplIHJ1
bnMgb3V0CisvLyAgLSBEb2VzIG5vdCBpbml0aWFsaXplIGFsaWdubWVudCBnYXBzCisvLworY2xh
c3MgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZmluYWwgeworcHVibGljOgorICAgIC8vIFN0cmVh
bSBtZXNzYWdlIG5lZWRzIHRvIGJlIGF0IGxlYXN0IHNpemUgb2YgU3RyZWFtU2V0RGVzdGluYXRp
b25JRCBtZXNzYWdlLgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdl
U2l6ZSA9IHNpemVvZihNZXNzYWdlTmFtZSkgKyBzaXplb2YodWludDY0X3QpOworICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBhbGlnbm9mKE1lc3NhZ2VOYW1l
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0gdHJ1ZTsKKworICAg
IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50OF90
KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1DYXBhY2l0eSkKKyAgICAgICAgOiBtX2J1ZmZlcihzdHJl
YW0pCisgICAgICAgICwgbV9idWZmZXJDYXBhY2l0eShzdHJlYW1DYXBhY2l0eSkKKyAgICB7Cisg
ICAgICAgICp0aGlzIDw8IG1lc3NhZ2VOYW1lOworICAgIH0KKworICAgIH5TdHJlYW1Db25uZWN0
aW9uRW5jb2RlcigpID0gZGVmYXVsdDsKKworICAgIGJvb2wgZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQorICAg
IHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclBvaW50ZXIgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fYnVmZmVyICsgbV9lbmNvZGVkU2l6ZSkpOworICAg
ICAgICBzaXplX3QgbmV3QnVmZmVyUG9pbnRlciA9IHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25t
ZW50LCBidWZmZXJQb2ludGVyKTsKKyAgICAgICAgaWYgKG5ld0J1ZmZlclBvaW50ZXIgPCBidWZm
ZXJQb2ludGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpbnRwdHJfdCBh
bGlnbmVkU2l6ZSA9IG1fZW5jb2RlZFNpemUgKyAobmV3QnVmZmVyUG9pbnRlciAtIGJ1ZmZlclBv
aW50ZXIpOworICAgICAgICBpZiAoIXJlc2VydmUoYWxpZ25lZFNpemUsIHNpemUpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1aW50OF90KiBidWZmZXIgPSBtX2J1ZmZlciAr
IGFsaWduZWRTaXplOworICAgICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKKyAgICAg
ICAgbV9lbmNvZGVkU2l6ZSA9IGFsaWduZWRTaXplICsgc2l6ZTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBTdHJlYW1Db25uZWN0
aW9uRW5jb2RlciYgb3BlcmF0b3I8PChUJiYgdCkKKyAgICB7CisgICAgICAgIEFyZ3VtZW50Q29k
ZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4sIHZvaWQ+
OjplbmNvZGUoKnRoaXMsIHN0ZDo6Zm9yd2FyZDxUPih0KSk7CisgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgQVNTRVJUKGlzVmFsaWQoKSk7
IHJldHVybiBtX2VuY29kZWRTaXplOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXJDYXBhY2l0eTsgfQorICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biBpc1ZhbGlkKCk7IH0KK3ByaXZhdGU6CisgICAgYm9vbCByZXNlcnZlKHNpemVfdCBhbGlnbmVk
U2l6ZSwgc2l6ZV90IGFkZGl0aW9uYWxTaXplKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHNpemUg
PSBhbGlnbmVkU2l6ZSArIGFkZGl0aW9uYWxTaXplOworICAgICAgICBpZiAoc2l6ZSA8IGFsaWdu
ZWRTaXplIHx8IHNpemUgPiBtX2J1ZmZlckNhcGFjaXR5KSB7CisgICAgICAgICAgICBtX2J1ZmZl
ckNhcGFjaXR5ID0gMDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgdWludDhfdCogbV9idWZmZXI7CisgICAgc2l6
ZV90IG1fYnVmZmVyQ2FwYWNpdHk7CisgICAgc2l6ZV90IG1fZW5jb2RlZFNpemUgeyAwIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTViNDQ5
NGI3NGZkOTI4NTgwM2U0ZWEyZWY0OGMxMTczNjU5ZDcxZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCkBA
IC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUoY29uc3Qg
Y2hhciogbmFtZSkKKyAgICA6IG1fbmFtZShuYW1lKQoreworfQorCit2b2lkIFN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU6OmRpc3BhdGNoKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9u
KQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX2Z1
bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOworICAgICAgICBBU1NFUlQoIW1fc2hv
dWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVkLgor
ICAgIH0KKyAgICB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7CisKK30KK3ZvaWQgU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZSYgY29ubmVjdGlvbikKK3sKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9s
b2NrKTsKKyAgICAgICAgbV9jb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbik7CisgICAgICAgIEFT
U0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5vdCBz
dXBwb3J0ZWQuCisgICAgfQorICAgIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQoKTsKK30KKwordm9p
ZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpyZW1vdmVTdHJlYW1Db25uZWN0aW9uKFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChtX3Byb2Nl
c3NpbmdUaHJlYWQpOworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAg
ICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFt
X3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBvcnRl
ZC4KKyAgICB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUuc2ln
bmFsKCk7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpzdG9w
KCkKK3sKKyAgICBtX3Nob3VsZFF1aXQgPSB0cnVlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IGlmICghbV9wcm9jZXNzaW5nVGhyZWFkKQorICAgICAgICByZXR1cm47CisgICAgbV93YWtlVXBT
ZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkLT53YWl0Rm9yQ29tcGxl
dGlvbigpOworICAgIG1fcHJvY2Vzc2luZ1RocmVhZCA9IG51bGxwdHI7CisjZW5kaWYKK30KKwor
dm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXAoKQoreworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25hbCgpOworI2VuZGlmCit9CisKK0lQ
Qzo6U2VtYXBob3JlJiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXBTZW1hcGhvcmUo
KQoreworICAgIHJldHVybiBtX3dha2VVcFNlbWFwaG9yZTsKK30KKwordm9pZCBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCkKK3sKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBpZiAobV9wcm9jZXNzaW5nVGhyZWFkKSB7CisgICAgICAgIG1fd2FrZVVw
U2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byB0
YXNrID0gW3RoaXNdKCkgbXV0YWJsZSB7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAg
IHByb2Nlc3NTdHJlYW1zKCk7CisgICAgICAgICAgICBpZiAobV9zaG91bGRRdWl0KSB7CisgICAg
ICAgICAgICAgICAgcHJvY2Vzc1N0cmVhbXMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBtX3dha2VVcFNlbWFwaG9yZS53YWl0KCk7CisgICAg
ICAgIH0KKyAgICB9OworICAgIG1fcHJvY2Vzc2luZ1RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKG1f
bmFtZSwgV1RGTW92ZSh0YXNrKSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MsIFRocmVhZDo6UU9TOjpV
c2VySW50ZXJhY3RpdmUpOworI2VuZGlmCit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6cHJvY2Vzc1N0cmVhbXMoKQoreworICAgIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdE1l
c3NhZ2VMaW1pdCA9IDEwMDA7CisgICAgYm9vbCBoYXNNb3JlVG9Qcm9jZXNzID0gZmFsc2U7Cisg
ICAgZG8geworICAgICAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IGZ1bmN0aW9uczsK
KyAgICAgICAgSGFzaFNldDxSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+PiBjb25uZWN0
aW9uczsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xv
Y2spOworICAgICAgICAgICAgZnVuY3Rpb25zLnN3YXAobV9mdW5jdGlvbnMpOworICAgICAgICAg
ICAgY29ubmVjdGlvbnMgPSBtX2Nvbm5lY3Rpb25zOworICAgICAgICB9CisgICAgICAgIGZvciAo
YXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbnMpCisgICAgICAgICAgICBXVEZNb3ZlKGZ1bmN0aW9u
KSgpOworCisgICAgICAgIGhhc01vcmVUb1Byb2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgZm9yIChh
dXRvJiBjb25uZWN0aW9uIDogY29ubmVjdGlvbnMpCisgICAgICAgICAgICBoYXNNb3JlVG9Qcm9j
ZXNzIHw9IGNvbm5lY3Rpb24tPmRpc3BhdGNoU3RyZWFtTWVzc2FnZXMoZGVmYXVsdE1lc3NhZ2VM
aW1pdCkgPT0gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6Okhhc01vcmVNZXNzYWdlczsKKyAg
ICB9IHdoaWxlIChoYXNNb3JlVG9Qcm9jZXNzKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFmN2JhM2YzNDAyOTBmMzAyNGM1Yjg5YTBlYTNmODMwMDljZDgyNmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3
dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNl
IElQQyB7CisKK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUgZmluYWwgOiBwdWJsaWMg
RnVuY3Rpb25EaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICBTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlKGNvbnN0IGNoYXIqKTsKKyAgICB+U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSgpID0gZGVm
YXVsdDsKKyAgICB2b2lkIGFkZFN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2UmKTsKKyAgICB2b2lkIHJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2UmKTsKKworICAgIHZvaWQgZGlzcGF0Y2goV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpOworCisgICAgdm9pZCB3YWtlVXAoKTsKKworICAg
IFNlbWFwaG9yZSYgd2FrZVVwU2VtYXBob3JlKCk7Citwcml2YXRlOgorICAgIHZvaWQgd2FrZVVw
UHJvY2Vzc2luZ1RocmVhZCgpOworICAgIHZvaWQgcHJvY2Vzc1N0cmVhbXMoKTsKKworICAgIGNv
bnN0IGNoYXIqIGNvbnN0IG1fbmFtZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBTZW1hcGhv
cmUgbV93YWtlVXBTZW1hcGhvcmU7CisjZW5kaWYKKyAgICBSZWZQdHI8VGhyZWFkPiBtX3Byb2Nl
c3NpbmdUaHJlYWQ7CisKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX3Nob3VsZFF1aXQgeyBmYWxz
ZSB9OworCisgICAgTG9jayBtX2xvY2s7CisgICAgRGVxdWU8RnVuY3Rpb248dm9pZCgpPj4gbV9m
dW5jdGlvbnM7CisgICAgSGFzaFNldDxSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+PiBt
X2Nvbm5lY3Rpb25zOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTE0YjVkNTE3ZjA2
NzYzMzgyZjUxM2ZlNTUzNzUxYjZjMWIzMzJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwx
MjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtLCBTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVj
dGlvbikKKyAgICAsIG1fd29ya1F1ZXVlKHdvcmtRdWV1ZSkKKyAgICAsIG1fYnVmZmVyKFdURk1v
dmUoc3RyZWFtKSkKK3sKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3Rh
cnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZl
UXVldWUoKnRoaXMsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgbV93b3JrUXVl
dWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnJl
bW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAg
ICBtX3dvcmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKK30KKwordm9pZCBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmIG1lc3NhZ2UpCit7CisgICAgeworICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOworICAgICAgICBt
X291dE9mU3RyZWFtTWVzc2FnZXMuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAgIH0KKyAg
ICBtX3dvcmtRdWV1ZS53YWtlVXAoKTsKK30KKworT3B0aW9uYWw8U3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OlNwYW4+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUoKQor
eworICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkubG9hZChz
dGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICBpZiAocmVjZWl2ZXJMaW1pdCA9PSBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3Bh
bihtX3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0KTsKKyAgICBpZiAocmVzdWx0LnNpemUg
PCBtaW5pbXVtTWVzc2FnZVNpemUpIHsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNl
bmRlck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhyZWNlaXZlckxpbWl0LCBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6
bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAg
ICBBU1NFUlQoIShyZWNlaXZlckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVy
T2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKSk7CisgICAgICAgIHJlY2VpdmVyTGltaXQgPSBj
bGFtcGVkTGltaXQocmVjZWl2ZXJMaW1pdCk7CisgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFu
KG1fcmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworICAgIH0KKworICAgIGlmIChyZXN1
bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6cmVsZWFzZShzaXplX3QgcmVhZFNpemUpCit7CisgICAgQVNTRVJUKHJlYWRTaXplKTsK
KyAgICByZWFkU2l6ZSA9IHN0ZDo6bWF4KHJlYWRTaXplLCBtaW5pbXVtTWVzc2FnZVNpemUpOwor
ICAgIHNpemVfdCByZWNlaXZlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9yZWNl
aXZlck9mZnNldCkgKyByZWFkU2l6ZSk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBzaXpl
X3Qgb2xkUmVjZWl2ZXJPZmZzZXQgPSBzaGFyZWRSZWNlaXZlck9mZnNldCgpLmV4Y2hhbmdlKHJl
Y2VpdmVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAvLyBJZiB0aGUg
c2VuZGVyIHdyb3RlIG92ZXIgcmVjZWl2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBzZW5kZXIgaXMg
d2FpdGluZy4KKyAgICBpZiAob2xkUmVjZWl2ZXJPZmZzZXQgIT0gbV9yZWNlaXZlck9mZnNldCkK
KyAgICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLnNpZ25hbCgpOworI2VuZGlm
CisKKyAgICBtX3JlY2VpdmVyT2Zmc2V0ID0gcmVjZWl2ZXJPZmZzZXQ7Cit9CisKK1N0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjphbGln
bmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgQVNTRVJUKG9mZnNl
dCA8IGRhdGFTaXplKCkpOworICAgIEFTU0VSVChsaW1pdCA8IGRhdGFTaXplKCkpOworICAgIHNp
emVfdCBhbGlnbmVkID0gYWxpZ25PZmZzZXQob2Zmc2V0KTsKKyAgICBzaXplX3QgcmVzdWx0U2l6
ZSA9IDA7CisgICAgaWYgKG9mZnNldCA8IGxpbWl0KSB7CisgICAgICAgIGlmIChvZmZzZXQgPD0g
YWxpZ25lZCAmJiBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6
ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfSBlbHNlIGlmIChvZmZzZXQgPiBsaW1pdCkgeworICAg
ICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgfHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAg
ICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0KKyAgICByZXR1cm4g
eyBkYXRhKCkgKyBhbGlnbmVkLCByZXN1bHRTaXplIH07Cit9CisKK3NpemVfdCBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7Cisg
ICAgaWYgKG9mZnNldCA8PSBsaW1pdCkKKyAgICAgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0Owor
ICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gb2Zmc2V0OworfQorCitzaXplX3QgU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0
Cit7CisgICAgQVNTRVJUKHVudHJ1c3RlZExpbWl0IDwgKGRhdGFTaXplKCkgLSAxKSk7CisgICAg
cmV0dXJuIHN0ZDo6bWluKHVudHJ1c3RlZExpbWl0LCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMjBiOTIxMzZmZjZiNmE5YjllMTk4ZGM5NzNiM2QzYTZlYTU2NjI4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMjgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2lu
Y2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJT
dHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29k
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOwor
CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4sIHByb3RlY3RlZCBNZXNzYWdlUmVj
ZWl2ZVF1ZXVlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZSk7CitwdWJsaWM6CisgICAgflN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKCkgb3Zl
cnJpZGUgPSBkZWZhdWx0OworCisgICAgQ29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJu
IG1fY29ubmVjdGlvbjsgfQorCisgICAgZW51bSBEaXNwYXRjaFJlc3VsdCA6IGJvb2wgeworICAg
ICAgICBIYXNOb01lc3NhZ2VzLAorICAgICAgICBIYXNNb3JlTWVzc2FnZXMKKyAgICB9OworICAg
IHZpcnR1YWwgRGlzcGF0Y2hSZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVz
c2FnZUxpbWl0KSA9IDA7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cisg
ICAgdm9pZCBzZW5kU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYm
Li4uKTsKKworcHJvdGVjdGVkOgorICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKElQQzo6
Q29ubmVjdGlvbiYsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZSYpOworCisgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIHZvaWQgc3RvcFJlY2VpdmluZ01l
c3NhZ2VzSW1wbChSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAg
Ly8gTWVzc2FnZVJlY2VpdmVRdWV1ZQorICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlv
biYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmKSBmaW5hbDsKKworICAgIHN0cnVjdCBTcGFu
IHsKKyAgICAgICAgdWludDhfdCogZGF0YTsKKyAgICAgICAgc2l6ZV90IHNpemU7CisgICAgfTsK
KyAgICBPcHRpb25hbDxTcGFuPiB0cnlBcXVpcmUoKTsKKworICAgIHZvaWQgcmVsZWFzZShzaXpl
X3QgcmVhZFNpemUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdl
U2l6ZSA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyOjptZXNzYWdlQWxpZ25tZW50OworICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90
IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAgICBzaXplX3Qgc2l6ZShzaXplX3Qgb2Zmc2V0LCBz
aXplX3QgbGltaXQpOworICAgIHNpemVfdCBjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExp
bWl0KSBjb25zdDsKKyAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci53cmFwT2Zmc2V0KG9mZnNldCk7IH0KKyAgICBzaXplX3QgYWxpZ25P
ZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8
bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9CisgICAgQXRv
bWljPHNpemVfdD4mIHNoYXJlZFNlbmRlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRl
ck9mZnNldCgpOyB9CisgICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkg
eyByZXR1cm4gbV9idWZmZXIucmVjZWl2ZXJPZmZzZXQoKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CisKKyAgICBSZWY8SVBDOjpD
b25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYg
bV93b3JrUXVldWU7CisKKyAgICBzaXplX3QgbV9yZWNlaXZlck9mZnNldCB7IDAgfTsKKyAgICBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyIG1fYnVmZmVyOworCisgICAgTG9jayBtX291dE9mU3RyZWFt
TWVzc2FnZXNMb2NrOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9vdXRP
ZlN0cmVhbU1lc3NhZ2VzOworCisgICAgZnJpZW5kIGNsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cit2b2lkIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzZW5kU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0
SUQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
IHNlbmRpbmcgdG8gYnVmZmVyLgorICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpF
bmNvZGVyPihJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElE
KTsKKyAgICAoKmVuY29kZXIgPDwgLi4uIDw8IGFyZ3VtZW50cyk7CisgICAgbV9jb25uZWN0aW9u
LT5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQorCisvLyBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uIHJlcHJlc2VudHMgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBzdHJlYW0gc2VuZGVy
IGFuZCByZWNlaXZlciwgYXMgdXNlZCBieSB0aGUgcmVjZWl2ZXIuCisvLyBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uOgorLy8gICogSG9sZHMgdGhlIG1lc3NhZ2VzIHRvd2FyZHMgdGhlIHJlY2VpdmVy
LgorLy8gICogU2VuZHMgdGhlIHJlcGxpZXMgYmFjayB0byB0aGUgc2VuZGVyIHZpYSB0aGUgc3Ry
ZWFtIG9yIG5vcm1hbCBDb25uZWN0aW9uIGZhbGxiYWNrLgorLy8KKy8vIFJlY2VpdmVyIHRlbXBs
YXRlIGNvbnRyYWN0OgorLy8gICB2b2lkIGRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKFN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlJiwgRGVjb2RlciYpOworLy8KK3RlbXBsYXRlPHR5cGVuYW1lIFJl
Y2VpdmVyPgorY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uPiBjcmVhdGUoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYg
d29ya1F1ZXVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbihjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1
ZSkpOworICAgIH0KKyAgICB+U3RyZWFtU2VydmVyQ29ubmVjdGlvbigpIGZpbmFsID0gZGVmYXVs
dDsKKworICAgIHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYsIFJlY2VpdmVy
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgLy8gU3RvcHMgdGhlIG1lc3NhZ2Ug
cmVjZWlwdC4gTm90ZTogYWxyZWFkeSByZWNlaXZlZCBtZXNzYWdlcyBtaWdodCBzdGlsbCBiZSBk
ZWxpdmVyZWQuCisgICAgdm9pZCBzdG9wUmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKworICAgIC8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlIG92ZXJyaWRlcy4KKyAgICBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2Vz
KHNpemVfdCBtZXNzYWdlTGltaXQpIGZpbmFsOworCitwcml2YXRlOgorICAgIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQor
ICAgICAgICA6IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKGNvbm5lY3Rpb24sIFdURk1vdmUo
c3RyZWFtQnVmZmVyKSwgd29ya1F1ZXVlKQorICAgIHsKKyAgICB9CisgICAgYm9vbCBwcm9jZXNz
U2V0U3RyZWFtRGVzdGluYXRpb25JRChEZWNvZGVyJiYsIFJlZlB0cjxSZWNlaXZlcj4mIGN1cnJl
bnRSZWNlaXZlcik7CisgICAgYm9vbCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmLCBS
ZWNlaXZlciYpOworICAgIGJvb2wgZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYm
KTsKKyAgICBMb2NrIG1fcmVjZWl2ZXJzTG9jazsKKyAgICB1c2luZyBSZWNlaXZlcnNNYXAgPSBI
YXNoTWFwPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50NjRfdD4sIFJlZjxSZWNlaXZlcj4+OworICAg
IFJlY2VpdmVyc01hcCBtX3JlY2VpdmVyczsKKworICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3Rp
bmF0aW9uSUQgPSAwOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Cit2b2lkIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJl
Y2VpdmVyJiByZWNlaXZlciwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCkKK3sKKyAgICB7CisgICAgICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIo
c3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7CisgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgQVNT
RVJUKCFtX3JlY2VpdmVycy5jb250YWlucyhrZXkpKTsKKyAgICAgICAgbV9yZWNlaXZlcnMuYWRk
KGtleSwgbWFrZVJlZihyZWNlaXZlcikpOworICAgIH0KKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklEKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Cit2b2lkIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJO
YW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChyZWNlaXZlck5h
bWUsIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGlj
X2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgIEFTU0VSVChtX3JlY2VpdmVy
cy5jb250YWlucyhrZXkpKTsKKyAgICBtX3JlY2VpdmVycy5yZW1vdmUoa2V5KTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+CitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6RGlz
cGF0Y2hSZXN1bHQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoU3Ry
ZWFtTWVzc2FnZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkKK3sKKyAgICBSZWZQdHI8UmVjZWl2ZXI+
IGN1cnJlbnRSZWNlaXZlcjsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IFdURjo6aXNWYWxpZChS
ZWNlaXZlck5hbWUpLgorICAgIHVpbnQ4X3QgY3VycmVudFJlY2VpdmVyTmFtZSA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KFJlY2VpdmVyTmFtZTo6SW52YWxpZCk7CisKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1lc3NhZ2VMaW1pdDsgKytpKSB7CisgICAgICAgIGF1dG8gc3BhbiA9IHRyeUFx
dWlyZSgpOworICAgICAgICBpZiAoIXNwYW4pCisgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hS
ZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgIElQQzo6RGVjb2RlciBkZWNvZGVyIHsgc3Bh
bi0+ZGF0YSwgc3Bhbi0+c2l6ZSwgbV9jdXJyZW50RGVzdGluYXRpb25JRCB9OworICAgICAgICBp
ZiAoIWRlY29kZXIuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3Bh
dGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAg
ICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6U2V0U3Ry
ZWFtRGVzdGluYXRpb25JRCkgeworICAgICAgICAgICAgaWYgKCFwcm9jZXNzU2V0U3RyZWFtRGVz
dGluYXRpb25JRChXVEZNb3ZlKGRlY29kZXIpLCBjdXJyZW50UmVjZWl2ZXIpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpIHsKKyAgICAgICAgICAg
IGlmICghZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnJlbnRSZWNlaXZlck5h
bWUgIT0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkp
KSB7CisgICAgICAgICAgICBjdXJyZW50UmVjZWl2ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgICAgICAgICAgY3VycmVudFJl
Y2VpdmVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNlaXZl
cikgeworICAgICAgICAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1
aW50OF90PihjdXJyZW50UmVjZWl2ZXJOYW1lKSwgbV9jdXJyZW50RGVzdGluYXRpb25JRCk7Cisg
ICAgICAgICAgICBpZiAoIVJlY2VpdmVyc01hcDo6aXNWYWxpZEtleShrZXkpKSB7CisgICAgICAg
ICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJl
c3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNl
aXZlciA9IG1fcmVjZWl2ZXJzLmdldChrZXkpOworICAgICAgICB9CisgICAgICAgIGlmICghY3Vy
cmVudFJlY2VpdmVyKSB7CisgICAgICAgICAgICAvLyBWYWxpZCBzY2VuYXJpbyBpcyB3aGVuIHJl
Y2VpdmVyIGhhcyBiZWVuIHJlbW92ZWQsIGJ1dCB0aGVyZSBhcmUgbWVzc2FnZXMgZm9yIGl0IGlu
IHRoZSBidWZmZXIuCisgICAgICAgICAgICAvLyBGSVhNRTogU2luY2Ugd2UgZG8gbm90IGhhdmUg
YSByZWNlaXZlciwgd2UgZG9uJ3Qga25vdyBob3cgdG8gZGVjb2RlIHRoZSBtZXNzYWdlLgorICAg
ICAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSBtdXN0IHRpbWVvdXQgZXZlcnkgcmVjZWl2ZXIgaW4g
dGhlIHN0cmVhbSBjb25uZWN0aW9uLgorICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIGFzc2Vy
dCB0aGF0IHRoZSByZWNlaXZlcnMgYXJlIGVtcHR5LCBhcyB3ZSBvbmx5IGhhdmUgdXAgdG8gb25l
IHJlY2VpdmVyIGluCisgICAgICAgICAgICAvLyBhIHN0cmVhbSBjb25uZWN0aW9uIHVudGlsIHBv
c3NpYmlsaXR5IG9mIHNraXBwaW5nIGlzIGltcGxlbWVudGVkIHByb3Blcmx5LgorICAgICAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICAgICAg
QVNTRVJUKG1fcmVjZWl2ZXJzLmlzRW1wdHkoKSk7CisgICAgICAgICAgICByZXR1cm4gRGlzcGF0
Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFkaXNwYXRj
aFN0cmVhbU1lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSwgKmN1cnJlbnRSZWNlaXZlcikpCisgICAg
ICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgfQorICAg
IHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTW9yZU1lc3NhZ2VzOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBSZWNlaXZlcj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46
OnByb2Nlc3NTZXRTdHJlYW1EZXN0aW5hdGlvbklEKERlY29kZXImJiBkZWNvZGVyLCBSZWZQdHI8
UmVjZWl2ZXI+JiBjdXJyZW50UmVjZWl2ZXIpCit7CisgICAgdWludDY0X3QgZGVzdGluYXRpb25J
RCA9IDA7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXN0aW5hdGlvbklEKSkgeworICAgICAg
ICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG1f
Y3VycmVudERlc3RpbmF0aW9uSUQgIT0gZGVzdGluYXRpb25JRCkgeworICAgICAgICBtX2N1cnJl
bnREZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKKyAgICAgICAgY3VycmVudFJlY2VpdmVy
ID0gbnVsbHB0cjsKKyAgICB9CisgICAgcmVsZWFzZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3Np
dGlvbigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2
ZXI+Citib29sIFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVh
bU1lc3NhZ2UoRGVjb2RlciYmIGRlY29kZXIsIFJlY2VpdmVyJiByZWNlaXZlcikKK3sKKyAgICBy
ZWNlaXZlci5kaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSgqdGhpcywgZGVjb2Rlcik7CisgICAgaWYg
KCFkZWNvZGVyLmlzVmFsaWQoKSkgeworICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgcmVsZWFzZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3Np
dGlvbigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2
ZXI+Citib29sIFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaE91dE9m
U3RyZWFtTWVzc2FnZShEZWNvZGVyJiYgZGVjb2RlcikKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gbWVzc2FnZTsKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jayk7CisgICAgICAgIGlmIChtX291dE9mU3RyZWFtTWVz
c2FnZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtZXNz
YWdlID0gbV9vdXRPZlN0cmVhbU1lc3NhZ2VzLnRha2VGaXJzdCgpOworICAgIH0KKyAgICBpZiAo
IW1lc3NhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxSZWNlaXZlcj4g
cmVjZWl2ZXI7CisgICAgeworICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIG1lc3NhZ2Ut
PmRlc3RpbmF0aW9uSUQoKSk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNl
aXZlcnNMb2NrKTsKKyAgICAgICAgcmVjZWl2ZXIgPSBtX3JlY2VpdmVycy5nZXQoa2V5KTsKKyAg
ICB9CisgICAgaWYgKHJlY2VpdmVyKSB7CisgICAgICAgIHJlY2VpdmVyLT5kaWRSZWNlaXZlU3Ry
ZWFtTWVzc2FnZSgqdGhpcywgKm1lc3NhZ2UpOworICAgICAgICBpZiAoIW1lc3NhZ2UtPmlzVmFs
aWQoKSkgeworICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZShtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvLyBJZiByZWNlaXZlciBkb2VzIG5vdCBleGlz
dCBpZiBpdCBoYXMgYmVlbiByZW1vdmVkIGJ1dCBtZXNzYWdlcyBhcmUgc3RpbGwgcGVuZGluZyB0
byBiZQorICAgIC8vIHByb2Nlc3NlZC4gSXQncyBvayB0byBza2lwIHN1Y2ggbWVzc2FnZXMuCisg
ICAgLy8gRklYTUU6IE5vdGUsIGNvcnJlc3BvbmRpbmcgc2tpcCBpcyBub3QgcG9zc2libGUgYXQg
dGhlIG1vbWVudCBmb3Igc3RyZWFtIG1lc3NhZ2VzLgorICAgIHJlbGVhc2UoZGVjb2Rlci5jdXJy
ZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oCmluZGV4IDc4NTRmYThmMTg2OGZi
OGU0NTYyMjg5ZmRkZjZmMjc5NWFmMmQ5MGQuLjgzZDk5ZjBjYmM4ZmUwNDgyMGI0NzgzYzljMDc2
YWI1N2EzZWFiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29h
L01hY2hQb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBv
cnQuaApAQCAtMjUsOSArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXIuaCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCi0jaW5jbHVkZSAiRGVjb2Rlci5o
IgotI2luY2x1ZGUgIkVuY29kZXIuaCIKIAogbmFtZXNwYWNlIElQQyB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVkMDhjNzM5NzcwMjIyZmM1YzRjNDZj
MzM0NzhhYzEwMzAxYTk5ODguLmFjOWU3ODJlMjE4MzE4MWJjOTg1MzVkNWRlODRmZTgwNWFmMDdl
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjQsOCAr
MjQsOSBAQCBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCByZQogaW1wb3J0IHN5cwogCitmcm9t
IG1vZGVsIGltcG9ydCBNZXNzYWdlUmVjZWl2ZXIsIE1lc3NhZ2UKIGZyb20gd2Via2l0IGltcG9y
dCBwYXJzZXIKLWZyb20gd2Via2l0Lm1vZGVsIGltcG9ydCBCVUlMVElOX0FUVFJJQlVURSwgQVNZ
TkNfQVRUUklCVVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEUsIE1BSU5USFJFQURDQUxMQkFDS19B
VFRSSUJVVEUKK2Zyb20gd2Via2l0Lm1vZGVsIGltcG9ydCBCVUlMVElOX0FUVFJJQlVURSwgQVNZ
TkNfQVRUUklCVVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEUsIE1BSU5USFJFQURDQUxMQkFDS19B
VFRSSUJVVEUsIFNUUkVBTV9BVFRSSUJVVEUsIFdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFCiAK
IF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01MywxMyArNTQsMTEgQEAgX2xpY2Vuc2Vf
aGVhZGVyID0gIiIiLyoKIAogIiIiCiAKLVdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFID0gJ1dh
bnRzQ29ubmVjdGlvbicKIFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFID0gJ1dhbnRz
RGlzcGF0Y2hNZXNzYWdlJwogV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUg
PSAnV2FudHNBc3luY0Rpc3BhdGNoTWVzc2FnZScKIExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUg
PSAnTGVnYWN5UmVjZWl2ZXInCiBOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUgPSAn
Tm90UmVmQ291bnRlZCcKIAotCiBkZWYgcmVjZWl2ZXJfZW51bWVyYXRvcl9vcmRlcl9rZXkocmVj
ZWl2ZXJfbmFtZSk6CiAgICAgaWYgcmVjZWl2ZXJfbmFtZSA9PSAnSVBDJzoKICAgICAgICAgcmV0
dXJuIDEKQEAgLTIxMSw3ICsyMTAsNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRp
b24ocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRs
ZXJDYWxsVGhyZWFkOjpNYWluVGhyZWFkO1xuJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQg
PSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkO1xu
JykKLSAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVU
RSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgIGlm
IChtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdl
Lmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSkgYW5kIG5vdCByZWNlaXZlci5oYXNfYXR0
cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpD
b25uZWN0aW9uJicpCiAgICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJzKToKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlIGNvbXBsZXRpb25faGFuZGxlcl9wYXJh
bWV0ZXJzKQpAQCAtMjU5LDYgKzI1OCw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3
YXJkX2RlY2xhcmVkKCk6CiAgICAgcmV0dXJuIGZyb3plbnNldChbCiAgICAgICAgICdJUEM6OkRh
dGFSZWZlcmVuY2UnLAogICAgICAgICAnSVBDOjpGb250UmVmZXJlbmNlJywKKyAgICAgICAgJ0lQ
Qzo6U2VtYXBob3JlJywKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAogICAgICAgICAnTWVkaWFU
aW1lJywKICAgICAgICAgJ1N0cmluZycsCkBAIC01NzEsMTAgKzU3MSwxNSBAQCBkZWYgc3luY19t
ZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgIGRpc3BhdGNoX2Z1
bmN0aW9uICs9ICdBc3luYycKIAogICAgIHdhbnRzX2Nvbm5lY3Rpb24gPSBtZXNzYWdlLmhhc19h
dHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUo
V0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUpCisgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9ICIs
ICpyZXBseUVuY29kZXIiCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRU
UklCVVRFKToKKyAgICAgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9ICcnCisgICAgZWxpZiBtZXNz
YWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19h
dHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9
ICcsIHJlcGx5RW5jb2RlcicKIAogICAgIHJlc3VsdCA9IFtdCiAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OiVzOjolczo6bmFtZSgp
KSB7XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCi0gICAgcmVzdWx0LmFwcGVu
ZCgnICAgICAgICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzZGVjb2RlciwgJXNyZXBseUVu
Y29kZXIsIHRoaXMsICYlcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1l
LCBtZXNzYWdlLm5hbWUsICdjb25uZWN0aW9uLCAnIGlmIHdhbnRzX2Nvbm5lY3Rpb24gZWxzZSAn
JywgJycgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3Ig
bWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSkgZWxzZSAnKicsIGhhbmRsZXJf
ZnVuY3Rpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpKSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAg
IElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXNkZWNvZGVyJXMsIHRoaXMsICYlcyk7XG4nICUg
KGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICdjb25uZWN0
aW9uLCAnIGlmIHdhbnRzX2Nvbm5lY3Rpb24gZWxzZSAnJywgbWF5YmVfcmVwbHlfZW5jb2Rlciwg
aGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQogICAgIHJlc3VsdC5hcHBlbmQo
JyAgICAgICAgcmV0dXJuO1xuJykKICAgICByZXN1bHQuYXBwZW5kKCcgICAgfVxuJykKICAgICBy
ZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9uKCcnLmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5jb25k
aXRpb24pCkBAIC04NzQsNyArODc5LDcgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihy
ZWNlaXZlcik6CiAgICAgICAgIGlmIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25lIGFu
ZCAobWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2Fn
ZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSkpOgogICAgICAgICAgICAgZGVsYXllZF9v
cl9hc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkKIAotICAgIGlmIGRlbGF5ZWRfb3JfYXN5
bmNfbWVzc2FnZXM6CisgICAgaWYgZGVsYXllZF9vcl9hc3luY19tZXNzYWdlcyBhbmQgbm90IHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ25hbWVzcGFjZSBNZXNzYWdlcyB7XG5cbm5hbWVzcGFjZSAlcyB7XG5cbicgJSByZWNl
aXZlci5uYW1lKQogCiAgICAgICAgIGZvciBtZXNzYWdlIGluIGRlbGF5ZWRfb3JfYXN5bmNfbWVz
c2FnZXM6CkBAIC05MjIsMjUgKzkyNyw0NCBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVy
KHJlY2VpdmVyKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFzeW5jX21lc3NhZ2VzLmFw
cGVuZChtZXNzYWdlKQogCi0gICAgaWYgYXN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0
dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFz
X2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6Ci0gICAg
ICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVy
Lm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVD
RUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkKKyAgICBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRl
KFNUUkVBTV9BVFRSSUJVVEUpOgorICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRS
ZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUpKQogICAg
ICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQotICAgICAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0
dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpOgorICAgICAgICBhc3Nl
cnQocmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJV
VEUpKQorICAgICAgICBhc3NlcnQobm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElT
UEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKQorICAgICAgICBhc3NlcnQobm90IHJlY2VpdmVyLmhh
c19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKQorCisg
ICAgICAgIHJlc3VsdCArPSBbYXN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3Nh
Z2UpIGZvciBtZXNzYWdlIGluIGFzeW5jX21lc3NhZ2VzXQorICAgICAgICByZXN1bHQgKz0gW3N5
bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIHN5
bmNfbWVzc2FnZXNdCisKKyAgICAgICAgaWYgKHJlY2VpdmVyLnN1cGVyY2xhc3MpOgorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcykpCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIp
O1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oY29ubmVj
dGlvbik7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpO1xuJykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKyAgICBlbGlmIGFzeW5j
X21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FH
RV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFU
Q0hfTUVTU0FHRV9BVFRSSUJVVEUpOgorICAgICAgICByZWNlaXZlX3ZhcmlhbnQgPSByZWNlaXZl
ci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVU
RSkgZWxzZSAnJworICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlJXNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlX3ZhcmlhbnQpKQorICAgICAgICByZXN1bHQu
YXBwZW5kKCd7XG4nKQorICAgICAgICBpZiBub3QgKHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9U
X1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNfYXR0cmlidXRl
KFNUUkVBTV9BVFRSSUJVVEUpKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBhdXRv
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTtcbicpCiAKICAgICAgICAgcmVzdWx0ICs9
IFthc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2Ug
aW4gYXN5bmNfbWVzc2FnZXNdCisKICAgICAgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShX
QU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0
ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KSlcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybjtcbicpCiAg
ICAgICAgIGlmIChyZWNlaXZlci5zdXBlcmNsYXNzKToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAgICAlczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7XG4nICUg
KHJlY2VpdmVyLnN1cGVyY2xhc3MpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVz
OjpkaWRSZWNlaXZlJXNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZl
ci5zdXBlcmNsYXNzLCByZWNlaXZlX3ZhcmlhbnQpKQogICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTtcbicpCiAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpO1xuJykKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCiAKLSAgICBpZiBzeW5jX21lc3NhZ2VzIG9yIHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgor
ICAgIGlmIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpIGFuZCAo
c3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01F
U1NBR0VfQVRUUklCVVRFKSk6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICAgICAg
cmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN5bmMlc01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2Vp
dmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklC
VVRFKSBlbHNlICcnKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CmluZGV4IDQ4ZDhl
MWI2MjdjYzMxYjE4ZmExYzUwZmFiZWVlZDk3MWJkMTViZTkuLmU4OWUxN2UxNDA3YjViNTY2YmMx
OTJjNDBhOTlhMjhkOGJmOGRjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlc191bml0dGVzdC5weQpAQCAtNDYsNiArNDYsOCBAQCBfdGVzdF9yZWNlaXZl
cl9uYW1lcyA9IFsKICAgICAnVGVzdFdpdGhJZk1lc3NhZ2UnLAogICAgICdUZXN0V2l0aFNlbWFw
aG9yZScsCiAgICAgJ1Rlc3RXaXRoSW1hZ2VEYXRhJywKKyAgICAnVGVzdFdpdGhTdHJlYW0nLAor
ICAgICdUZXN0V2l0aFN0cmVhbUJ1ZmZlcicKIF0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tb2RlbC5weQppbmRleCA0ODAwZmE0ZWZjYTk2NzhhODlhZmM3ZTQzNGYyNmIzNDZjZThjZjZj
Li41MDdlMDQyYTU3N2ZmOGEwMjMzNzJjM2E2MDdhYjEwOGE1ZmE5Njc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbW9kZWwucHkKQEAgLTI4LDYgKzI4LDggQEAgQlVJTFRJTl9BVFRSSUJV
VEUgPSAiQnVpbHRpbiIKIEFTWU5DX0FUVFJJQlVURSA9ICJBc3luYyIKIE1BSU5USFJFQURDQUxM
QkFDS19BVFRSSUJVVEUgPSAiTWFpblRocmVhZENhbGxiYWNrIgogU1lOQ0hST05PVVNfQVRUUklC
VVRFID0gJ1N5bmNocm9ub3VzJworU1RSRUFNX0FUVFJJQlVURSA9ICJTdHJlYW0iCitXQU5UU19D
T05ORUNUSU9OX0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24nCiAKIGNsYXNzIE1lc3NhZ2VS
ZWNlaXZlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdXBlcmNsYXNz
LCBhdHRyaWJ1dGVzLCBtZXNzYWdlcywgY29uZGl0aW9uKToKQEAgLTczLDcgKzc1LDkgQEAgaXBj
X3JlY2VpdmVyID0gTWVzc2FnZVJlY2VpdmVyKG5hbWU9IklQQyIsIHN1cGVyY2xhc3M9Tm9uZSwg
YXR0cmlidXRlcz1bQlVJTFRJTl8KICAgICBNZXNzYWdlKCdXcmFwcGVkQXN5bmNNZXNzYWdlRm9y
VGVzdGluZycsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEUsIFNZTkNIUk9O
T1VTX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdTeW5jTWVzc2Fn
ZVJlcGx5JywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlv
bj1Ob25lKSwKICAgICBNZXNzYWdlKCdJbml0aWFsaXplQ29ubmVjdGlvbicsIFtdLCBbXSwgYXR0
cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249IlBMQVRGT1JNKENPQ09BKSIp
LAotICAgIE1lc3NhZ2UoJ0xlZ2FjeVNlc3Npb25TdGF0ZScsIFtdLCBbXSwgYXR0cmlidXRlcz1b
QlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSkKKyAgICBNZXNzYWdlKCdMZWdhY3lT
ZXNzaW9uU3RhdGUnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29u
ZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2UoJ1NldFN0cmVhbURlc3RpbmF0aW9uSUQnLCBbXSwg
W10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAorICAg
IE1lc3NhZ2UoJ1Byb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UnLCBbXSwgW10sIGF0dHJpYnV0ZXM9
W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpCiBdLCBjb25kaXRpb249Tm9uZSkK
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2Vm
aWxlIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQppbmRleCAy
MWIzMGFlMjBmYTEwMzNmYTY2NGUwM2FkYmQ4ODA4NmE2YzcyYzQyLi5lMTk3YmQzYzI2N2FlNDEx
YTQ1MDBkMGZmNjkzOTg2MDNhNDUwODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvTWFrZWZpbGUKQEAgLTYsNiArNiw4IEBAIFRFU1RTID0gXAogICAgIFRlc3RXaXRo
SWZNZXNzYWdlIFwKICAgICBUZXN0V2l0aFNlbWFwaG9yZSBcCiAgICAgVGVzdFdpdGhJbWFnZURh
dGEgXAorCVRlc3RXaXRoU3RyZWFtIFwKKwlUZXN0V2l0aFN0cmVhbUJ1ZmZlciBcCiAjCiAKIGFs
bDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2Fn
ZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5h
bWVzLmNwcAppbmRleCA3ZDVhZmM5MThlNWIwNWI4ZjdhNWNkNjIzODUyYjVjMGUwYzE4YTAzLi4y
ZTdjYTE1ZTc0ZWJiZGE4NmM3OWY4ZmMwYjhmMzhiNGI1Zjc1ODk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCkBAIC0xMzQs
NiArMTM0LDEwIEBAIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lIG5hbWUpCiAg
ICAgICAgIHJldHVybiAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iOwogICAgIGNhc2UgTWVzc2FnZU5h
bWU6OkxlZ2FjeVNlc3Npb25TdGF0ZToKICAgICAgICAgcmV0dXJuICJMZWdhY3lTZXNzaW9uU3Rh
dGUiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2U6Cisg
ICAgICAgIHJldHVybiAiUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSI7CisgICAgY2FzZSBNZXNz
YWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRDoKKyAgICAgICAgcmV0dXJuICJTZXRTdHJl
YW1EZXN0aW5hdGlvbklEIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5
OgogICAgICAgICByZXR1cm4gIlN5bmNNZXNzYWdlUmVwbHkiOwogICAgIGNhc2UgTWVzc2FnZU5h
bWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CkBAIC0yMjQsNiAr
MjI4LDggQEAgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFt
ZSkKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOwog
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgogICAgIGNhc2UgTWVz
c2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpQcm9j
ZXNzT3V0T2ZTdHJlYW1NZXNzYWdlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlNldFN0cmVhbURl
c3RpbmF0aW9uSUQ6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseToKICAg
ICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SVBDOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRl
c3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CkBAIC00MDEsNiArNDA3LDEw
IEBAIGJvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogI2Vu
ZGlmCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Np
b25TdGF0ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQ
Qzo6TWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTZXRTdHJl
YW1EZXN0aW5hdGlvbklEKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAobWVzc2FnZU5h
bWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmggYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmluZGV4IGVmZWEyMzAyZDY4N2JlNGY1
MjI2OTBmNzhhM2M2NGY2MzZlMzFmZDguLmEyMmJkMWNmZDdmNzNiZTllYWIxY2JiYzBmZjBjNmVm
MDZhMDY0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWVzc2FnZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9N
ZXNzYWdlTmFtZXMuaApAQCAtOTMsNiArOTMsOCBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDog
dWludDE2X3QgewogICAgICwgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1RvdWNoRXZlbnQKICAgICAs
IEluaXRpYWxpemVDb25uZWN0aW9uCiAgICAgLCBMZWdhY3lTZXNzaW9uU3RhdGUKKyAgICAsIFBy
b2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UKKyAgICAsIFNldFN0cmVhbURlc3RpbmF0aW9uSUQKICAg
ICAsIFN5bmNNZXNzYWdlUmVwbHkKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNN
ZXNzYWdlUmVwbHkKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0
aENvbm5lY3Rpb25SZXBseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQw
ZjUyOGM2OWNkZWZkZGE5YzQ4Njc5MTM4YzYzOGI4YWMwY2IzMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2Fn
ZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjIFRlc3RzIFN0cmVhbSByZWNlaXZlciBhdHRyaWJ1dGUuCittZXNzYWdlcyAtPiBU
ZXN0V2l0aFN0cmVhbSBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CisgICAgdm9pZCBTZW5kU3RyaW5n
KFN0cmluZyB1cmwpCisgICAgdm9pZCBTZW5kU3RyaW5nU3luY2hyb25pemVkKFN0cmluZyB1cmwp
IC0+IChpbnQ2NF90IHJldHVybikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2Vz
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjExNzBhYzg5YTI1ZjAzOTIxOWZlNDE4MTA1YjJjMWQwNGFlMGM3ZTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUZXN0cyBTdHJlYW0gcmVjZWl2ZXIg
YXR0cmlidXRlLgorbWVzc2FnZXMgLT4gVGVzdFdpdGhTdHJlYW1CdWZmZXIgIHsKKyAgICB2b2lk
IFNlbmRTdHJlYW1CdWZmZXIoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhT
dHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzljOTI0MGE0ZWIxYWI1NTc0MDk2MDIyOTFkYzEyNzMxOTg3ZjA1NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJl
YW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZm
ZXIuaCIKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgi
CisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUgIlRlc3RXaXRo
U3RyZWFtQnVmZmVyTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgVGVz
dFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjpuYW1lKCkpIHsK
KyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZl
cjo6U2VuZFN0cmVhbUJ1ZmZlcj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtQnVmZmVy
OjpzZW5kU3RyZWFtQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVTRURf
UEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJN
ZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0
cmVhbUJ1ZmZlck1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEyNGViZGQyMDBmMzM5MDQ3N2RmYWY3
Y2Q4NTcxOTFiZDUzYjI4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oCkBAIC0wLDAgKzEs
NjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICog
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VO
YW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgi
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OworfQorCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVm
ZmVyIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtQnVm
ZmVyOworfQorCitjbGFzcyBTZW5kU3RyZWFtQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBB
cmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciY+
OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVz
c2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXI7IH0KKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRTdHJl
YW1CdWZmZXIoY29uc3QgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBzdHJlYW0pCisgICAg
ICAgIDogbV9hcmd1bWVudHMoc3RyZWFtKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1
bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVu
dHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyCit9IC8vIG5hbWVzcGFjZSBNZXNz
YWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg3ZmEyYWQ3ZDUwNjMwMGYzY2NiMzkwZjE5NzI1OWQ5MGU2OTNmMzMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRl
c3RXaXRoU3RyZWFtQnVmZmVyIHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbUJ1
ZmZlcgorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VS
ZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM5ODg1NWFkNTZlOTUxOTk3YzlkMmFiM2Y4ODgwOTRj
ODg5MjMyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisg
KiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdp
dGhTdHJlYW0uaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVj
b2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0
cmVhbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit2b2lkIFRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVz
c2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNz
YWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUoKSkgeworICAgICAgICBJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nPihkZWNv
ZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmcpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpuYW1lKCkpIHsKKyAgICAgICAgSVBD
OjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNo
cm9uaXplZD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtOjpzZW5kU3RyaW5nU3luY2hy
b25pemVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rl
cik7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTBiZmViYWIyMzcyYzFmNjYwNWM1NTg5NDU5MzhiZjFlNGU3YWFmYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhT
dHJlYW1NZXNzYWdlcy5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3Ry
ZWFtTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFt
IHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtOworfQor
CitjbGFzcyBTZW5kU3RyaW5nIHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6
OnR1cGxlPGNvbnN0IFN0cmluZyY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmc7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0
IFNlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJs
KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFNlbmRTdHJpbmdTeW5jaHJv
bml6ZWQgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3Qg
U3RyaW5nJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4g
SVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZ1N5bmNocm9uaXplZDsg
fQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBSZXBs
eSA9IHN0ZDo6dHVwbGU8aW50NjRfdCY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3Rk
Ojp0dXBsZTxpbnQ2NF90PjsKKyAgICBleHBsaWNpdCBTZW5kU3RyaW5nU3luY2hyb25pemVkKGNv
bnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAg
fQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMg
bV9hcmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbQorfSAvLyBu
YW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaCBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMmM1YTA3OGRlMDFlYzE0MzBmODk0ZjIwY2I5YzJmOTE1NWU3Y2FiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0
cmVhbU1lc3NhZ2VzUmVwbGllcy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBUZXN0V2l0
aFN0cmVhbSB7CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0KK30gLy8gbmFtZXNw
YWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBmOWJhNWRjNzgyNGIxZTViMDNlNTNmOThiN2E3
ZjhlNGRlZjIxYzY0Li40NTg5MjZmMjViZDZkNTE2MmE3NTljZTBjNzNmOGVhMWViMTdkNWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKQEAgLTE1MCw2ICsxNTAsMTAgQEAgUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNl
aXZlck1hcC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAgQG5v
LXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgQG5vLXVuaWZ5CiBQbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9y
bS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNl
LmNwcCBAbm8tdW5pZnkKIAogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3Bw
IEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmgKaW5kZXggYzMzMDc4MjViMjAwODZkZWQ0Yzg2YzY0ODhjZTVkZDU3ZWMwYzM1
OC4uODk1MjA4YzNiYzIyNmQ2ZmIxMjg2MWRhNDM3Y2RhMzgxZjQ4ZDYzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIK
ICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlcXVlc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcAppbmRleCAzMDFkMGVkODMwZGJlZDkwOGNiYjI3ODg2ZjA0YThmZWVhOWZkODll
Li4yM2FiMTBkNjNhNGY0YTNmZDIwY2VkNGQ3MzAxNzNmNDc1ZGM3ZjVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiRHJhd2lu
Z0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
SGFuZGxlTWVzc2FnZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwNjFhNjM3ZGI5
M2JiMGFmYzZkOWM2NTE2YzNkMDNlMjM1YjVjYzEuLmYwMDZlNTFhYjIzODMwODQ0MmUxNjQwZmY3
ZThjNjU2NGU3M2Y0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTMyOCw2ICsxMzI4LDE2IEBACiAJCTdCNDgzRjIwMjVDRERBOUMw
MDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2Fn
ZVJlY2VpdmVRdWV1ZS5oICovOyB9OwogCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0ODYgLyogTWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVR
dWV1ZU1hcC5jcHAgKi87IH07CiAJCTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdl
UmVjZWl2ZVF1ZXVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmgg
Ki87IH07CisJCTdCNzMxMjNBMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qjcz
MTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovOyB9Owor
CQk3QjczMTIzQjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIz
MjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi87IH07
CisJCTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMzI1
Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9OworCQk3Qjcz
MTIzRDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNDI1Q0M4NTI0
MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi87IH07CisJCTdCNzMxMjNF
MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNTI1Q0M4NTI0MDAz
QjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oICovOyB9OworCQk3QjczMTIzRjI1
Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNjI1Q0M4NTI0MDAzQjI3
OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi87IH07CisJCTdCNzMxMjQwMjVDQzg1
MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM3MjVDQzg1MjQwMDNCMjc5NiAv
KiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJN0I3MzEyNDEyNUNDODUyNTAw
M0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CisJCTdCNzMxMjQyMjVDQzg1MjUwMDNCMjc5NiAv
KiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyLmggKi87IH07CisJCTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3OSAvKiBTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QkFCMTEwRjI1REQwMkIyMDA4RkM0NzkgLyogU2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5
NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAg
LyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5
MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIg
LyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9u
YXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFC
QTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtNDU0MCw2
ICs0NTUwLDE1IEBACiAJCTdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3Nh
Z2VSZWNlaXZlUXVldWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4
M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzEyNUNDODUy
MzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I3MzEyMzMyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I3MzEyMzUyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNjI1Q0M4
NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzcyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NjI1NEFGREVCMDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTQ3LDYgKzQ1NjYsNyBAQAog
CQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNkQyNTUwMTA4QzAwNkVF
QjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBT
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0
YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC02OTg1LDEwICs3MDA1LDIwIEBACiAJCQkJMUEzRUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8q
IE1lc3NhZ2VSZWNlaXZlck1hcC5oICovLAogCQkJCTFBQUIwMzc3MTg1QTdDNkEwMEVERjUwMSAv
KiBNZXNzYWdlU2VuZGVyLmNwcCAqLywKIAkJCQkxQUFCMDM3ODE4NUE3QzZBMDBFREY1MDEgLyog
TWVzc2FnZVNlbmRlci5oICovLAorCQkJCTdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8sCiAJCQkJMkRDMTgwMDFEOTBEREQxNUZD
Njk5MUE5IC8qIFNoYXJlZEJ1ZmZlckNvcHkuY3BwICovLAogCQkJCTVDQzVEQjkxMjE0ODhFMTYw
MDZDQjhBOCAvKiBTaGFyZWRCdWZmZXJDb3B5LmggKi8sCiAJCQkJMkRDMTg1NUVEQkZCODUwQkEw
QjZEMDZEIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwICovLAogCQkJCTJEQzE4ODFB
Q0JDQUI1RDU3QzVDNkVGMCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggKi8sCisJCQkJ
N0I3MzEyMzYyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwICov
LAorCQkJCTdCNzMxMjMzMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9u
LmggKi8sCisJCQkJN0I3MzEyMzQyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIuY3BwICovLAorCQkJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyLmggKi8sCisJCQkJN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVh
bUNvbm5lY3Rpb25FbmNvZGVyLmggKi8sCisJCQkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8q
IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovLAorCQkJCTdCNzMxMjM1MjVDQzg1MjQw
MDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggKi8sCisJCQkJN0I3MzEyMzcy
NUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTdC
NzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi8sCiAJ
CQkJMUFFMDBENjkxODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5jcHAgKi8sCiAJ
CQkJMUFFMDBENkExODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oICovLAogCQkJ
KTsKQEAgLTEyMDE4LDYgKzEyMDQ4LDcgQEAKIAkJCQlCQzJEMDIxNzEyQUM0MUNCMDBFNzMyQTMg
LyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUI0
QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JBQjExMTAyNUREMDJCMzAwOEZDNDc5IC8q
IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0
RDU0RDA0MjFGMUQ3MkQwMDdFM0MzNiAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
UmVtb3RlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3QzMg
LyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY5MzFDMUMxOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMTIwNjcsNiArMTIwOTgsMTEgQEAK
IAkJCQk5MzZCMDU5ODIzMDM5MDk3MDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzNjhFRURGMjMwM0E5RUQwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdl
clNldE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjVGNEUwNjIzMEIyRTk1MDAzQ0VE
QjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdC
NzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QjczMTIzQTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyNDIyNUNDODUyNTAwM0IyNzk2IC8q
IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIzRTI1
Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0I3MzEyNDEyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTAwRDZDMTgzMjdDMTIwMDA4N0RENyAvKiBTdHJp
bmdSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5NkJEODVEMTUwMTlCQzMwMDcxRjQy
NCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTg2MjJCMzUx
NkMwMDhEMEU4QiAvKiBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJz
ICovLApAQCAtMTM4OTQsNiArMTM5MzAsMTAgQEAKIAkJCQk5M0Q2Qjc4MjI1NENDQ0Y0MDA1OERE
M0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUEzMzRERUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNjhFRURFMjMwM0E5MDIwMEJE
QjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk3QjczMTIzRjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIzRDI1Q0M4NTI1MDAzQjI3OTYgLyogU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIzQjI1Q0M4
NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk3QjczMTI0MDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MzIxMkI2QTcxMDBGNDkzRkQgLyogU3Ry
aW5nUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUxMjEyNkEyODIwMDZG
ODg3OCAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUy
MjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IGYyOWJlMDA2ZWI3
Yjk3NjRiNzgyZDkxNjI1YzgwMTYwZmY4ZjM2ZjMuLmIxOWJjMWUwYTAxOTA3ZjljZWRkNjBhNTY1
NzVmYWRmNWM5ZDg4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmNwcApAQCAtNDgsMTMgKzQ4LDE2IEBAIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcykpOwog
fQogCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjE7
CisKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQogICAgIDogUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCiAgICAgLCBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKCZn
cHVQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihncHVQcm9jZXNz
Q29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGRlZmF1bHRTdHJlYW1TaXplKQogewogICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7CiAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKLSAgICBjb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhp
Y3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
OworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIG1fc3RyZWFtQ29ubmVjdGlvbi5zdHJlYW1CdWZmZXIoKSksIDAsIElQQzo6U2Vu
ZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0K
IAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkoKQpAQCAtMTYzLDcgKzE2Niw3IEBAIEdDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6OmdldEVycm9yKCkKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Vycm9yV2hl
bkNvbnRleHRJc0xvc3QsIE5PX0VSUk9SKTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZhaWxhYmxl
RXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2Vt
YXBob3JlJiYgc2VtYXBob3JlLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcm
JiByZXF1ZXN0ZWRFeHRlbnNpb25zKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTE3Miw2ICsxNzUsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcmJiBhdmFpbGFibAog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVCghbV9kaWRJbml0aWFsaXplKTsKKyAg
ICBtX3N0cmVhbUNvbm5lY3Rpb24uc2V0V2FrZVVwU2VtYXBob3JlKFdURk1vdmUoc2VtYXBob3Jl
KSk7CiAgICAgbV9kaWRJbml0aWFsaXplID0gdHJ1ZTsKICAgICBpbml0aWFsaXplKGF2YWlsYWJs
ZUV4dGVuc2lvbnMsIHJlcXVlc3RlZEV4dGVuc2lvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaAppbmRleCA4MzFiNGIwYWIxMzdlNmFhZjgzNTk2ZTBiMGEwNzZk
ZjFlMDkxNzYxLi43ODk3ZjZjZmU4M2NlYzU1ZmZhMmY2M2E5NzRmYWE3ZjAxM2FhOTE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMjksMTAgKzI5LDExIEBA
CiAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNs
dWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAiU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlLmg+CkBAIC0zMzQsMTkgKzMzNSwxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBt
ZXNzYWdlKQogICAgIHsKLSAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdl
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgSVBDOjpTZW5kT3B0
aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi5zZW5kKFdU
Rk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFdBUk5fVU5V
U0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBt
ZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGNvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwg
bV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3Zl
KG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IGRlZmF1bHRTZW5kVGltZW91dCk7CiAgICAgfQogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KTsgfQogCiBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZv
aWQgd2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lv
bnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIHZvaWQgd2FzQ3JlYXRlZChi
b29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlJiYsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVu
c2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOwogICAgIHZvaWQgd2FzTG9zdCgp
OwogICAgIHZvaWQgd2FzQ2hhbmdlZCgpOwogCkBAIC0zNjAsOCArMzYwLDggQEAgcHJpdmF0ZToK
ICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBi
b29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CiAgICAgR0NHTGVudW0gbV9lcnJvcldoZW5D
b250ZXh0SXNMb3N0ID0gTk9fRVJST1I7Ci0KICAgICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gbV9z
dHJlYW1Db25uZWN0aW9uOwogfTsKIAogLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2lu
ZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2Vi
Z2wgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IGE3YzY0MTJhYzk0NmUyNThjZTAxMzhiYzQ3YmMzODYyMTk1MDIx
ZDcuLmY0M2VjMGEyZWFhMzg0ZTRlZGU4ZGQ0NDBkOWVmZTAyOGFjYjdiZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KQEAgLTIz
LDcgKzIzLDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAog
bWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVkIHsK
LSAgICB2b2lkIFdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcgYXZhaWxhYmxlRXh0
ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0NyZWF0
ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSBzdHJlYW1XYWtlVXBTZW1hcGhvcmUs
IFN0cmluZyBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25z
KQogICAgIHZvaWQgV2FzTG9zdCgpCiAgICAgdm9pZCBXYXNDaGFuZ2VkKCkKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCmluZGV4IDdhYWQ3ZGEyMDcwZGU4M2Qx
NGM3MWRkOTgyNDc0YWFmMTA2YTdkYjUuLmYxMzQxZGNkMjc2ZDBjMTAxZTQ0YmRkYTE3Y2U0MGI4
YTNjYjM2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ05ldHdvcmsuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENOZXR3b3JrLmgKaW5kZXggYmJlN2ZjMjZjZjMyMzQ2Njk1ZTYxZmQwMWQ2YTBiMjMy
ZGUwZDE4OC4uYTYxMWRhYmY0ZWJiNTZlN2E0MjU5NGRkN2JkM2JiMGM4MWE1YzgwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05l
dHdvcmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGli
V2ViUlRDTmV0d29yay5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiV2ViTUROU1JlZ2lzdGVyLmgiCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2EzNDA4OGYwZGZlMThmZTdiMTE0YWMxYjAzOGJk
NzhiMjRjMDMwZC4uNDBiNWU4NzRlMTBhYzIwMjVlOWY1NTNkYWJlZjY0NTVlYzg5NmRmNyAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIxLTAyLTA1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nlc3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9y
eSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQw
NjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
cmsgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgbWVzc2FnZSByZWNlaXZlciBhcyAiU3RyZWFtIiwK
KyAgICAgICAgYSBuZXcgdmFyaWFudCBvZiByZWNlaXZlci4KKworICAgICAgICAqIFNjcmlwdHMv
Z2VuZXJhdGUtZ3B1cC13ZWJnbDoKKwogMjAyMS0wMi0xNiAgQW5kcmVzIEdvbnphbGV6ICA8YW5k
cmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIG1ha2VKU0FycmF5IGluIGJvdGggQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudE1hYy9JT1MubW0uCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wK
aW5kZXggNTY4NWU5MDc1MzUzZmQxZDJjZWE5NDYyMDZiNTdlNDhiNDI2NjNmZC4uODM0NjI4MjM0
MDFjMTY4MzA3MjJhZWIzNTQ1ZWNmZWVmYjY0YTg4MyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbApAQCAtODksNyArODksNyBAQCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlID0gKAogICAg
IHRlbXBsYXRlX3ByZWFtYmxlCiAgICAgKyAiIiIjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoV0VCR0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJl
ZkNvdW50ZWQge3sKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNv
dW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3Qg
aGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXko
KSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDA2
ZTc0NzlhMmU2NTllM2E3ODMwNmQzMDRiZDIxOTNhMDIxZjY1MmUuLmFkYTVkYzg3MjQ0M2M3N2Fi
YTRkMjM4MGNmNjI4ZTRhMDY3NWViMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMi0x
NyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdM
IEdQVSBwcm9jZXNzIElQQyBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIGFzeW5jaHJvbm91
cyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5NjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM0MDY1MT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIGZldyB0ZXN0cyBhcyBu
b3QgdGltaW5nIG91dCBub3cgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm90IHNvIHNsb3cu
CisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTAyLTE2
ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtz
ZWxlY3RvcnNdIDpmb2N1cy12aXNpYmxlIHBhcnNpbmcgYW5kIGV4cGVyaW1lbnRhbCBmbGFnCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzYjkwYzJhYmFjMWFm
ZTM1ZGY4NjRhNGFiYjkzYWJiMDAyOTBmYWE0Li5mM2FmOTNjNTk2YzdkM2EwMWRkNzI5MWM5MDRi
ZDJkMDBlZjk4MGQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTM0LDcgKzM0LDcgQEAgZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyRC1tc2UtZmxpcFkt
dHJ1ZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELXZpZGVv
LWZsaXBZLWZhbHNlLmh0bWwgWyBUaW1lb3V0IF0KIGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdl
MkQtdmlkZW8tZmxpcFktdHJ1ZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2NhbnZhcy93ZWJnbC90
ZXh0dXJlLWFjdGl2ZS1iaW5kLmh0bWwgWyBGYWlsdXJlIF0KLWZhc3QvY2FudmFzL3dlYmdsL3Vu
aWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgVGltZW91dCBdCitmYXN0L2NhbnZhcy93ZWJnbC91
bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFNsb3cgXQogZmFzdC9jYW52YXMvd2ViZ2wvd2Vi
Z2xjb250ZXh0Y2hhbmdlZGV2ZW50Lmh0bWwgWyBUaW1lb3V0IF0KIAogZmFzdC9kb20vbmF2aWdh
dG9yLWRldGFjaGVkLW5vLWNyYXNoLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTIzMCw3ICsyMzAsNiBA
QCB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdp
dGgtY2FudmFzLmh0bWwgWyBGYWlsdXJlCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNp
b25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wv
MS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgt
Y2FudmFzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lv
bnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0KLXdl
YmdsLzEuMC4zL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tYW55LWRyYXctY2FsbHMuaHRtbCBbIFRp
bWVvdXQgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxs
cy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy9nbC1w
aXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0
dXJlcy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1yZ2I1NjUuaHRtbCBb
IEZhaWx1cmUgXQpAQCAtMjQ5LDcgKzI0OCw3IEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL3RleC1pbWFnZS13ZWJnbC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25m
b3JtYW5jZS90ZXh0dXJlcy90ZXhwYXJhbWV0ZXItdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJn
bC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLWFjdGl2ZS1iaW5kLTIuaHRtbCBb
IEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1hY3Rp
dmUtYmluZC5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS91bmlmb3Jt
cy91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFRpbWVvdXQgXQord2ViZ2wvMS4wLjMvY29u
Zm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBTbG93IF0KIHdl
YmdsLzIuMC4wL2NvbmZvcm1hbmNlL2NhbnZhcy9jYW52YXMtdGVzdC5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9jYW52YXMvZHJhdy1zdGF0aWMtd2ViZ2wtdG8tbXVs
dGlwbGUtY2FudmFzLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFu
Y2UvY2FudmFzL2RyYXctd2ViZ2wtdG8tY2FudmFzLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQpAQCAt
MjYxLDcgKzI2MCw2IEBAIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRl
eHR1cmUtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25m
b3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0aC1jYW52YXMuaHRt
bCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4
dHVyZS1oYWxmLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAv
Y29uZm9ybWFuY2UvcmVhZGluZy9yZWFkLXBpeGVscy10ZXN0Lmh0bWwgWyBGYWlsdXJlIF0KLXdl
YmdsLzIuMC4wL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tYW55LWRyYXctY2FsbHMuaHRtbCBbIFRp
bWVvdXQgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxs
cy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52
YXMvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8y
LjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRf
c2hvcnRfNV82XzUuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMjg3LDcgKzI4NSw3IEBAIHdlYmdsLzIu
MC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11bnNp
Z25lZF9zaG9ydF81XzZfCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9j
YW52YXMvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgWyBGYWlsdXJlIF0KIHdl
YmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiYS1y
Z2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWdu
ZWRfc2hvcnRfNV81XzVfMS5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8yLjAuMC9jb25mb3JtYW5j
ZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFRpbWVvdXQgXQord2ViZ2wv
Mi4wLjAvY29uZm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBT
bG93IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9yZWFkaW5nL3JlYWQtcGl4ZWxzLXBhY2st
cGFyYW1ldGVycy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvc3Rh
dGUvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8yLjAuMC9jb25m
b3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQu
aHRtbCBbIEZhaWx1cmUgXQo=
</data>
<flag name="commit-queue"
          id="439282"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420677</attachid>
            <date>2021-02-17 11:14:49 -0800</date>
            <delta_ts>2021-02-17 11:27:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210217211447.patch</filename>
            <type>text/plain</type>
            <size>163666</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjNDg4MWE0MDdiNmI0NjYz
N2U1MzM0MGMyZGEwZmE5ZjQ2MGJiNDEuLmNkNmM5N2RkZjZlNjY1YjU5NTczZjMzY2ZmMWVmNTcz
M2FlMDdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2Vz
IGFuZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJl
Y2VpdmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNl
aXZlZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAg
cHJvY2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVu
dGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hy
b25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQg
dGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhh
dmluZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAg
IGluIHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0
IGluIGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBv
bmUgMm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJl
IHdpbGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24K
KyAgICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFy
IHRocmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJv
cHRpbWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAg
cHJvY2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2Ug
dG8gaGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGlj
aXBhdGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8g
c2FtZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1p
emF0aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFz
IHBhcnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAg
IEluIEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sg
cXVldWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQg
d2lsbCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24g
cGVyIGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAg
ICBTZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRp
b24gd2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYg
dGhlIG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUg
aXQgdGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91
dCBvZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9u
IGFycml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAg
ICBtZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2ls
bCBzdG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxs
IGNvbnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4g
cHJvY2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0
cmVhbSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1l
c3NhZ2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMg
c2VuZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0g
Y29ubmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9y
ZS4gVGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlz
IHdhaXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6
CisgICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAg
cG9pbnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAg
IC0gV2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2gg
fjYwZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVl
VW5pbml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4g
dGhlIHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0
aW9ucyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1
ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpzZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVl
dWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBtdWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0
aGUgSVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmls
aXR5IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xp
ZW50LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6
CisgICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNv
bnN0cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZm
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAo
SVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNw
ZWNpZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFy
ZSB1bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRo
cm91Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAg
ICAgVGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBp
cyByZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2Fz
ZSB3aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRo
ZSBzdHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAg
ICAgICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2Fr
ZXVwIHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNl
bWFwaG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24u
IEFsbCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2
ZSB0aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhl
eSBoYXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVz
dGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rp
b246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dCBjb25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0
YSB0aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVN
ZW1vcnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAo
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0
aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZl
ci4KKyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90
aCB0aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4K
KyAgICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1
cCwgdGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFs
bCB0aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAi
aG9sZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBv
ZiAiYnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAg
ICAgIGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBj
b250YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAg
ICAgRm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBw
cm9jZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUg
b2YgdGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwg
c2xlZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3
aWxsIHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdp
bGwgd2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9m
ZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXpl
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
cyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9j
ZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1l
c3NhZ2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUg
bWVzc2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRo
ZSBidWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRo
YXQgdGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1h
bCBJUEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3Nh
Z2UgdW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdT
dHJlYW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFz
CisgICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxs
IG1lc3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1l
c3NhZ2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAg
ICAgIGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUg
c3RyZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJ
UEMgbWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNz
ZWQuCisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0
aW9uSUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJl
YW0gbWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAg
ICAgIHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJl
YW1EZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVk
LgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZm
ZXI6OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5
bmNocm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToK
KyAgICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0
IG9mIHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6
On5TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZSk6CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVs
ZCBzaW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0x
NiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgYnVpbGQgZml4IGFmdGVyIHIyNzI5MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkNTc3ZTQzNDk5ZjE4
MTQ3OTFjOGEwZWY3MWNiMzRhMDI0YTFmYWUyLi5kYjc3MjM4MTQ0Y2E4YTMwZmY2ZWFjOWY4MmY1
YzQ5ZGNkMjFiMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2Rl
ckFWRlByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogewogICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0o
KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAgICAgIHJldHVybiBJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zMjYsMjEgKzMyNiwxMSBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAotR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RGTW92
ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25uZWN0
KCk7Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUo
c3RyZWFtKSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWJiMGQwMDhmM2Q3MTI5MjE3YjhlOTZl
ZmExOWJkNTFmZmFmYTE2Ny4uZDAyZTk3ODc3NTdjZDZmYzQ1YTlmOTg5NmU1YjExODdmOTViN2Jl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNz
aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKIAogI2luY2x1ZGUgPFdl
YkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWlu
Z01hbmFnZXIuaD4KQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtMjA2LDIwICsyMDcsMTAg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9Owog
I2VuZGlmCiAKLSAgICBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7Ci0gICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOwot
ICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoKTsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBI
YXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKKyAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKICNp
ZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBI
YXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CiAgICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKICNl
bmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDMwZjVjMjk4ODYyMTRmOTEwNGYxYWZhMDgzNWIyMzhhMzZkYzZlZjEuLmY2MzBi
MWJhZmUwZDJjMmVjNDAwMzdkOWE3YTdjNzIzZDI1OTk5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5n
QmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQ
Qzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgIHZvaWQgUmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRl
cywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQogICAgIHZvaWQg
UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNlbmRpZgogICAgIHZvaWQgQ2xlYXJO
b3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA3OWIzNDU5NmZi
ZjJkMGRmYzk4MTg2NTFiZGNmZWI0YjBhMGM4NzVkLi5iZjk2ZWE0OTRhYTQzOTA5NmM1MjkyNWNl
OGQzZTE4NjRlOTZkOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTMxLDU1ICsz
MSw3OSBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBvbmUgZ2xvYmFsIFdlYkdMIHByb2Nl
c3NpbmcgaW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiBy
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZT4gaW5zdGFuY2UoIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsKKyAgICByZXR1cm4gaW5zdGFuY2Uu
Z2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmIHN0cmVhbSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgV1RGTW92ZShzdHJlYW0pKSk7CisgICAgaW5zdGFuY2UtPmluaXRpYWxpemUoV1RG
TW92ZShhdHRyaWJ1dGVzKSk7CisgICAgcmV0dXJuIGluc3RhbmNlOwogfQogI2VuZGlmCiAKLVJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTD4gY29udGV4dCkKLSAgICA6IG1fY29udGV4dChXVEZNb3ZlKGNvbnRleHQp
KQotICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKG1ha2VXZWFrUHRyKGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MpKQorUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IG1f
c3RyZWFtQ29ubmVjdGlvbihJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w+OjpjcmVhdGUoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9u
KCksIFdURk1vdmUoc3RyZWFtKSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVl
dWUoKSkpCiAgICAgLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcihncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkpCi0gICAgICAgIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKLSAgICBt
X2NvbnRleHQtPmFkZENsaWVudCgqdGhpcyk7Ci0gICAgU3RyaW5nIGV4dGVuc2lvbnMgPSBtX2Nv
bnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6RVhURU5TSU9OUyk7Ci0gICAgU3Ry
aW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lv
bnNHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZCh0cnVlLCBleHRlbnNpb25z
LCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpCiB7Ci0gICAgaWYgKGF1dG8qIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0KCkp
Ci0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VSZWNlaXZlck1hcCgp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgQVNTRVJUKCFtX3N0cmVhbUNvbm5lY3Rpb24pOworICAgIEFTU0VSVCgh
bV9jb250ZXh0KTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6aW5pdGlhbGl6
ZShHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQoreworICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1X
b3JrUXVldWUoKS5kaXNwYXRjaChbYXR0cmlidXRlcyA9IFdURk1vdmUoYXR0cmlidXRlcyksIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvdGVj
dGVkVGhpcy0+d29ya1F1ZXVlSW5pdGlhbGl6ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICB9
KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMs
IE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAotR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoKSBjb25zdAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6c3Rv
cExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+JiYgcmVmRnJvbUNv
bm5lY3Rpb24pCiB7Ci0gICAgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQo
KTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKKyAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShyZWZGcm9tQ29ubmVjdGlvbildKCkg
eworICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVVbmluaXRpYWxpemUoKTsKKyAgICB9
KTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
d29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
ID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICByZXR1cm4gJmdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKLSAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV1RGTW92ZShhdHRyaWJ1dGVzKSk7
CisgICAgaWYgKG1fY29udGV4dCkgeworICAgICAgICBtX2NvbnRleHQtPmFkZENsaWVudCgqdGhp
cyk7CisgICAgICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3Jh
cGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgICAgICBTdHJpbmcgcmVxdWVzdGFibGVF
eHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoRXh0ZW5zaW9uc0dMOjpSRVFVRVNUQUJM
RV9FWFRFTlNJT05TX0FOR0xFKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZCh0cnVlLCByZW1vdGVHcmFwaGljc0NvbnRleHRH
TFN0cmVhbVdvcmtRdWV1ZSgpLndha2VVcFNlbWFwaG9yZSgpLCBleHRlbnNpb25zLCByZXF1ZXN0
YWJsZUV4dGVuc2lvbnMpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChmYWxzZSwgSVBDOjpTZW1hcGhv
cmUgeyB9LCAiIiwgIiIpKTsKIH0KIAotdWludDY0X3QgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OndvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpCiB7Ci0gICAgcmV0dXJuIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7CisgICAgbV9jb250ZXh0ID0gbnVsbHB0
cjsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24gPSBudWxscHRyOwogfQogCiB2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpkaWRDb21wb3NpdGUoKQpAQCAtODgsNyArMTEyLDcgQEAgdm9pZCBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKIAogdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Zm9yY2VDb250ZXh0TG9zdCgpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzTG9zdCgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6V2FzTG9zdCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
cmVjeWNsZUNvbnRleHQoKQpAQCAtOTgsNyArMTIyLDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6cmVjeWNsZUNvbnRleHQoKQogCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDaGFuZ2VkKCksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5OjpXYXNDaGFuZ2VkKCkpOwogfQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpyZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaAppbmRleCAwMDE1OWFjOGI1ODZhOGI2MmEzZGRhM2E1NzAwNGU4ODNlMTU2
ZDA4Li41MmU0NzY5MTBhNGVhZDAwMzljZTBjMWFhNTVlNGY0NDZhMDQ5NTY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaApAQCAtMjgsMTAgKzI4LDkgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShXRUJHTCkKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgotCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRXh0ZW5zaW9uc0dMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
QEAgLTQ5LDMxICs0OCwyMSBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKLQogLy8gR1BVIHByb2Nl
c3Mgc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdy
YXBoaWNzQ29udGV4dEdMIGNhbGxzCiAvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0
R0wgY2FsbHMgYmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgogLy8gVGhlIGltcGxlbWVu
dGF0aW9uIGlzIGxhcmdlbHkgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1ncHVwLXdlYmdsLgotY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKLSAgICA6IHB1
YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIKLSAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKLSAgICAsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCB7Citj
bGFzcyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4sIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0w6OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+
IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpIG92
ZXJyaWRlOworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w+JiYgcmVmRnJvbUNvbm5lY3Rpb24pOwogCi0gICAgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0OworICAgIC8vIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gdGVtcGxhdGUg
Y29udHJhY3QgaW1wbGVtZW50YXRpb24uCisgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2Fn
ZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVyJik7CiAKIHBy
b3RlY3RlZDoKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w+KTsKLQotICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCi0gICAgSVBD
OjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwotICAg
IHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7Ci0KLSAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciBvdmVycmlkZXMuCi0gICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2b2lk
IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBz
dGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICB2b2lkIGluaXRp
YWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpOwogCiAgICAgLy8g
R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMuCiAgICAgdm9pZCBkaWRDb21wb3Np
dGUoKSBmaW5hbDsKQEAgLTk1LDggKzg0LDE0IEBAIHByb3RlY3RlZDoKIAogI2luY2x1ZGUgIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAogCi0g
ICAgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7Ci0gICAg
V2Vha1B0cjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CisgICAgdm9pZCB3b3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1Xb3JrUXVldWVJ
bml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKSB7IH07Cisg
ICAgdm9pZCB3b3JrUXVldWVVbmluaXRpYWxpemUoKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkgY29uc3QgeyByZXR1cm4gbV9zdHJlYW1Db25u
ZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2dyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7IH0KKworICAgIFJlZlB0cjxJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PiBtX3N0cmVhbUNvbm5lY3Rpb247CisgICAg
UmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBtX2NvbnRleHQ7CiAgICAg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCmluZGV4IDdh
MTkyNWRiYjI3YWJmM2QzMDM0Y2I3ZmNiMzhhM2YzOTNlM2RjZmEuLjQ3MDJjNjRmNzVlNDc2Y2Zm
MWExMDAwNTA3NTUwOTZiZGNlNzg5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIC8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMIE5vdFJlZkNvdW50ZWQgeworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wg
Tm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBp
bnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIFByZXBhcmVGb3JE
aXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCA4ZTJkMWZjNjUxODYyODM5NWU5
NzQxYzQ0ZTdhYzg1MWIwOGVmNjI3Li5jNGU0MTEyNjE5NWIzNTI5OGFlYWYyZmNhZWYyMGFkZmI0
MzFkMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCkBAIC0zOSwxMCAr
MzksMTEgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCwgcHJpdmF0ZSBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiB7CiBwdWJsaWM6Ci0gICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyKTsKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YSgpIGZpbmFsID0gZGVmYXVsdDsKIAogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG92
ZXJyaWRlcy4KKyAgICB2b2lkIHBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJikgZmluYWw7CiAgICAgdm9pZCBwcmVwYXJlRm9y
RGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikg
ZmluYWw7CiAKICAgICAvLyBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbiBvdmVy
cmlkZXMuCkBAIC01NiwxNiArNTcsMjMgQEAgcHJpdmF0ZToKIAogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVh
dGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQor
UmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3Jl
YXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKIHsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMPihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShh
dHRyaWJ1dGVzLCBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIpKTsKKyAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgV1RGTW92ZShzdHJlYW0pKSk7CisgICAgaW5zdGFuY2UtPmluaXRp
YWxpemUoV1RGTW92ZShhdHRyaWJ1dGVzKSk7CisgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCi1S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChhdHRy
aWJ1dGVzLCBjb25uZWN0aW9uLCBpZGVudGlmaWVyLCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
Y3JlYXRlRm9yR1BVUHJvY2VzcyhhdHRyaWJ1dGVzLCB0aGlzKSkKK1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiYgc3RyZWFtKQorICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBXVEZNb3Zl
KHN0cmVhbSkpCiB7CiB9CiAKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxh
dGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmIGF0dHJpYnV0ZXMpCit7CisgICAgbV9jb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoV1RGTW92ZShhdHRyaWJ1dGVzKSwgdGhpcyk7Cit9
CisKIEdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluOjpCdWZmZXIgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYTo6cmVjeWNsZUJ1ZmZlcigpCiB7CiAgICAgcmV0dXJuIFdURk1v
dmUobV9kaXNwbGF5QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCAyYzc2MjUx
ODZhZWUxNWQ3NzJiNzY0YmRkNTU5ZjBhMWMyNzBiZDQxLi42MjEyZWEwNGU5ZDhlOGUwYzE4NmUx
MTJhMGIzODA3NGM1YjE0ODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC04Myw3ICs4
Myw3IEBAIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCkK
ICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3JlbW90ZVJlc291cmNlQ2FjaGUgPSBXVEZNb3Zl
KG1fcmVtb3RlUmVzb3VyY2VDYWNoZSldIHsgfSk7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6ZGlzY29ubmVjdCgpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN0b3BM
aXN0ZW5pbmdGb3JJUEMoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCmluZGV4IGI3YWVlMjYyNzcwNWJiOWFjYzEwMTlkNzE1NWVmMjdlMTUz
ZDJiMjguLmE0YWE3YjQ3ODc1NWE5YmI1ZTI5M2ZkMWJjODI4Y2NkZmUyNDk0NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVm
PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYgcmVzdW1lRGlz
cGxheUxpc3RTZW1hcGhvcmUpOwogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlcmluZ0JhY2tlbmQo
KTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKIAogICAgIFJlbW90ZVJlc291cmNl
Q2FjaGUmIHJlbW90ZVJlc291cmNlQ2FjaGUoKSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNlQ2Fj
aGU7IH0KIApAQCAtNzgsOCArNzksNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE5leHRJdGVt
QnVmZmVyVG9SZWFkKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uKTsKIAotICAg
IHZvaWQgZGlzY29ubmVjdCgpOwotCiBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LCBJUEM6OlNlbWFwaG9yZSYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAppbmRleCA0OTcxNzFiNTY0MjY4
OTI4OTUyMTA2YmQ3ZWVhNTRiZWU5M2JlZTIzLi5iMGNmNzBmMDZlMTE4ZTAyMWQ4NjRkZWI5OGQ0
MTRlZmJhOWU3YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVT
RShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtSVENNb25pdG9yLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IDMyMDc2YWZkMDJh
ODk4YTFlMzlkZTI4M2UxMDJiODU5NDdmOGVkYzcuLjUzMzUwZjlmN2M4YzEyYmU2Mjc1OTk5Yzdl
YmZjM2M3ZTA5MWJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRl
ICJFbmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC03NSw2ICs3Niw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgewogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBUIHZhbHVlKQogICAgIHsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQpLCBhbGln
bm9mKFQpKTsKQEAgLTkxLDYgKzkzLDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19lbnVtX3Y8VD4+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPFQ+KFdURjo6ZW51bVRvVW5k
ZXJseWluZ1R5cGU8VD4odmFsdWUpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVycy5jcHAKaW5kZXggYjBhNDNkZTlkN2ExMzcyMTZhMTliZjdkMGJkNWUxOTEx
M2I1ZGE2OC4uYWVlODllNjI2OTZjNTYwZjBhMThiZmIxZDY3NjkxNjUwZTdmZjJhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTExMSw3ICsxMTIsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENvZGVy
PENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ1N0cmluZwogICAgIHJldHVybiB0
cnVlOwogfQogCi0KK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiB2b2lkIEFyZ3VtZW50Q29k
ZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewogICAgIC8vIFNwZWNpYWwgY2FzZSB0aGUgbnVsbCBzdHJpbmcuCkBAIC0xMzAsNiArMTMx
LDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgZWxzZQogICAgICAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcu
Y2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBhbGlnbm9mKFVDaGFyKSk7
CiB9Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxFbmNvZGVy
PihFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVy
PFN0cmluZz46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+CiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChE
ZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCAyMGViMTdhMGZkODI2MGQ0MGJlYzdmY2RhYWVh
MjNiYzVlODY1ZTA5Li5mODU2OTgwNzNkZDA0NWIyODE2ZTE2MTBjYTQ5OTZhNWQ0ZWU2YzI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTU1LDYg
KzU1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50Q29kZXIg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJyYXlSZWZlcmVu
Y2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50PjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQogICAgIHsKICAgICAgICAgaWYg
KCFFeHRlbnQpCkBAIC03NCw2ICs3NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBF
eHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVuCiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQs
IGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4+IHsKICAgICB1c2luZyBBcnJheVJlZmVyZW5j
ZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+Owor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2Up
CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJl
ZmVyZW5jZS5zaXplKCkpOwpAQCAtMjY2LDYgKzI2OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6cGFpcjxULCBVPj4gewogCiB0
ZW1wbGF0ZTxzaXplX3QgaW5kZXgsIHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1cGxl
RW5jb2RlciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4m
IHR1cGxlKQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxzaXplb2YuLi4oRWxl
bWVudHMpIC0gaW5kZXg+KHR1cGxlKTsKQEAgLTI3NSw2ICsyNzgsNyBAQCBzdHJ1Y3QgVHVwbGVF
bmNvZGVyIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+CiBzdHJ1Y3QgVHVwbGVF
bmNvZGVyPDAsIEVsZW1lbnRzLi4uPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4K
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVu
dHMuLi4+JikKICAgICB7CiAgICAgfQpAQCAtMzM4LDYgKzM0Miw3IEBAIHN0cnVjdCBUdXBsZURl
Y29kZXI8MD4gewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+IHN0cnVjdCBB
cmd1bWVudENvZGVyPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+PiB7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4mIHR1cGxlKQogICAgIHsKICAgICAgICAgVHVw
bGVFbmNvZGVyPHNpemVvZi4uLihFbGVtZW50cyksIEVsZW1lbnRzLi4uPjo6ZW5jb2RlKGVuY29k
ZXIsIHR1cGxlKTsKQEAgLTM3NCw2ICszNzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBl
LCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6S2V5VmFsdQog
dGVtcGxhdGU8Ym9vbCBmaXhlZFNpemVFbGVtZW50cywgdHlwZW5hbWUgVCwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4g
c3RydWN0IFZlY3RvckFyZ3VtZW50Q29kZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2Fw
YWNpdHk+IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyPGZhbHNlLCBULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4m
IHZlY3RvcikKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHZlY3Rvci5zaXplKCkpOwpAQCAtNDExLDYgKzQxNyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qg
bWluCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PiBzdHJ1Y3QgVmVjdG9y
QXJndW1lbnRDb2Rlcjx0cnVlLCBULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBt
aW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mIHZlY3RvcikKICAgICB7CiAgICAg
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZlY3Rvci5zaXplKCkpOwpAQCAt
NzUzLDYgKzc2MCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Q1N0cmluZz4g
ewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTdHJpbmc+IHsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRl
Y29kZShEZWNvZGVyJiwgU3RyaW5nJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gZGVj
b2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAK
aW5kZXggOGI3NDMxNGFjMDRhNTVhNDhiZDA5MzYyOWMzNjIyMDcxZTBmMmM1MC4uMWQyZWE0ODVh
OTk4YWUyNjQ0NmEzYWU2MDBlMDRmMzBjYThlMWQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVzLmgiCkBAIC05MzAsOCArOTMxLDEzIEBAIHZvaWQgQ29u
bmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogCiB2b2lkIENv
bm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lIG1l
c3NhZ2VOYW1lKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KKyAgICBpZiAo
IVJ1bkxvb3A6OmlzTWFpbigpKSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlTmFtZV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+aXNWYWxpZCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fY2xpZW50LmRpZFJlY2Vp
dmVJbnZhbGlkTWVzc2FnZShwcm90ZWN0ZWRUaGlzLCBtZXNzYWdlTmFtZSk7CisgICAgICAgIH0p
OworICAgIH0KICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggNDg1NTIwMTI0N2MyNWRmODU1MmM1
YTU0YTA0Njc3YjhkNzJiODJjYS4uZmU5Y2EzMTg2MDZmZGVkYzYxZDIxZDA3ZGYwZjhhYjFiZmU5
M2JkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzAsMTAg
KzMwLDkgQEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCi0j
aW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVN
YXAuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlIDxhdG9taWM+Cisj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlv
bi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBA
IC0zMTIsNiArMzExLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGRpc3BhdGNoTWVz
c2FnZVJlY2VpdmVyTWVzc2FnZShNZXNzYWdlUmVjZWl2ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4mJik7CisgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisgICAgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSk7CiBwcml2YXRl
OgogICAgIENvbm5lY3Rpb24oSWRlbnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50Jik7CiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoSWRlbnRpZmllcik7CkBAIC0zMzksNyArMzQwLDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2Rlcj4pOwogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKERlY29kZXImKTsKICAgICB2b2lkIGRp
c3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUpOwogICAgIHZvaWQgZGlkRmFpbFRvU2VuZFN5bmNN
ZXNzYWdlKCk7CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IDgwYTBmNzVjNzA1NzJiZjRjMjQ4NTI2
ZmVkMmZlZmIwOTdjZGM4ZjkuLjRkZTA1MDk4YzQ2MzJhZDQ1ZjRlODUzZjY3ZTllZTNlNzcxMzZk
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC05MCw2ICs5MCwx
NyBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZl
clNpemUsIENvbnN0cnVjdFdpdGhvdXRIZWFkZQogICAgICAgICBtYXJrSW52YWxpZCgpOwogfQog
CitEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNp
emUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCisgICAgOiBtX2J1ZmZlciB7IHN0cmVhbSB9Cisg
ICAgLCBtX2J1ZmZlclBvcyB7IG1fYnVmZmVyIH0KKyAgICAsIG1fYnVmZmVyRW5kIHsgbV9idWZm
ZXIgKyBzdHJlYW1TaXplIH0KKyAgICAsIG1fYnVmZmVyRGVhbGxvY2F0b3IoW10gKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpIHsgfSkKKyAgICAsIG1fZGVzdGluYXRpb25JRChkZXN0aW5hdGlvbklE
KQoreworICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZU5hbWUpKQorICAgICAgICByZXR1cm47Cit9
CisKIERlY29kZXI6On5EZWNvZGVyKCkKIHsKICAgICBBU1NFUlQobV9idWZmZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IDY2OTg1YmMzODdkNzQzOTEzNzAxYjExN2I5
MTgwMGI5YTI3NzFhYjguLmIzYzZhYzhhMmQ1YWNiYTJjMjE1MjhkZmViMThjNjQxNWNlZGQyMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAgLTUxLDYgKzUxLDcgQEAgY2xh
c3MgRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
PiBjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAo
KmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFj
aG1lbnQ+JiYpOwogICAgIGV4cGxpY2l0IERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBz
aXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90
Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOworICAgIERlY29kZXIoY29uc3QgdWlu
dDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7
CiAgICAgfkRlY29kZXIoKTsKIAogICAgIERlY29kZXIoY29uc3QgRGVjb2RlciYpID0gZGVsZXRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IGVhOGFk
NDVjMDllYjY4MmUwZTg2MjNiOTM0ZDVlMGU5YzcwMjYyMmEuLjkyOTYzZTIxZTFkNzE3ZjY0YTgy
MTljNTI4OWJhZjA1M2YwOTk0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5k
bGVNZXNzYWdlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTE2NCw2ICsxNjUsMjggQEAgdm9pZCBoYW5kbGVN
ZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
RGVjb2RlciYgZGUKICAgICBjYWxsTWVtYmVyRnVuY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZSgq
YXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rpb24p
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4KK3Zv
aWQgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBj
b25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQorewor
ICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c3luY1JlcXVlc3RJRCkgfHwgIXN5bmNSZXF1ZXN0SUQpIHsKKyAgICAgICAgZGVjb2Rlci5tYXJr
SW52YWxpZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgT3B0aW9uYWw8dHlwZW5h
bWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7Cisg
ICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAgICAgICAg
ZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdHlw
ZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW3N5bmNSZXF1ZXN0SUQs
IGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFi
bGUgeworICAgICAgICBjb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KHN5bmNSZXF1ZXN0SUQsIGFy
Z3MuLi4pOworICAgIH07CisgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50
cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKK30KKwog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CiB2b2lkIGhhbmRs
ZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBD
KiBvYmplY3QsIE1GIGZ1bmN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUzYTA1NmEwMjAxYzJhZDBlNzQ5MGVjN2Q3ZmViYmRkNzcxMDk3YjEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3RpdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBJUEMgeworCisvLyBT
Y29wZWQgaG9sZGVyIGZvciBvYmplY3RzIHRoYXQgaGF2ZSBhY3RpdmUgbWVzc2FnZSByZWNlaXZl
IHF1ZXVlcy4gRW5mb3JjZXMgdGhhdAorLy8gb25jZSBob2xkZXIgc3RvcHMgaG9sZGluZyB0aGUg
b2JqZWN0LCB0aGUgbWVzc2FnZSBxdWV1ZSBzaG91bGQgYmUgcmVtb3ZlZC4KKy8vIFRoZSBjb252
ZW50aW9uIGlzIHRvIGNhbGwgc3RvcExpc3RlbmluZ0ZvcklQQygpIGZvciB0aGUgb2JqZWN0Lgor
Ly8gT3B0aW9uYWxseSB0aGUgb2JqZWN0IGNhbiBvYnRhaW4gdGhlIG93bmluZyByZWZlcmVuY2Ug
dGhhdCB3YXMgdXNlZCB0byBob2xkIHRoZSBvYmplY3QKKy8vIGluIG9yZGVyIHRvIGF0dGVtcHQg
dG8gYXZvaWQgbmVlZGxlc3MgZGVzdHJ1Y3Rpb24gb2YgdGhlIG9iamVjdCBpbiBob2xkZXIgdGhy
ZWFkLgorLy8gVGhpcyB1c2VmdWwgaW4gdGhlIGNhc2UgdGhlIHN0b3AgaW52b2tlcyBhIGNsZWFu
dXAgdGFzayBpbiB0aGUgbWVzc2FnZSBoYW5kbGVyCisvLyB0aHJlYWQuCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgSG9sZGVyVHlwZSA9IFJlZlB0cjxUPj4KK2NsYXNzIFNjb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeworcHVibGljOgorICAgIFNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUoKSA9IGRlZmF1bHQ7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+Cisg
ICAgU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZShVJiYgb2JqZWN0KQorICAgICAgICA6
IG1fb2JqZWN0KFdURk1vdmUob2JqZWN0KSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWUoU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSYmIG90
aGVyKQorICAgICAgICA6IG1fb2JqZWN0KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIG51
bGxwdHIpKQorICAgIHsKKyAgICB9CisgICAgU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZSYgb3BlcmF0b3I9KFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUmJiBvdGhlcikKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzICE9ICZvdGhlcikgeworICAgICAgICAgICAgcmVzZXQoKTsK
KyAgICAgICAgICAgIG1fb2JqZWN0ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX29iamVjdCwgbnVs
bHB0cik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICB+U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSgpCisgICAgeworICAgICAgICByZXNldCgpOwor
ICAgIH0KKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIGlmICghbV9vYmplY3QpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNl
KG1fb2JqZWN0KTsKKyAgICB9CisgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Qu
Z2V0KCk7IH0KK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICBzdGF0aWMg
YXV0byBzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZShVJiBvYmplY3QpIC0+IGRlY2x0eXBl
KG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhvYmplY3QucmVsZWFzZU5vbk51bGwoKSksIHZv
aWQoKSkKKyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhvYmplY3Qu
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAg
c3RhdGljIGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0KSAtPiBk
ZWNsdHlwZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMoV1RGTW92ZShvYmplY3QpKSwgdm9p
ZCgpKQorICAgIHsKKyAgICAgICAgb2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKFdURk1vdmUo
b2JqZWN0KSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgc3RhdGljIGF1
dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0KSAtPiBkZWNsdHlwZShv
YmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMoKSwgdm9pZCgpKQorICAgIHsKKyAgICAgICAgb2Jq
ZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKCk7CisgICAgICAgIG9iamVjdCA9IG51bGxwdHI7Cisg
ICAgfQorICAgIEhvbGRlclR5cGUgbV9vYmplY3Q7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZShzdGQ6OnVuaXF1ZV9wdHI8VD4mJikg
LT4gU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxULCBzdGQ6OnVuaXF1ZV9wdHI8VD4+
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZShSZWY8VD4mJikgLT4gU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxULCBSZWZQdHI8
VD4+OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNs
aWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0ZjVjZGYwMDhlNWE3ZjJkMmYxMDJhMjM1
YzNjMjI1MTczMzc2ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNsaWVudENvbm5lY3Rp
b24uaCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlN0cmVh
bUNsaWVudENvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IHNpemUpCisg
ICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fYnVmZmVyKHNpemUpCit7Cisg
ICAgLy8gUmVhZCBzdGFydHMgZnJvbSAwIHdpdGggbGltaXQgb2YgMCBhbmQgcmVhZGVyIHNsZWVw
aW5nLgorICAgIHNoYXJlZFNlbmRlck9mZnNldCgpLnN0b3JlKFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJf
cmVsYXhlZCk7CisgICAgLy8gV3JpdGUgc3RhcnRzIGZyb20gMCB3aXRoIGEgbGltaXQgb2YgdGhl
IHdob2xlIGJ1ZmZlci4KKyAgICBzaGFyZWRSZWNlaXZlck9mZnNldCgpLnN0b3JlKDAsIHN0ZDo6
bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246
OnNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKK3sKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBtX3dha2VVcFNlbWFwaG9yZSA9IFdURk1vdmUoc2VtYXBob3Jl
KTsKKyNlbmRpZgorICAgIHdha2VVcFJlY2VpdmVyKCk7Cit9CisKK3ZvaWQgU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IGlmIChtX3dha2VVcFNlbWFwaG9yZSkKKyAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUtPnNpZ25h
bCgpOworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGZmZmVlZjNhMDk5NWExYjE4
MmE1Y2Y5ZTg2MDcwMDk4NmJjNTFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMjQwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgor
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAi
SVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVy
LmgiCisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nLmg+CituYW1lc3BhY2UgSVBDIHsKKworLy8gQSBtZXNzYWdlIHN0cmVhbSBpcyBhIGhhbGYt
ZHVwbGV4IHR3by13YXkgc3RyZWFtIG9mIG1lc3NhZ2VzIHRvIGEgYmV0d2VlbiBhIHNlbmRlciBh
bmQgdGhlCisvLyBkZXN0aW5hdGlvbiByZWNlaXZlci4KKy8vCisvLyBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uIGNhbiBzZW5kIG1lc3NhZ2VzIGFuZCByZWNlaXZlIHN5bmNocm9ub3VzIHJlcGxpZXMK
Ky8vIHRocm91Z2ggdGhpcyBtZXNzYWdlIHN0cmVhbSBvciB0aHJvdWdoIElQQzo6Q29ubmVjdGlv
bi4KKy8vCisvLyBUaGUgZGVzdGluYXRpb24gcmVjZWl2ZXIgd2lsbCByZWNlaXZlIG1lc3NhZ2Vz
IGluIG9yZGVyIF9mb3IgdGhlIGRlc3RpbmF0aW9uIG1lc3NhZ2VzXy4KKy8vIFRoZSB3aG9sZSBJ
UEM6OkNvbm5lY3Rpb24gbWVzc2FnZSBvcmRlciBpcyBub3QgcHJlc2VydmVkLgorCitjbGFzcyBT
dHJlYW1DbGllbnRDb25uZWN0aW9uIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
dHJlYW1DbGllbnRDb25uZWN0aW9uKTsKK3B1YmxpYzoKKyAgICBTdHJlYW1DbGllbnRDb25uZWN0
aW9uKENvbm5lY3Rpb24mLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisKKyAgICBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiBzdHJlYW1CdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIHZvaWQg
c2V0V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlm
aWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKKyAgICB1c2luZyBTZW5k
U3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1l
c3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0KTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgU3BhbiB7Cisg
ICAgICAgIHVpbnQ4X3QqIGRhdGE7CisgICAgICAgIHNpemVfdCBzaXplOworICAgIH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VTaXplID0gU3RyZWFtQ29ubmVj
dGlvbkVuY29kZXI6Om1pbmltdW1NZXNzYWdlU2l6ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBtZXNzYWdlQWxpZ25tZW50ID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1lc3NhZ2VB
bGlnbm1lbnQ7CisgICAgYm9vbCB0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIE1vbm90b25pY1RpbWUgdGltZW91dCk7CisgICAgdm9pZCBzZW5kUHJv
Y2Vzc091dE9mU3RyZWFtTWVzc2FnZShTcGFuJiYpOworCisgICAgT3B0aW9uYWw8U3Bhbj4gdHJ5
QWNxdWlyZShNb25vdG9uaWNUaW1lIHRpbWVvdXQpOworICAgIGVudW0gY2xhc3MgV2FrZVVwUmVj
ZWl2ZXIgOiBib29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcworICAgIH07CisgICAgV2Fr
ZVVwUmVjZWl2ZXIgcmVsZWFzZShzaXplX3Qgd3JpdGVTaXplKTsKKyAgICB2b2lkIHdha2VVcFJl
Y2VpdmVyKCk7CisKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
aW1pdCk7CisgICAgc2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAg
ICBzaXplX3QgY2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7CisKKyAg
ICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci53cmFwT2Zmc2V0KG9mZnNldCk7IH0KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9m
ZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFsaWdubWVu
dD4ob2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9CisgICAgQXRvbWljPHNpemVfdD4mIHNo
YXJlZFNlbmRlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9mZnNldCgpOyB9Cisg
ICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZm
ZXIucmVjZWl2ZXJPZmZzZXQoKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CisKKyAgICBDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247
CisgICAgdWludDY0X3QgbV9jdXJyZW50RGVzdGluYXRpb25JRCB7IDAgfTsKKworICAgIHNpemVf
dCBtX3NlbmRlck9mZnNldCB7IDAgfTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIG1fYnVm
ZmVyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9wdGlvbmFsPFNlbWFwaG9yZT4gbV93YWtl
VXBTZW1hcGhvcmU7CisjZW5kaWYKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+Citib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIE9iamVj
dElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KQoreworICAgIHN0
YXRpY19hc3NlcnQoIVQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKKyAgICBNb25vdG9u
aWNUaW1lIGFic29sdXRlVGltZW91dCA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGltZW91dDsK
KyAgICBpZiAoIXRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQoZGVzdGluYXRpb25JRC50b1VJ
bnQ2NCgpLCBhYnNvbHV0ZVRpbWVvdXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0
byBzcGFuID0gdHJ5QWNxdWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGlmICghc3BhbikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHsKKyAgICAgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29k
ZXIgbWVzc2FnZUVuY29kZXIgeyBUOjpuYW1lKCksIHNwYW4tPmRhdGEsIHNwYW4tPnNpemUgfTsK
KyAgICAgICAgaWYgKG1lc3NhZ2VFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCkpIHsKKyAg
ICAgICAgICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShtZXNzYWdlRW5jb2Rlci5zaXpl
KCkpOworICAgICAgICAgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpXYWtlVXBSZWNlaXZlcjo6WWVzKQorICAgICAgICAgICAgICAgIHdha2VVcFJlY2VpdmVy
KCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzZW5k
UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpzcGFuKSk7CisgICAgaWYgKCFtX2Nv
bm5lY3Rpb24uc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklELCBJUEM6OlNlbmRP
cHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBU
OjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29u
ZHMgdGltZW91dCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KFQ6OmlzU3luYywgIk1lc3NhZ2UgaXMg
bm90IHN5bmMhIik7CisgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9u
aWNUaW1lOjpub3coKSArIHRpbWVvdXQ7CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElm
TmVlZGVkKGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKGFic29sdXRlVGltZW91
dCk7CisgICAgaWYgKCFzcGFuKQorICAgICAgICByZXR1cm4geyB9OworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQgc2VuZCB0aHJvdWdoIHN0cmVhbS4KKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHJl
Y2VpdmUgdGhyb3VnaCBzdHJlYW0uCisgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2Uo
V1RGTW92ZSgqc3BhbikpOworICAgIGF1dG8gcmVzdWx0ID0gbV9jb25uZWN0aW9uLnNlbmRTeW5j
KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0
KCksIHRpbWVvdXQpOworICAgIEFTU0VSVChyZXN1bHQpOworICAgIHJldHVybiBXVEZNb3ZlKHJl
c3VsdCk7Cit9CisKK2lubGluZSBib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmRE
ZXN0aW5hdGlvbklESWZOZWVkZWQodWludDY0X3QgZGVzdGluYXRpb25JRCwgTW9ub3RvbmljVGlt
ZSBhYnNvbHV0ZVRpbWVvdXQpCit7CisgICAgaWYgKGRlc3RpbmF0aW9uSUQgPT0gbV9jdXJyZW50
RGVzdGluYXRpb25JRCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgYXV0byBzcGFuID0gdHJ5
QWNxdWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIGVuY29kZXIgeyBNZXNzYWdlTmFt
ZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRCwgc3Bhbi0+ZGF0YSwgc3Bhbi0+c2l6ZSB9OworICAg
IGlmICghKGVuY29kZXIgPDwgZGVzdGluYXRpb25JRCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IC8vIFNpemUgb2YgdGhlIG1pbmltdW0gYWxsb2NhdGlvbiBpcyBpbmNvcnJlY3Qu
IExpa2VseSBhbiBhbGlnbm1lbnQgaXNzdWUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgYXV0byB3YWtldXBSZXN1bHQgPSByZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKKyAgICBp
ZiAod2FrZXVwUmVzdWx0ID09IFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVy
OjpZZXMpCisgICAgICAgIHdha2VVcFJlY2VpdmVyKCk7CisgICAgbV9jdXJyZW50RGVzdGluYXRp
b25JRCA9IGRlc3RpbmF0aW9uSUQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSB2b2lk
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFNw
YW4mJiBzcGFuKQoreworICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIGVuY29kZXIgeyBNZXNz
YWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSwgc3Bhbi5kYXRhLCBzcGFuLnNpemUg
fTsKKyAgICAvLyBOb3Qgbm90aWZ5aW5nIG9uIHdha2UgdXAgc2luY2UgdGhlIG91dC1vZi1zdHJl
YW0gbWVzc2FnZSB3aWxsIGRvIHRoYXQuCisgICAgKHZvaWQpIHJlbGVhc2UoZW5jb2Rlci5zaXpl
KCkpOworfQoraW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0
cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KQor
eworICAgIGZvciAoOzspIHsKKyAgICAgICAgc2l6ZV90IHNlbmRlckxpbWl0ID0gY2xhbXBlZExp
bWl0KHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJl
KSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNl
bmRlckxpbWl0KTsKKyAgICAgICAgaWYgKHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXpl
KSB7CisgICAgICAgICAgICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgICAg
ICAgICAgaWYgKG5vdyA+PSB0aW1lb3V0KQorICAgICAgICAgICAgICAgIGJyZWFrOworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgICAgICAgICAgc2l6ZV90IG9sZFNlbmRlckxpbWl0ID0gc2hhcmVk
UmVjZWl2ZXJPZmZzZXQoKS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoc2VuZGVyTGltaXQsIFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXI6OnJlY2VpdmVyT2Zmc2V0U2VuZGVySXNXYWl0aW5nVGFnLCBzdGQ6
Om1lbW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAg
ICAgICAgIGlmIChzZW5kZXJMaW1pdCA9PSBvbGRTZW5kZXJMaW1pdCkKKyAgICAgICAgICAgICAg
ICBtX2J1ZmZlci5zZW5kZXJXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0IC0gbm93KTsK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHNlbmRlckxpbWl0ID0gY2xhbXBl
ZExpbWl0KG9sZFNlbmRlckxpbWl0KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBhbGlnbmVk
U3BhbihtX3NlbmRlck9mZnNldCwgc2VuZGVyTGltaXQpOworICAgICAgICAgICAgfQorI2Vsc2UK
KyAgICAgICAgICAgIFRocmVhZDo6eWllbGQoKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAg
IGlmIChyZXN1bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitpbmxpbmUg
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXIgU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6cmVsZWFzZShzaXplX3Qgc2l6ZSkKK3sKKyAgICBzaXplID0gc3RkOjptYXgoc2l6ZSwg
bWluaW11bU1lc3NhZ2VTaXplKTsKKyAgICBzaXplX3QgZXhwZWN0ZWRSZWNlaXZlckxpbWl0ID0g
bV9zZW5kZXJPZmZzZXQ7CisgICAgbV9zZW5kZXJPZmZzZXQgPSB3cmFwT2Zmc2V0KGFsaWduT2Zm
c2V0KG1fc2VuZGVyT2Zmc2V0KSArIHNpemUpOworICAgIEFTU0VSVChtX3NlbmRlck9mZnNldCA8
IGRhdGFTaXplKCkpOworICAgIC8vIElmIHRoZSByZWNlaXZlciB3cm90ZSBvdmVyIHRoZSBzZW5k
ZXJPZmZzZXQgd2l0aCBzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHdlIGtub3cg
aXQgaXMgc2xlZXBpbmcuCisgICAgc2l6ZV90IHJlY2VpdmVyTGltaXQgPSBzaGFyZWRTZW5kZXJP
ZmZzZXQoKS5leGNoYW5nZShtX3NlbmRlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3Jl
bCk7CisgICAgaWYgKHJlY2VpdmVyTGltaXQgIT0gZXhwZWN0ZWRSZWNlaXZlckxpbWl0KQorICAg
ICAgICByZXR1cm4gV2FrZVVwUmVjZWl2ZXI6OlllczsKKyAgICByZXR1cm4gV2FrZVVwUmVjZWl2
ZXI6Ok5vOworfQorCitpbmxpbmUgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3BhbiBTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjphbGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQp
Cit7CisgICAgQVNTRVJUKG9mZnNldCA8IGRhdGFTaXplKCkpOworICAgIEFTU0VSVChsaW1pdCA8
IGRhdGFTaXplKCkpOworICAgIHNpemVfdCBhbGlnbmVkID0gYWxpZ25PZmZzZXQob2Zmc2V0KTsK
KyAgICBzaXplX3QgcmVzdWx0U2l6ZSA9IDA7CisgICAgaWYgKG9mZnNldCA8IGxpbWl0KSB7Cisg
ICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCAmJiBhbGlnbmVkIDwgbGltaXQpCisgICAgICAg
ICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0IHx8IGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAg
ICAgIHJlc3VsdFNpemUgPSBzaXplKGFsaWduZWQsIGxpbWl0KTsKKyAgICB9CisgICAgcmV0dXJu
IHsgZGF0YSgpICsgYWxpZ25lZCwgcmVzdWx0U2l6ZSB9OworfQorCitpbmxpbmUgc2l6ZV90IFN0
cmVhbUNsaWVudENvbm5lY3Rpb246OnNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQor
eworICAgIGlmICghbGltaXQpCisgICAgICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gMSAtIG9mZnNl
dDsKKyAgICBpZiAobGltaXQgPD0gb2Zmc2V0KQorICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAt
IG9mZnNldDsKKyAgICByZXR1cm4gbGltaXQgLSBvZmZzZXQgLSAxOworfQorCitpbmxpbmUgc2l6
ZV90IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVk
TGltaXQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHVudHJ1c3RlZExpbWl0IDwgKGRhdGFTaXplKCkg
LSAxKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHVudHJ1c3RlZExpbWl0LCBkYXRhU2l6ZSgpIC0g
MSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNvbm5lY3Rpb25CdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk3OWRhYmU2ODlhZDQ2MjhlNTJkYmQx
YmFlMGY2MWZlNmRlMTZiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgRmZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIuaCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3Bh
Y2UgSVBDIHsKKworc3RhdGljIFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gY3JlYXRlTWVtb3J5
KHNpemVfdCBzaXplKQoreworICAgIGF1dG8gbWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6
OmFsbG9jYXRlKHNpemUpOworICAgIGlmICghbWVtb3J5KQorICAgICAgICBDUkFTSCgpOworICAg
IHJldHVybiBtZW1vcnkucmVsZWFzZU5vbk51bGwoKTsKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6ZSkKKyAgICA6IG1f
ZGF0YVNpemUobWVtb3J5U2l6ZSAtIGhlYWRlclNpemUoKSkKKyAgICAsIG1fc2hhcmVkTWVtb3J5
KGNyZWF0ZU1lbW9yeShtZW1vcnlTaXplKSkKK3sKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYgbWVt
b3J5LCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgc2VuZGVyV2FpdFNlbWFwaG9yZSkK
KyAgICA6IG1fZGF0YVNpemUobWVtb3J5U2l6ZSAtIGhlYWRlclNpemUoKSkKKyAgICAsIG1fc2hh
cmVkTWVtb3J5KFdURk1vdmUobWVtb3J5KSkKKyAgICAsIG1fc2VuZGVyV2FpdFNlbWFwaG9yZShX
VEZNb3ZlKHNlbmRlcldhaXRTZW1hcGhvcmUpKQoreworfQorCitTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyKFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBvdGhl
cikgPSBkZWZhdWx0OworCitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjp+U3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlcigpID0gZGVmYXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcjo6b3BlcmF0b3I9KFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBvdGhlcikK
K3sKKyAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgbV9kYXRhU2l6ZSA9IG90aGVy
Lm1fZGF0YVNpemU7CisgICAgICAgIG1fc2hhcmVkTWVtb3J5ID0gV1RGTW92ZShvdGhlci5tX3No
YXJlZE1lbW9yeSk7CisgICAgICAgIG1fc2VuZGVyV2FpdFNlbWFwaG9yZSA9IFdURk1vdmUob3Ro
ZXIubV9zZW5kZXJXYWl0U2VtYXBob3JlKTsKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQor
Cit2b2lkIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIGlm
ICghbV9zaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpKQorICAgICAgICBDUkFTSCgpOworICAgIFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBt
X3NoYXJlZE1lbW9yeS0+c2l6ZSgpIH07CisgICAgZW5jb2RlciA8PCBpcGNIYW5kbGU7CisgICAg
ZW5jb2RlciA8PCBtX3NlbmRlcldhaXRTZW1hcGhvcmU7Cit9CisKK09wdGlvbmFsPFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXI+IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+
IGlwY0hhbmRsZTsKKyAgICBkZWNvZGVyID4+IGlwY0hhbmRsZTsKKyAgICBpZiAoIWlwY0hhbmRs
ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxTZW1hcGhvcmU+
IHNlbWFwaG9yZTsKKyAgICBkZWNvZGVyID4+IHNlbWFwaG9yZTsKKyAgICBpZiAoIXNlbWFwaG9y
ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBzaXplX3QgZGF0YVNpemUgPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KGlwY0hhbmRsZS0+ZGF0YVNpemUpOworICAgIGlmIChkYXRhU2l6
ZSA8IGhlYWRlclNpemUoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRv
IHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLT5oYW5k
bGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOworICAgIGlm
IChzaGFyZWRNZW1vcnktPnNpemUoKSA8IGRhdGFTaXplKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHsgc2hhcmVkTWVtb3J5
LnJlbGVhc2VOb25OdWxsKCksIGRhdGFTaXplLCAgV1RGTW92ZSgqc2VtYXBob3JlKSB9OworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc3ZjJjYjFlYzA3OTM1ZmNjODBhZDVmMjQ0NGFkZWZmYjAz
OTQ0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNvbm5lY3Rpb25CdWZmZXIuaApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5o
IgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+Cisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBJUEMgeworCisvLyBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyIGlzIGEgc2hhcmVkICJiaS1wYXJ0aXRlIiBjaXJjdWxhciBidWZmZXIg
c3VwcG9ydGluZworLy8gdmFyaWFibGUgbGVuZ3RoIG1lc3NhZ2VzLCBzcGVjaWZpYyBkYXRhIGFs
aWdubWVudCB3aXRoIG1hbmRhdGVkIG1pbmltdW0gc2l6ZS4KKy8vIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb24gYW5kIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gdXNlIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIgdG8gY29tbXVuaWNhdGUuCisvLworLy8gVGhlICJiaS1wYXJ0aXRlIiBpcyBoZXJlIHRvIG1l
YW4gdGhhdCB3cml0ZXMgYW5kIHJlYWRzIHRvIHRoZSBidWZmZXIgbXVzdCBiZQorLy8gY29udGlu
dW91cy4KKy8vCisvLyBUaGUgY2xpZW50IChzZW5kZXIgb3IgcmVjZWl2ZXIpICJhY3F1aXJlcyIg
c29tZSBhbW91bnQgb2YgYnVmZmVyIGRhdGEuIElmIGJ1ZmZlciBoYXMgbm8KKy8vIGNhcGFjaXR5
LCBhY3F1aXJlIHJldHVybnMgd2l0aCB6ZXJvIGNhcGFjaXR5LiBJZiBidWZmZXIgaGFzIGF0IGxl
YXN0IGFjcXVpcmVkCisvLyBjYXBhY2l0eSwgYWxsIHRoZSBhdmFpbGFibGUgY2FwYWNpdHkgaXMg
cmV0dXJuZWQuCisvLworLy8gVGhlIGNsaWVudCAicmVsZWFzZXMiIHRoZSBzb21lIGFtb3VudCBv
ZiBkYXRhLCBhdCBsZWFzdCB0aGUgYW1vdW50IGFjcXVpcmVkIGJ1dCBwb3RlbnRpYWxseQorLy8g
bW9yZS4KKy8vCisvLyBCb3RoIHNlbmRlciBhbmQgcmVjZWl2ZXIgbXVzdCBhY3F1aXJlIHNhbWUg
YW1vdW50IG9mIGRhdGEgYXQgdGhlIHNhbWUgc3RlcCBvZiB0aGUgYWNxdWlyZSBzZXF1ZW5jZS4K
Ky8vIElmIHNlbmRlciBhY3F1aXJlcyBYIGFuZCB0aGVuIFkgYW1vdW50LCByZWNlaXZlciBtdXN0
IGRvIHRoZSBzYW1lLgorLy8KKy8vIFRoZSBjaXJjdWxhciBidWZmZXIgaGFzIGZvbGxvd2luZyBp
bXBsZW1lbnRhdGlvbjoKKy8vICogU2VuZGVyIG93bnMgdGhlIGRhdGEgYmV0d2VlbiBbc2VuZGVy
T2Zmc2V0LCByZWNlaXZlck9mZnNldFsuIFdoZW4gc2VuZGVyT2Zmc2V0ID09CisvLyByZWNlaXZl
ck9mZnNldCwgc2VuZGVyIG93bnMgYWxsIHRoZSBkYXRhLgorLy8gKiBSZWNlaXZlciBvd25zIHRo
ZSBkYXRhIGJldHdlZW4gW3JlY2VpdmVyT2Zmc2V0LCBzZW5kZXJPZmZzZXRbLgorLy8gKiBUaGUg
YnVmZmVyIGNhbiBob2xkIG1heGltdW0gb2Ygc2l6ZSAtIDEgdmFsdWVzLiBUaGUgbGFzdCB2YWx1
ZSBpcyByZXNlcnZlZCBmb3IKKy8vIGluZGljYXRpbmcgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwu
IEZJWE1FOiBNYXliZSB3b3VsZCBiZSBzaW1wbGVyIGltcGxlbWVudGF0aW9uIGlmCisvLyBpdCB3
b3VsZCB1c2UgdGhlICJ3cmFwIiBmbGFnIGluc3RlYWQgb2YgdGhlIGhvbGUgYXMgdGhlIGluZGlj
YXRvci4gVGhpcyB3b3VsZCBtb3ZlCisvLyB0aGUgYWxpZ25lZFNwYW4gaW1wbGVtZW50YXRpb24g
dG8gdGhlIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisvLyAqIEFsbCBhdG9taWMgdmFyaWFibGUg
bG9hZHMgYXJlIHVudHJ1c3RlZCwgc28gdGhleSdyZSBjbGFtcGVkLiBWaW9sYXRpb25zIGFyZSBu
b3QgcmVwb3J0ZWQsCisvLyB0aG91Z2guCisvLyBTZWUgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUu
CitjbGFzcyBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyKHNpemVfdCBtZW1vcnlTaXplKTsKKyAgICBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgflN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXIoKTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBvcGVyYXRvcj0oU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBv
ZmZzZXQpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IGRhdGFTaXplKCkp
OworICAgICAgICBpZiAob2Zmc2V0ID09IGRhdGFTaXplKCkpCisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3Qg
bWVzc2FnZUFsaWdubWVudD4KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGFjcXVpcmVTaXplKSBjb25zdAorICAgIHsKKyAgICAgICAgb2Zmc2V0ID0gcm91bmRV
cFRvTXVsdGlwbGVPZjxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQpOworICAgICAgICBpZiAob2Zm
c2V0ICsgYWNxdWlyZVNpemUgPj0gZGF0YVNpemUoKSkKKyAgICAgICAgICAgIG9mZnNldCA9IDA7
CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgQXRvbWljPHNpemVfdD4mIHNl
bmRlck9mZnNldCgpIHsgcmV0dXJuIGhlYWRlcigpLnNlbmRlck9mZnNldDsgfQorICAgIEF0b21p
YzxzaXplX3Q+JiByZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIGhlYWRlcigpLnJlY2VpdmVyT2Zm
c2V0OyB9CisgICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSArIGhlYWRlclNpemUoKTsgfQorICAgIHNp
emVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVNpemU7IH0KKyAgICBTZW1hcGhv
cmUmIHNlbmRlcldhaXRTZW1hcGhvcmUoKSB7IHJldHVybiBtX3NlbmRlcldhaXRTZW1hcGhvcmU7
IH0KKworICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpzZW5kZXJPZmZzZXQgd2hl
biByZWNlaXZlciBpcyBzbGVlcGluZywgZS5nLiBub3QgcnVubmluZy4KKyAgICBzdGF0aWMgY29u
c3RleHByIHNpemVfdCBzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcgPSAxIDw8IDMx
OworICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpyZWNlaXZlck9mZnNldCB3aGVu
IHNlbmRlciBpcyB3YWl0aW5nLCBlLmcuIHdhaXRpbmcgb24KKyAgICAvLyBhIHNlbWFwaG9yZS4K
KyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCByZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGlu
Z1RhZyA9IDEgPDwgMzE7CisKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAg
c3RhdGljIE9wdGlvbmFsPFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI+IGRlY29kZShEZWNvZGVyJik7
CisKK3ByaXZhdGU6CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihSZWY8V2ViS2l0OjpTaGFy
ZWRNZW1vcnk+JiYsIHNpemVfdCBtZW1vcnlTaXplLCBTZW1hcGhvcmUmJiBzZW5kZXJXYWl0U2Vt
YXBob3JlKTsKKworICAgIHN0cnVjdCBIZWFkZXIgeworICAgICAgICBBdG9taWM8c2l6ZV90PiBy
ZWNlaXZlck9mZnNldDsKKyAgICAgICAgLy8gUGFkZGluZyBzbyB0aGF0IHRoZSB2YXJpYWJsZXMg
bW9zdGx5IGFjY2Vzc2VkIGJ5IGRpZmZlcmVudCBwcm9jZXNzZXMgZG8gbm90IHNoYXJlIGEgY2Fj
aGUgbGluZS4KKyAgICAgICAgLy8gVGhpcyBpcyBhbiBhdHRlbXB0IHRvIGF2b2lkIGNhY2hlLWxp
bmUgaW5kdWNlZCByZWR1Y3Rpb24gb2YgcGFyYWxsZWwgYWNjZXNzLgorICAgICAgICB1aW50NjRf
dCBjYWNoZUxpbmVQYWRkaW5nWzJdOworICAgICAgICBBdG9taWM8c2l6ZV90PiBzZW5kZXJPZmZz
ZXQ7CisgICAgfTsKKyAgICBIZWFkZXImIGhlYWRlcigpIGNvbnN0IHsgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PEhlYWRlcio+KG1fc2hhcmVkTWVtb3J5LT5kYXRhKCkpOyB9CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgaGVhZGVyU2l6ZSgpIHsgcmV0dXJuIHJvdW5kVXBUb011bHRpcGxl
T2Y8c2l6ZW9mKHN0ZDo6bWF4X2FsaWduX3QpPihzaXplb2YoSGVhZGVyKSk7IH0KKworICAgIHNp
emVfdCBtX2RhdGFTaXplIHsgMCB9OworICAgIFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gbV9z
aGFyZWRNZW1vcnk7CisgICAgU2VtYXBob3JlIG1fc2VuZGVyV2FpdFNlbWFwaG9yZTsKK307CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9u
RW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MjMyZGVjZjZjNzkzYTQ1NzcxNjhlOTdlZmI1MWFhZmIz
MmZkZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1Db25uZWN0aW9uRW5jb2Rlci5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFj
ZSBJUEMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IHN0cnVjdCBBcmd1bWVudENv
ZGVyOworCisvLyBJUEMgZW5jb2RlciB3aGljaDoKKy8vICAtIEVuY29kZXMgdG8gYSBjYWxsZXIg
YnVmZmVyIHdpdGggZml4ZWQgc2l6ZSwgZG9lcyBub3QgcmVzaXplLCBzdG9wcyB3aGVuIHNpemUg
cnVucyBvdXQKKy8vICAtIERvZXMgbm90IGluaXRpYWxpemUgYWxpZ25tZW50IGdhcHMKKy8vCitj
bGFzcyBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBmaW5hbCB7CitwdWJsaWM6CisgICAgLy8gU3Ry
ZWFtIG1lc3NhZ2UgbmVlZHMgdG8gYmUgYXQgbGVhc3Qgc2l6ZSBvZiBTdHJlYW1TZXREZXN0aW5h
dGlvbklEIG1lc3NhZ2UuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3Nh
Z2VTaXplID0gc2l6ZW9mKE1lc3NhZ2VOYW1lKSArIHNpemVvZih1aW50NjRfdCk7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IGFsaWdub2YoTWVzc2FnZU5h
bWUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lQQ0VuY29kZXIgPSB0cnVlOworCisg
ICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ4
X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbUNhcGFjaXR5KQorICAgICAgICA6IG1fYnVmZmVyKHN0
cmVhbSkKKyAgICAgICAgLCBtX2J1ZmZlckNhcGFjaXR5KHN0cmVhbUNhcGFjaXR5KQorICAgIHsK
KyAgICAgICAgKnRoaXMgPDwgbWVzc2FnZU5hbWU7CisgICAgfQorCisgICAgflN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyKCkgPSBkZWZhdWx0OworCisgICAgYm9vbCBlbmNvZGVGaXhlZExlbmd0aERh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCisg
ICAgeworICAgICAgICBzaXplX3QgYnVmZmVyUG9pbnRlciA9IHN0YXRpY19jYXN0PHNpemVfdD4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9idWZmZXIgKyBtX2VuY29kZWRTaXplKSk7Cisg
ICAgICAgIHNpemVfdCBuZXdCdWZmZXJQb2ludGVyID0gcm91bmRVcFRvTXVsdGlwbGVPZihhbGln
bm1lbnQsIGJ1ZmZlclBvaW50ZXIpOworICAgICAgICBpZiAobmV3QnVmZmVyUG9pbnRlciA8IGJ1
ZmZlclBvaW50ZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGludHB0cl90
IGFsaWduZWRTaXplID0gbV9lbmNvZGVkU2l6ZSArIChuZXdCdWZmZXJQb2ludGVyIC0gYnVmZmVy
UG9pbnRlcik7CisgICAgICAgIGlmICghcmVzZXJ2ZShhbGlnbmVkU2l6ZSwgc2l6ZSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IG1fYnVmZmVy
ICsgYWxpZ25lZFNpemU7CisgICAgICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOworICAg
ICAgICBtX2VuY29kZWRTaXplID0gYWxpZ25lZFNpemUgKyBzaXplOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyJiBvcGVyYXRvcjw8KFQmJiB0KQorICAgIHsKKyAgICAgICAgQXJndW1lbnRD
b2RlcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Piwgdm9p
ZD46OmVuY29kZSgqdGhpcywgc3RkOjpmb3J3YXJkPFQ+KHQpKTsKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBBU1NFUlQoaXNWYWxpZCgp
KTsgcmV0dXJuIG1fZW5jb2RlZFNpemU7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlckNhcGFjaXR5OyB9CisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuIGlzVmFsaWQoKTsgfQorcHJpdmF0ZToKKyAgICBib29sIHJlc2VydmUoc2l6ZV90IGFsaWdu
ZWRTaXplLCBzaXplX3QgYWRkaXRpb25hbFNpemUpCisgICAgeworICAgICAgICBzaXplX3Qgc2l6
ZSA9IGFsaWduZWRTaXplICsgYWRkaXRpb25hbFNpemU7CisgICAgICAgIGlmIChzaXplIDwgYWxp
Z25lZFNpemUgfHwgc2l6ZSA+IG1fYnVmZmVyQ2FwYWNpdHkpIHsKKyAgICAgICAgICAgIG1fYnVm
ZmVyQ2FwYWNpdHkgPSAwOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB1aW50OF90KiBtX2J1ZmZlcjsKKyAgICBz
aXplX3QgbV9idWZmZXJDYXBhY2l0eTsKKyAgICBzaXplX3QgbV9lbmNvZGVkU2l6ZSB7IDAgfTsK
K307CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWI0
NDk0Yjc0ZmQ5Mjg1ODAzZTRlYTJlZjQ4YzExNzM2NTlkNzFmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAK
QEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgorCituYW1lc3BhY2UgSVBDIHsKKwor
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZShjb25z
dCBjaGFyKiBuYW1lKQorICAgIDogbV9uYW1lKG5hbWUpCit7Cit9CisKK3ZvaWQgU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZTo6ZGlzcGF0Y2goV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rp
b24pCit7CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIG1f
ZnVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAgICAgIEFTU0VSVCghbV9z
aG91bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5vdCBzdXBwb3J0ZWQu
CisgICAgfQorICAgIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQoKTsKKworfQordm9pZCBTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjphZGRTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlJiBjb25uZWN0aW9uKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlciht
X2xvY2spOworICAgICAgICBtX2Nvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9uKTsKKyAgICAgICAg
QVNTRVJUKCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90
IHN1cHBvcnRlZC4KKyAgICB9CisgICAgd2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpOworfQorCit2
b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKG1fcHJv
Y2Vzc2luZ1RocmVhZCk7CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24pOworICAgICAgICBBU1NFUlQo
IW1fc2hvdWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9y
dGVkLgorICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3dha2VVcFNlbWFwaG9yZS5z
aWduYWwoKTsKKyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnN0
b3AoKQoreworICAgIG1fc2hvdWxkUXVpdCA9IHRydWU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgaWYgKCFtX3Byb2Nlc3NpbmdUaHJlYWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dha2VV
cFNlbWFwaG9yZS5zaWduYWwoKTsKKyAgICBtX3Byb2Nlc3NpbmdUaHJlYWQtPndhaXRGb3JDb21w
bGV0aW9uKCk7CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkID0gbnVsbHB0cjsKKyNlbmRpZgorfQor
Cit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcCgpCit7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisjZW5kaWYKK30KKwor
SVBDOjpTZW1hcGhvcmUmIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFNlbWFwaG9y
ZSgpCit7CisgICAgcmV0dXJuIG1fd2FrZVVwU2VtYXBob3JlOworfQorCit2b2lkIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFByb2Nlc3NpbmdUaHJlYWQoKQoreworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIGlmIChtX3Byb2Nlc3NpbmdUaHJlYWQpIHsKKyAgICAgICAgbV93YWtl
VXBTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
IHRhc2sgPSBbdGhpc10oKSBtdXRhYmxlIHsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAg
ICAgcHJvY2Vzc1N0cmVhbXMoKTsKKyAgICAgICAgICAgIGlmIChtX3Nob3VsZFF1aXQpIHsKKyAg
ICAgICAgICAgICAgICBwcm9jZXNzU3RyZWFtcygpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLndhaXQoKTsKKyAg
ICAgICAgfQorICAgIH07CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUo
bV9uYW1lLCBXVEZNb3ZlKHRhc2spLCBUaHJlYWRUeXBlOjpHcmFwaGljcywgVGhyZWFkOjpRT1M6
OlVzZXJJbnRlcmFjdGl2ZSk7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlOjpwcm9jZXNzU3RyZWFtcygpCit7CisgICAgY29uc3RleHByIHNpemVfdCBkZWZhdWx0
TWVzc2FnZUxpbWl0ID0gMTAwMDsKKyAgICBib29sIGhhc01vcmVUb1Byb2Nlc3MgPSBmYWxzZTsK
KyAgICBkbyB7CisgICAgICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gZnVuY3Rpb25z
OworICAgICAgICBIYXNoU2V0PFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4+IGNvbm5l
Y3Rpb25zOworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
bG9jayk7CisgICAgICAgICAgICBmdW5jdGlvbnMuc3dhcChtX2Z1bmN0aW9ucyk7CisgICAgICAg
ICAgICBjb25uZWN0aW9ucyA9IG1fY29ubmVjdGlvbnM7CisgICAgICAgIH0KKyAgICAgICAgZm9y
IChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykKKyAgICAgICAgICAgIFdURk1vdmUoZnVuY3Rp
b24pKCk7CisKKyAgICAgICAgaGFzTW9yZVRvUHJvY2VzcyA9IGZhbHNlOworICAgICAgICBmb3Ig
KGF1dG8mIGNvbm5lY3Rpb24gOiBjb25uZWN0aW9ucykKKyAgICAgICAgICAgIGhhc01vcmVUb1By
b2Nlc3MgfD0gY29ubmVjdGlvbi0+ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhkZWZhdWx0TWVzc2Fn
ZUxpbWl0KSA9PSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6SGFzTW9yZU1lc3NhZ2VzOwor
ICAgIH0gd2hpbGUgKGhhc01vcmVUb1Byb2Nlc3MpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWY3YmEzZjM0MDI5MGYzMDI0YzViODlhMGVhM2Y4MzAwOWNkODI2YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3Bh
Y2UgSVBDIHsKKworY2xhc3MgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmaW5hbCA6IHB1Ymxp
YyBGdW5jdGlvbkRpc3BhdGNoZXIgeworcHVibGljOgorICAgIFN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUoY29uc3QgY2hhciopOworICAgIH5TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlKCkgPSBk
ZWZhdWx0OworICAgIHZvaWQgYWRkU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZSYpOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZSYpOworCisgICAgdm9pZCBkaXNwYXRjaChXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJikgZmluYWw7CisgICAgdm9pZCBzdG9wKCk7CisKKyAgICB2b2lkIHdha2VVcCgpOworCisg
ICAgU2VtYXBob3JlJiB3YWtlVXBTZW1hcGhvcmUoKTsKK3ByaXZhdGU6CisgICAgdm9pZCB3YWtl
VXBQcm9jZXNzaW5nVGhyZWFkKCk7CisgICAgdm9pZCBwcm9jZXNzU3RyZWFtcygpOworCisgICAg
Y29uc3QgY2hhciogY29uc3QgbV9uYW1lOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFNlbWFw
aG9yZSBtX3dha2VVcFNlbWFwaG9yZTsKKyNlbmRpZgorICAgIFJlZlB0cjxUaHJlYWQ+IG1fcHJv
Y2Vzc2luZ1RocmVhZDsKKworICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hvdWxkUXVpdCB7IGZh
bHNlIH07CisKKyAgICBMb2NrIG1fbG9jazsKKyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBt
X2Z1bmN0aW9uczsKKyAgICBIYXNoU2V0PFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4+
IG1fY29ubmVjdGlvbnM7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlMTRiNWQ1MTdm
MDY3NjMzODJmNTEzZmU1NTM3NTFiNmMxYjMzMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsx
LDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgorCituYW1lc3BhY2UgSVBDIHsKKworU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0sIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICA6IG1fY29ubmVjdGlvbihjb25u
ZWN0aW9uKQorICAgICwgbV93b3JrUXVldWUod29ya1F1ZXVlKQorICAgICwgbV9idWZmZXIoV1RG
TW92ZShzdHJlYW0pKQoreworfQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpz
dGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2FnZVJlY2Vp
dmVRdWV1ZSgqdGhpcywgcmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBtX3dvcmtR
dWV1ZS5hZGRTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIG1fY29ubmVjdGlvbi0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVRdWV1ZShyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOwor
ICAgIG1fd29ya1F1ZXVlLnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOworfQorCit2b2lk
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjplbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwg
c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYgbWVzc2FnZSkKK3sKKyAgICB7CisgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jayk7CisgICAgICAg
IG1fb3V0T2ZTdHJlYW1NZXNzYWdlcy5hcHBlbmQoV1RGTW92ZShtZXNzYWdlKSk7CisgICAgfQor
ICAgIG1fd29ya1F1ZXVlLndha2VVcCgpOworfQorCitPcHRpb25hbDxTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFxdWlyZSgp
Cit7CisgICAgc2l6ZV90IHJlY2VpdmVyTGltaXQgPSBzaGFyZWRTZW5kZXJPZmZzZXQoKS5sb2Fk
KHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOworICAgIGlmIChyZWNlaXZlckxpbWl0ID09IFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZykK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRT
cGFuKG1fcmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworICAgIGlmIChyZXN1bHQuc2l6
ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkgeworICAgICAgICByZWNlaXZlckxpbWl0ID0gc2hhcmVk
U2VuZGVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHJlY2VpdmVyTGltaXQsIFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc3Rk
OjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAg
ICAgIEFTU0VSVCghKHJlY2VpdmVyTGltaXQgJiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5k
ZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpKTsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9
IGNsYW1wZWRMaW1pdChyZWNlaXZlckxpbWl0KTsKKyAgICAgICAgcmVzdWx0ID0gYWxpZ25lZFNw
YW4obV9yZWNlaXZlck9mZnNldCwgcmVjZWl2ZXJMaW1pdCk7CisgICAgfQorCisgICAgaWYgKHJl
c3VsdC5zaXplID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjpyZWxlYXNlKHNpemVfdCByZWFkU2l6ZSkKK3sKKyAgICBBU1NFUlQocmVhZFNpemUp
OworICAgIHJlYWRTaXplID0gc3RkOjptYXgocmVhZFNpemUsIG1pbmltdW1NZXNzYWdlU2l6ZSk7
CisgICAgc2l6ZV90IHJlY2VpdmVyT2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9mZnNldChtX3Jl
Y2VpdmVyT2Zmc2V0KSArIHJlYWRTaXplKTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHNp
emVfdCBvbGRSZWNlaXZlck9mZnNldCA9IHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuZXhjaGFuZ2Uo
cmVjZWl2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgIC8vIElmIHRo
ZSBzZW5kZXIgd3JvdGUgb3ZlciByZWNlaXZlck9mZnNldCwgaXQgbWVhbnMgdGhlIHNlbmRlciBp
cyB3YWl0aW5nLgorICAgIGlmIChvbGRSZWNlaXZlck9mZnNldCAhPSBtX3JlY2VpdmVyT2Zmc2V0
KQorICAgICAgICBtX2J1ZmZlci5zZW5kZXJXYWl0U2VtYXBob3JlKCkuc2lnbmFsKCk7CisjZW5k
aWYKKworICAgIG1fcmVjZWl2ZXJPZmZzZXQgPSByZWNlaXZlck9mZnNldDsKK30KKworU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFs
aWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAgICBBU1NFUlQob2Zm
c2V0IDwgZGF0YVNpemUoKSk7CisgICAgQVNTRVJUKGxpbWl0IDwgZGF0YVNpemUoKSk7CisgICAg
c2l6ZV90IGFsaWduZWQgPSBhbGlnbk9mZnNldChvZmZzZXQpOworICAgIHNpemVfdCByZXN1bHRT
aXplID0gMDsKKyAgICBpZiAob2Zmc2V0IDwgbGltaXQpIHsKKyAgICAgICAgaWYgKG9mZnNldCA8
PSBhbGlnbmVkICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgIHJlc3VsdFNpemUgPSBz
aXplKGFsaWduZWQsIGxpbWl0KTsKKyAgICB9IGVsc2UgaWYgKG9mZnNldCA+IGxpbWl0KSB7Cisg
ICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwgbGltaXQpCisgICAgICAg
ICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfQorICAgIHJldHVy
biB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30KKworc2l6ZV90IFN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sK
KyAgICBpZiAob2Zmc2V0IDw9IGxpbWl0KQorICAgICAgICByZXR1cm4gbGltaXQgLSBvZmZzZXQ7
CisgICAgcmV0dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7Cit9CisKK3NpemVfdCBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29u
c3QKK3sKKyAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUoKSAtIDEpKTsKKyAg
ICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkgLSAxKTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVj
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAyMGI5MjEzNmZmNmI2YTliOWUxOThkYzk3M2IzZDNhNmVhNTY2
MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSwyODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisj
aW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUg
IlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5j
b2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KKworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU7
CisKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPiwgcHJvdGVjdGVkIE1lc3NhZ2VS
ZWNlaXZlUXVldWUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKTsKK3B1YmxpYzoKKyAgICB+U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoKSBv
dmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgICBDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1
cm4gbV9jb25uZWN0aW9uOyB9CisKKyAgICBlbnVtIERpc3BhdGNoUmVzdWx0IDogYm9vbCB7Cisg
ICAgICAgIEhhc05vTWVzc2FnZXMsCisgICAgICAgIEhhc01vcmVNZXNzYWdlcworICAgIH07Cisg
ICAgdmlydHVhbCBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBt
ZXNzYWdlTGltaXQpID0gMDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4K
KyAgICB2b2lkIHNlbmRTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgQXJndW1lbnRz
JiYuLi4pOworCitwcm90ZWN0ZWQ6CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoSVBD
OjpDb25uZWN0aW9uJiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBTdHJlYW1Db25uZWN0aW9u
V29ya1F1ZXVlJik7CisKKyAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCBzdG9wUmVjZWl2aW5n
TWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisKKyAg
ICAvLyBNZXNzYWdlUmVjZWl2ZVF1ZXVlCisgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShDb25uZWN0
aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpIGZpbmFsOworCisgICAgc3RydWN0IFNw
YW4geworICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXplX3Qgc2l6ZTsKKyAgICB9
OworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFxdWlyZSgpOworCisgICAgdm9pZCByZWxlYXNlKHNp
emVfdCByZWFkU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3Nh
Z2VTaXplID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1pbmltdW1NZXNzYWdlU2l6ZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50ID0gU3RyZWFtQ29ubmVj
dGlvbkVuY29kZXI6Om1lc3NhZ2VBbGlnbm1lbnQ7CisgICAgU3BhbiBhbGlnbmVkU3BhbihzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBzaXplKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVk
TGltaXQpIGNvbnN0OworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zmc2V0KTsgfQorICAgIHNpemVfdCBhbGln
bk9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5hbGlnbk9mZnNl
dDxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQsIG1pbmltdW1NZXNzYWdlU2l6ZSk7IH0KKyAgICBB
dG9taWM8c2l6ZV90PiYgc2hhcmVkU2VuZGVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuc2Vu
ZGVyT2Zmc2V0KCk7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkUmVjZWl2ZXJPZmZzZXQo
KSB7IHJldHVybiBtX2J1ZmZlci5yZWNlaXZlck9mZnNldCgpOyB9CisgICAgdWludDhfdCogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIHNpemVfdCBkYXRhU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFTaXplKCk7IH0KKworICAgIFJlZjxJUEM6
OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
JiBtX3dvcmtRdWV1ZTsKKworICAgIHNpemVfdCBtX3JlY2VpdmVyT2Zmc2V0IHsgMCB9OworICAg
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgbV9idWZmZXI7CisKKyAgICBMb2NrIG1fb3V0T2ZTdHJl
YW1NZXNzYWdlc0xvY2s7CisgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERlY29kZXI+PiBtX291
dE9mU3RyZWFtTWVzc2FnZXM7CisKKyAgICBmcmllbmQgY2xhc3MgU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK3ZvaWQgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVl
c3RJRCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQgc2VuZGluZyB0byBidWZmZXIuCisgICAgYXV0byBlbmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6
OkVuY29kZXI+KElQQzo6TWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0
SUQpOworICAgICgqZW5jb2RlciA8PCAuLi4gPDwgYXJndW1lbnRzKTsKKyAgICBtX2Nvbm5lY3Rp
b24tPnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKKy8vIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24gcmVwcmVzZW50cyB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHN0cmVhbSBzZW5k
ZXIgYW5kIHJlY2VpdmVyLCBhcyB1c2VkIGJ5IHRoZSByZWNlaXZlci4KKy8vIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb246CisvLyAgKiBIb2xkcyB0aGUgbWVzc2FnZXMgdG93YXJkcyB0aGUgcmVjZWl2
ZXIuCisvLyAgKiBTZW5kcyB0aGUgcmVwbGllcyBiYWNrIHRvIHRoZSBzZW5kZXIgdmlhIHRoZSBz
dHJlYW0gb3Igbm9ybWFsIENvbm5lY3Rpb24gZmFsbGJhY2suCisvLworLy8gUmVjZWl2ZXIgdGVt
cGxhdGUgY29udHJhY3Q6CisvLyAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2UmLCBEZWNvZGVyJik7CisvLwordGVtcGxhdGU8dHlwZW5hbWUg
UmVjZWl2ZXI+CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFN0cmVh
bVNlcnZlckNvbm5lY3Rpb24+IGNyZWF0ZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
JiB3b3JrUXVldWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgd29ya1F1
ZXVlKSk7CisgICAgfQorICAgIH5TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWwgPSBkZWZh
dWx0OworCisgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyJiwgUmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICAvLyBTdG9wcyB0aGUgbWVzc2Fn
ZSByZWNlaXB0LiBOb3RlOiBhbHJlYWR5IHJlY2VpdmVkIG1lc3NhZ2VzIG1pZ2h0IHN0aWxsIGJl
IGRlbGl2ZXJlZC4KKyAgICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2Ugb3ZlcnJpZGVzLgorICAgIERpc3BhdGNoUmVzdWx0IGRpc3BhdGNoU3RyZWFtTWVzc2Fn
ZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyJiYgc3RyZWFtQnVmZmVyLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUp
CisgICAgICAgIDogU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoY29ubmVjdGlvbiwgV1RGTW92
ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpCisgICAgeworICAgIH0KKyAgICBib29sIHByb2Nl
c3NTZXRTdHJlYW1EZXN0aW5hdGlvbklEKERlY29kZXImJiwgUmVmUHRyPFJlY2VpdmVyPiYgY3Vy
cmVudFJlY2VpdmVyKTsKKyAgICBib29sIGRpc3BhdGNoU3RyZWFtTWVzc2FnZShEZWNvZGVyJiYs
IFJlY2VpdmVyJik7CisgICAgYm9vbCBkaXNwYXRjaE91dE9mU3RyZWFtTWVzc2FnZShEZWNvZGVy
JiYpOworICAgIExvY2sgbV9yZWNlaXZlcnNMb2NrOworICAgIHVzaW5nIFJlY2VpdmVyc01hcCA9
IEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90PiwgUmVmPFJlY2VpdmVyPj47Cisg
ICAgUmVjZWl2ZXJzTWFwIG1fcmVjZWl2ZXJzOworCisgICAgdWludDY0X3QgbV9jdXJyZW50RGVz
dGluYXRpb25JRCA9IDA7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK3ZvaWQg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMo
UmVjZWl2ZXImIHJlY2VpdmVyLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKQoreworICAgIHsKKyAgICAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFp
cihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsKKyAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICBB
U1NFUlQoIW1fcmVjZWl2ZXJzLmNvbnRhaW5zKGtleSkpOworICAgICAgICBtX3JlY2VpdmVycy5h
ZGQoa2V5LCBtYWtlUmVmKHJlY2VpdmVyKSk7CisgICAgfQorICAgIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChyZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK3ZvaWQgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZl
ck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKHJlY2VpdmVy
TmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0
aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgQVNTRVJUKG1fcmVjZWl2
ZXJzLmNvbnRhaW5zKGtleSkpOworICAgIG1fcmVjZWl2ZXJzLnJlbW92ZShrZXkpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpE
aXNwYXRjaFJlc3VsdCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hT
dHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KQoreworICAgIFJlZlB0cjxSZWNlaXZl
cj4gY3VycmVudFJlY2VpdmVyOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgV1RGOjppc1ZhbGlk
KFJlY2VpdmVyTmFtZSkuCisgICAgdWludDhfdCBjdXJyZW50UmVjZWl2ZXJOYW1lID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oUmVjZWl2ZXJOYW1lOjpJbnZhbGlkKTsKKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbWVzc2FnZUxpbWl0OyArK2kpIHsKKyAgICAgICAgYXV0byBzcGFuID0gdHJ5
QXF1aXJlKCk7CisgICAgICAgIGlmICghc3BhbikKKyAgICAgICAgICAgIHJldHVybiBEaXNwYXRj
aFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgSVBDOjpEZWNvZGVyIGRlY29kZXIgeyBz
cGFuLT5kYXRhLCBzcGFuLT5zaXplLCBtX2N1cnJlbnREZXN0aW5hdGlvbklEIH07CisgICAgICAg
IGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlz
cGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAg
fQorICAgICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpTZXRT
dHJlYW1EZXN0aW5hdGlvbklEKSB7CisgICAgICAgICAgICBpZiAoIXByb2Nlc3NTZXRTdHJlYW1E
ZXN0aW5hdGlvbklEKFdURk1vdmUoZGVjb2RlciksIGN1cnJlbnRSZWNlaXZlcikpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSkgeworICAgICAgICAg
ICAgaWYgKCFkaXNwYXRjaE91dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3VycmVudFJlY2VpdmVy
TmFtZSAhPSBzdGF0aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkpIHsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50
OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgICAgICBjdXJyZW50
UmVjZWl2ZXIgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGlmICghY3VycmVudFJlY2Vp
dmVyKSB7CisgICAgICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KGN1cnJlbnRSZWNlaXZlck5hbWUpLCBtX2N1cnJlbnREZXN0aW5hdGlvbklEKTsK
KyAgICAgICAgICAgIGlmICghUmVjZWl2ZXJzTWFwOjppc1ZhbGlkS2V5KGtleSkpIHsKKyAgICAg
ICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNo
UmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICAgICAgY3VycmVudFJl
Y2VpdmVyID0gbV9yZWNlaXZlcnMuZ2V0KGtleSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFj
dXJyZW50UmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIC8vIFZhbGlkIHNjZW5hcmlvIGlzIHdoZW4g
cmVjZWl2ZXIgaGFzIGJlZW4gcmVtb3ZlZCwgYnV0IHRoZXJlIGFyZSBtZXNzYWdlcyBmb3IgaXQg
aW4gdGhlIGJ1ZmZlci4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaW5jZSB3ZSBkbyBub3QgaGF2
ZSBhIHJlY2VpdmVyLCB3ZSBkb24ndCBrbm93IGhvdyB0byBkZWNvZGUgdGhlIG1lc3NhZ2UuCisg
ICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIG11c3QgdGltZW91dCBldmVyeSByZWNlaXZlciBp
biB0aGUgc3RyZWFtIGNvbm5lY3Rpb24uCisgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2UgYXNz
ZXJ0IHRoYXQgdGhlIHJlY2VpdmVycyBhcmUgZW1wdHksIGFzIHdlIG9ubHkgaGF2ZSB1cCB0byBv
bmUgcmVjZWl2ZXIgaW4KKyAgICAgICAgICAgIC8vIGEgc3RyZWFtIGNvbm5lY3Rpb24gdW50aWwg
cG9zc2liaWxpdHkgb2Ygc2tpcHBpbmcgaXMgaW1wbGVtZW50ZWQgcHJvcGVybHkuCisgICAgICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgICAg
ICBBU1NFUlQobV9yZWNlaXZlcnMuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiBEaXNw
YXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWRpc3Bh
dGNoU3RyZWFtTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpLCAqY3VycmVudFJlY2VpdmVyKSkKKyAg
ICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICB9Cisg
ICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNNb3JlTWVzc2FnZXM7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6cHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoRGVjb2RlciYmIGRlY29kZXIsIFJlZlB0
cjxSZWNlaXZlcj4mIGN1cnJlbnRSZWNlaXZlcikKK3sKKyAgICB1aW50NjRfdCBkZXN0aW5hdGlv
bklEID0gMDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlc3RpbmF0aW9uSUQpKSB7CisgICAg
ICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAo
bV9jdXJyZW50RGVzdGluYXRpb25JRCAhPSBkZXN0aW5hdGlvbklEKSB7CisgICAgICAgIG1fY3Vy
cmVudERlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgICAgICBjdXJyZW50UmVjZWl2
ZXIgPSBudWxscHRyOworICAgIH0KKyAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBv
c2l0aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNl
aXZlcj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoU3Ry
ZWFtTWVzc2FnZShEZWNvZGVyJiYgZGVjb2RlciwgUmVjZWl2ZXImIHJlY2VpdmVyKQoreworICAg
IHJlY2VpdmVyLmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKCp0aGlzLCBkZWNvZGVyKTsKKyAgICBp
ZiAoIWRlY29kZXIuaXNWYWxpZCgpKSB7CisgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hE
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBv
c2l0aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNl
aXZlcj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoT3V0
T2ZTdHJlYW1NZXNzYWdlKERlY29kZXImJiBkZWNvZGVyKQoreworICAgIHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiBtZXNzYWdlOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX291dE9mU3RyZWFtTWVzc2FnZXNMb2NrKTsKKyAgICAgICAgaWYgKG1fb3V0T2ZTdHJlYW1N
ZXNzYWdlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1l
c3NhZ2UgPSBtX291dE9mU3RyZWFtTWVzc2FnZXMudGFrZUZpcnN0KCk7CisgICAgfQorICAgIGlm
ICghbWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPFJlY2VpdmVy
PiByZWNlaXZlcjsKKyAgICB7CisgICAgICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3Rh
dGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgbWVzc2Fn
ZS0+ZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Jl
Y2VpdmVyc0xvY2spOworICAgICAgICByZWNlaXZlciA9IG1fcmVjZWl2ZXJzLmdldChrZXkpOwor
ICAgIH0KKyAgICBpZiAocmVjZWl2ZXIpIHsKKyAgICAgICAgcmVjZWl2ZXItPmRpZFJlY2VpdmVT
dHJlYW1NZXNzYWdlKCp0aGlzLCAqbWVzc2FnZSk7CisgICAgICAgIGlmICghbWVzc2FnZS0+aXNW
YWxpZCgpKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIC8vIElmIHJlY2VpdmVyIGRvZXMgbm90IGV4
aXN0IGlmIGl0IGhhcyBiZWVuIHJlbW92ZWQgYnV0IG1lc3NhZ2VzIGFyZSBzdGlsbCBwZW5kaW5n
IHRvIGJlCisgICAgLy8gcHJvY2Vzc2VkLiBJdCdzIG9rIHRvIHNraXAgc3VjaCBtZXNzYWdlcy4K
KyAgICAvLyBGSVhNRTogTm90ZSwgY29ycmVzcG9uZGluZyBza2lwIGlzIG5vdCBwb3NzaWJsZSBh
dCB0aGUgbW9tZW50IGZvciBzdHJlYW0gbWVzc2FnZXMuCisgICAgcmVsZWFzZShkZWNvZGVyLmN1
cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmgKaW5kZXggNzg1NGZhOGYxODY4
ZmI4ZTQ1NjIyODlmZGRmNmYyNzk1YWYyZDkwZC4uODNkOTlmMGNiYzhmZTA0ODIwYjQ3ODNjOWMw
NzZhYjU3YTNlYWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29j
b2EvTWFjaFBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNo
UG9ydC5oCkBAIC0yNSw5ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKLSNpbmNsdWRlICJEZWNvZGVy
LmgiCi0jaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgSVBDIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZWQwOGM3Mzk3NzAyMjJmYzVjNGM0
NmMzMzQ3OGFjMTAzMDFhOTk4OC4uYWM5ZTc4MmUyMTgzMTgxYmM5ODUzNWQ1ZGU4NGZlODA1YWYw
N2U5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yNCw4
ICsyNCw5IEBAIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiAKK2Zy
b20gbW9kZWwgaW1wb3J0IE1lc3NhZ2VSZWNlaXZlciwgTWVzc2FnZQogZnJvbSB3ZWJraXQgaW1w
b3J0IHBhcnNlcgotZnJvbSB3ZWJraXQubW9kZWwgaW1wb3J0IEJVSUxUSU5fQVRUUklCVVRFLCBB
U1lOQ19BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURSwgTUFJTlRIUkVBRENBTExCQUNL
X0FUVFJJQlVURQorZnJvbSB3ZWJraXQubW9kZWwgaW1wb3J0IEJVSUxUSU5fQVRUUklCVVRFLCBB
U1lOQ19BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURSwgTUFJTlRIUkVBRENBTExCQUNL
X0FUVFJJQlVURSwgU1RSRUFNX0FUVFJJQlVURSwgV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUK
IAogX2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKICAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTUzLDEzICs1NCwxMSBAQCBfbGljZW5z
ZV9oZWFkZXIgPSAiIiIvKgogCiAiIiIKIAotV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUgPSAn
V2FudHNDb25uZWN0aW9uJwogV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUgPSAnV2Fu
dHNEaXNwYXRjaE1lc3NhZ2UnCiBXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVU
RSA9ICdXYW50c0FzeW5jRGlzcGF0Y2hNZXNzYWdlJwogTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVU
RSA9ICdMZWdhY3lSZWNlaXZlcicKIE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSA9
ICdOb3RSZWZDb3VudGVkJwogCi0KIGRlZiByZWNlaXZlcl9lbnVtZXJhdG9yX29yZGVyX2tleShy
ZWNlaXZlcl9uYW1lKToKICAgICBpZiByZWNlaXZlcl9uYW1lID09ICdJUEMnOgogICAgICAgICBy
ZXR1cm4gMQpAQCAtMjExLDcgKzIxMCw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJh
dGlvbihyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFu
ZGxlckNhbGxUaHJlYWQ6Ok1haW5UaHJlYWQ7XG4nKQogICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVh
ZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7
XG4nKQotICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklC
VVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAg
aWYgKG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3Nh
Z2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpKSBhbmQgbm90IHJlY2VpdmVyLmhhc19h
dHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6
OkNvbm5lY3Rpb24mJykKICAgICAgICAgICAgIGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgogICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJXMnICUgY29tcGxldGlvbl9oYW5kbGVyX3Bh
cmFtZXRlcnMpCkBAIC0yNTksNiArMjU4LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2Zv
cndhcmRfZGVjbGFyZWQoKToKICAgICByZXR1cm4gZnJvemVuc2V0KFsKICAgICAgICAgJ0lQQzo6
RGF0YVJlZmVyZW5jZScsCiAgICAgICAgICdJUEM6OkZvbnRSZWZlcmVuY2UnLAorICAgICAgICAn
SVBDOjpTZW1hcGhvcmUnLAogICAgICAgICAnTWFjaFNlbmRSaWdodCcsCiAgICAgICAgICdNZWRp
YVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKQEAgLTU3MSwxMCArNTcxLDE1IEBAIGRlZiBzeW5j
X21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAgICAgZGlzcGF0Y2hf
ZnVuY3Rpb24gKz0gJ0FzeW5jJwogCiAgICAgd2FudHNfY29ubmVjdGlvbiA9IG1lc3NhZ2UuaGFz
X2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0
ZShXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSkKKyAgICBtYXliZV9yZXBseV9lbmNvZGVyID0g
IiwgKnJlcGx5RW5jb2RlciIKKyAgICBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9B
VFRSSUJVVEUpOgorICAgICAgICBtYXliZV9yZXBseV9lbmNvZGVyID0gJycKKyAgICBlbGlmIG1l
c3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFz
X2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICBtYXliZV9yZXBseV9lbmNvZGVy
ID0gJywgcmVwbHlFbmNvZGVyJwogCiAgICAgcmVzdWx0ID0gW10KICAgICByZXN1bHQuYXBwZW5k
KCcgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6JXM6OiVzOjpuYW1l
KCkpIHtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKLSAgICByZXN1bHQuYXBw
ZW5kKCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXNkZWNvZGVyLCAlc3JlcGx5
RW5jb2RlciwgdGhpcywgJiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5h
bWUsIG1lc3NhZ2UubmFtZSwgJ2Nvbm5lY3Rpb24sICcgaWYgd2FudHNfY29ubmVjdGlvbiBlbHNl
ICcnLCAnJyBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBv
ciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSBlbHNlICcqJywgaGFuZGxl
cl9mdW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAg
ICAgSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglc2RlY29kZXIlcywgdGhpcywgJiVzKTtcbicg
JSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJ2Nvbm5l
Y3Rpb24sICcgaWYgd2FudHNfY29ubmVjdGlvbiBlbHNlICcnLCBtYXliZV9yZXBseV9lbmNvZGVy
LCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKSkpCiAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgICAgICByZXR1cm47XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9XG4nKQogICAg
IHJldHVybiBzdXJyb3VuZF9pbl9jb25kaXRpb24oJycuam9pbihyZXN1bHQpLCBtZXNzYWdlLmNv
bmRpdGlvbikKQEAgLTg3NCw3ICs4NzksNyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVy
KHJlY2VpdmVyKToKICAgICAgICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9IE5vbmUg
YW5kIChtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNz
YWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSk6CiAgICAgICAgICAgICBkZWxheWVk
X29yX2FzeW5jX21lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQogCi0gICAgaWYgZGVsYXllZF9vcl9h
c3luY19tZXNzYWdlczoKKyAgICBpZiBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzIGFuZCBub3Qg
cmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnbmFtZXNwYWNlIE1lc3NhZ2VzIHtcblxubmFtZXNwYWNlICVzIHtcblxuJyAlIHJl
Y2VpdmVyLm5hbWUpCiAKICAgICAgICAgZm9yIG1lc3NhZ2UgaW4gZGVsYXllZF9vcl9hc3luY19t
ZXNzYWdlczoKQEAgLTkyMiwyNSArOTI3LDQ0IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRs
ZXIocmVjZWl2ZXIpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYXN5bmNfbWVzc2FnZXMu
YXBwZW5kKG1lc3NhZ2UpCiAKLSAgICBpZiBhc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNf
YXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSBvciByZWNlaXZlci5o
YXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2
ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9S
RUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQorICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1
dGUoU1RSRUFNX0FUVFJJQlVURSk6CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRp
ZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSkpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgICAgIGlmIG5vdCByZWNlaXZlci5oYXNf
YXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSk6CisgICAgICAgIGFz
c2VydChyZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJ
QlVURSkpCisgICAgICAgIGFzc2VydChub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19E
SVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkpCisgICAgICAgIGFzc2VydChub3QgcmVjZWl2ZXIu
aGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkpCisK
KyAgICAgICAgcmVzdWx0ICs9IFthc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVz
c2FnZSkgZm9yIG1lc3NhZ2UgaW4gYXN5bmNfbWVzc2FnZXNdCisgICAgICAgIHJlc3VsdCArPSBb
c3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4g
c3luY19tZXNzYWdlc10KKworICAgICAgICBpZiAocmVjZWl2ZXIuc3VwZXJjbGFzcyk6CisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJXM6OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNsYXNzKSkKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oZGVjb2Rl
cik7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTtcbicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7XG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQorICAgIGVsaWYgYXN5
bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQ
QVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CisgICAgICAgIHJlY2VpdmVfdmFyaWFudCA9IHJlY2Vp
dmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklC
VVRFKSBlbHNlICcnCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmUl
c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVfdmFyaWFudCkpCisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ3tcbicpCisgICAgICAgIGlmIG5vdCAocmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShO
T1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1
dGUoU1RSRUFNX0FUVFJJQlVURSkpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGF1
dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpO1xuJykKIAogICAgICAgICByZXN1bHQg
Kz0gW2FzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3IgbWVzc2Fn
ZSBpbiBhc3luY19tZXNzYWdlc10KKwogICAgICAgICBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRl
KFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNfYXR0cmli
dXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpKVxuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuO1xuJykK
ICAgICAgICAgaWYgKHJlY2VpdmVyLnN1cGVyY2xhc3MpOgotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgICVzOjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTtcbicg
JSAocmVjZWl2ZXIuc3VwZXJjbGFzcykpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
JXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7XG4nICUgKHJlY2Vp
dmVyLnN1cGVyY2xhc3MsIHJlY2VpdmVfdmFyaWFudCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pO1xuJykKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7XG4nKQog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKIAotICAgIGlmIHN5bmNfbWVzc2FnZXMgb3Ig
cmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6
CisgICAgaWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSkgYW5k
IChzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hf
TUVTU0FHRV9BVFRSSUJVVEUpKToKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlU3luYyVzTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVj
ZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRS
SUJVVEUpIGVsc2UgJycpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKaW5kZXggNDhk
OGUxYjYyN2NjMzFiMThmYTFjNTBmYWJlZWVkOTcxYmQxNWJlOS4uZTg5ZTE3ZTE0MDdiNWI1NjZi
YzE5MmM0MGE5OWEyOGQ4YmY4ZGNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CkBAIC00Niw2ICs0Niw4IEBAIF90ZXN0X3JlY2Vp
dmVyX25hbWVzID0gWwogICAgICdUZXN0V2l0aElmTWVzc2FnZScsCiAgICAgJ1Rlc3RXaXRoU2Vt
YXBob3JlJywKICAgICAnVGVzdFdpdGhJbWFnZURhdGEnLAorICAgICdUZXN0V2l0aFN0cmVhbScs
CisgICAgJ1Rlc3RXaXRoU3RyZWFtQnVmZmVyJwogXQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21vZGVsLnB5CmluZGV4IDQ4MDBmYTRlZmNhOTY3OGE4OWFmYzdlNDM0ZjI2YjM0NmNlOGNm
NmMuLjUwN2UwNDJhNTc3ZmY4YTAyMzM3MmMzYTYwN2FiMTA4YTVmYTk2NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQpAQCAtMjgsNiArMjgsOCBAQCBCVUlMVElOX0FUVFJJ
QlVURSA9ICJCdWlsdGluIgogQVNZTkNfQVRUUklCVVRFID0gIkFzeW5jIgogTUFJTlRIUkVBRENB
TExCQUNLX0FUVFJJQlVURSA9ICJNYWluVGhyZWFkQ2FsbGJhY2siCiBTWU5DSFJPTk9VU19BVFRS
SUJVVEUgPSAnU3luY2hyb25vdXMnCitTVFJFQU1fQVRUUklCVVRFID0gIlN0cmVhbSIKK1dBTlRT
X0NPTk5FQ1RJT05fQVRUUklCVVRFID0gJ1dhbnRzQ29ubmVjdGlvbicKIAogY2xhc3MgTWVzc2Fn
ZVJlY2VpdmVyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN1cGVyY2xh
c3MsIGF0dHJpYnV0ZXMsIG1lc3NhZ2VzLCBjb25kaXRpb24pOgpAQCAtNzMsNyArNzUsOSBAQCBp
cGNfcmVjZWl2ZXIgPSBNZXNzYWdlUmVjZWl2ZXIobmFtZT0iSVBDIiwgc3VwZXJjbGFzcz1Ob25l
LCBhdHRyaWJ1dGVzPVtCVUlMVElOXwogICAgIE1lc3NhZ2UoJ1dyYXBwZWRBc3luY01lc3NhZ2VG
b3JUZXN0aW5nJywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURSwgU1lOQ0hS
T05PVVNfQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAogICAgIE1lc3NhZ2UoJ1N5bmNNZXNz
YWdlUmVwbHknLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0
aW9uPU5vbmUpLAogICAgIE1lc3NhZ2UoJ0luaXRpYWxpemVDb25uZWN0aW9uJywgW10sIFtdLCBh
dHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj0iUExBVEZPUk0oQ09DT0Ep
IiksCi0gICAgTWVzc2FnZSgnTGVnYWN5U2Vzc2lvblN0YXRlJywgW10sIFtdLCBhdHRyaWJ1dGVz
PVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKQorICAgIE1lc3NhZ2UoJ0xlZ2Fj
eVNlc3Npb25TdGF0ZScsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBj
b25kaXRpb249Tm9uZSksCisgICAgTWVzc2FnZSgnU2V0U3RyZWFtRGVzdGluYXRpb25JRCcsIFtd
LCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSksCisg
ICAgTWVzc2FnZSgnUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZScsIFtdLCBbXSwgYXR0cmlidXRl
cz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSkKIF0sIGNvbmRpdGlvbj1Ob25l
KQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFr
ZWZpbGUgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCmluZGV4
IDIxYjMwYWUyMGZhMTAzM2ZhNjY0ZTAzYWRiZDg4MDg2YTZjNzJjNDIuLmUxOTdiZDNjMjY3YWU0
MTFhNDUwMGQwZmY2OTM5ODYwM2E0NTA4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9NYWtlZmlsZQpAQCAtNiw2ICs2LDggQEAgVEVTVFMgPSBcCiAgICAgVGVzdFdp
dGhJZk1lc3NhZ2UgXAogICAgIFRlc3RXaXRoU2VtYXBob3JlIFwKICAgICBUZXN0V2l0aEltYWdl
RGF0YSBcCisJVGVzdFdpdGhTdHJlYW0gXAorCVRlc3RXaXRoU3RyZWFtQnVmZmVyIFwKICMKIAog
YWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNz
YWdlTmFtZXMuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdl
TmFtZXMuY3BwCmluZGV4IDdkNWFmYzkxOGU1YjA1YjhmN2E1Y2Q2MjM4NTJiNWMwZTBjMThhMDMu
LjJlN2NhMTVlNzRlYmJkYTg2Yzc5ZjhmYzBiOGYzOGI0YjVmNzU4OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKQEAgLTEz
NCw2ICsxMzQsMTAgQEAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUgbmFtZSkK
ICAgICAgICAgcmV0dXJuICJJbml0aWFsaXplQ29ubmVjdGlvbiI7CiAgICAgY2FzZSBNZXNzYWdl
TmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOgogICAgICAgICByZXR1cm4gIkxlZ2FjeVNlc3Npb25T
dGF0ZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZToK
KyAgICAgICAgcmV0dXJuICJQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlIjsKKyAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklEOgorICAgICAgICByZXR1cm4gIlNldFN0
cmVhbURlc3RpbmF0aW9uSUQiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVw
bHk6CiAgICAgICAgIHJldHVybiAiU3luY01lc3NhZ2VSZXBseSI7CiAgICAgY2FzZSBNZXNzYWdl
TmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseToKQEAgLTIyNCw2
ICsyMjgsOCBAQCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lKQogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM7
CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246CiAgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlBy
b2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2U6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6U2V0U3RyZWFt
RGVzdGluYXRpb25JRDoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5Ogog
ICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpJUEM7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6
VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseToKQEAgLTQwMSw2ICs0MDcs
MTAgQEAgYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiAj
ZW5kaWYKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6TGVnYWN5U2Vz
c2lvblN0YXRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0g
SVBDOjpNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlNldFN0
cmVhbURlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtZXNzYWdl
TmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaCBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKaW5kZXggZWZlYTIzMDJkNjg3YmU0
ZjUyMjY5MGY3OGEzYzY0ZjYzNmUzMWZkOC4uYTIyYmQxY2ZkN2Y3M2JlOWVhYjFjYmJjMGZmMGM2
ZWYwNmEwNjQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9NZXNzYWdlTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L01lc3NhZ2VOYW1lcy5oCkBAIC05Myw2ICs5Myw4IEBAIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUg
OiB1aW50MTZfdCB7CiAgICAgLCBUZXN0V2l0aG91dEF0dHJpYnV0ZXNfVG91Y2hFdmVudAogICAg
ICwgSW5pdGlhbGl6ZUNvbm5lY3Rpb24KICAgICAsIExlZ2FjeVNlc3Npb25TdGF0ZQorICAgICwg
UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZQorICAgICwgU2V0U3RyZWFtRGVzdGluYXRpb25JRAog
ICAgICwgU3luY01lc3NhZ2VSZXBseQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3lu
Y01lc3NhZ2VSZXBseQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VX
aXRoQ29ubmVjdGlvblJlcGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZDBmNTI4YzY5Y2RlZmRkYTljNDg2NzkxMzhjNjM4YjhhYzBjYjMyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNz
YWdlcy5pbgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyMgVGVzdHMgU3RyZWFtIHJlY2VpdmVyIGF0dHJpYnV0ZS4KK21lc3NhZ2VzIC0+
IFRlc3RXaXRoU3RyZWFtIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKKyAgICB2b2lkIFNlbmRTdHJp
bmcoU3RyaW5nIHVybCkKKyAgICB2b2lkIFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQoU3RyaW5nIHVy
bCkgLT4gKGludDY0X3QgcmV0dXJuKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlci5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2Fn
ZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTE3MGFjODlhMjVmMDM5MjE5ZmU0MTgxMDViMmMxZDA0YWUwYzdl
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRlc3RzIFN0cmVhbSByZWNlaXZl
ciBhdHRyaWJ1dGUuCittZXNzYWdlcyAtPiBUZXN0V2l0aFN0cmVhbUJ1ZmZlciAgeworICAgIHZv
aWQgU2VuZFN0cmVhbUJ1ZmZlcihJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jOWM5MjQwYTRlYjFhYjU1NzQwOTYwMjI5MWRjMTI3MzE5ODdmMDU0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0
cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbUJ1
ZmZlci5oIgorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2Uu
aCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisjaW5jbHVkZSAiVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBU
ZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI6Om5hbWUoKSkg
eworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVm
ZmVyOjpTZW5kU3RyZWFtQnVmZmVyPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW1CdWZm
ZXI6OnNlbmRTdHJlYW1CdWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFVOVVNF
RF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZl
ck1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3RyZWFtQnVmZmVyTWVzc2FnZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTI0ZWJkZDIwMGYzMzkwNDc3ZGZh
ZjdjZDg1NzE5MWJkNTNiMjg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJn
dW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMu
aCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI7Cit9CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1C
dWZmZXIgeworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZl
ck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6VGVzdFdpdGhTdHJlYW1C
dWZmZXI7Cit9CisKK2NsYXNzIFNlbmRTdHJlYW1CdWZmZXIgeworcHVibGljOgorICAgIHVzaW5n
IEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVy
Jj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpN
ZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZlcjsgfQorICAg
IHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgU2VuZFN0
cmVhbUJ1ZmZlcihjb25zdCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIHN0cmVhbSkKKyAg
ICAgICAgOiBtX2FyZ3VtZW50cyhzdHJlYW0pCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFy
Z3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3Vt
ZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsK
KworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIKK30gLy8gbmFtZXNwYWNlIE1l
c3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODdmYTJhZDdkNTA2MzAwZjNjY2IzOTBmMTk3MjU5ZDkwZTY5M2YzMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhT
dHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2Ug
VGVzdFdpdGhTdHJlYW1CdWZmZXIgeworCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFt
QnVmZmVyCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mzk4ODU1YWQ1NmU5NTE5OTdjOWQyYWIzZjg4ODA5
NGM4ODkyMzI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTAsMCArMSw1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0
V2l0aFN0cmVhbS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJE
ZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUgIlRlc3RXaXRo
U3RyZWFtTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgVGVzdFdpdGhTdHJlYW06OmRpZFJlY2VpdmVTdHJlYW1N
ZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1l
c3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6bmFtZSgpKSB7CisgICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc+KGRl
Y29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVz
dFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6Om5hbWUoKSkgeworICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3lu
Y2hyb25pemVkPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmdTeW5j
aHJvbml6ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFVOVVNFRF9QQVJBTShkZWNv
ZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MGJmZWJhYjIzNzJjMWY2NjA1YzU1ODk0NTkzOGJmMWU0ZTdhYWZjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbU1lc3NhZ2VzLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhT
dHJlYW1NZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJl
YW0geworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5h
bWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6VGVzdFdpdGhTdHJlYW07Cit9
CisKK2NsYXNzIFNlbmRTdHJpbmcgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0
ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBu
YW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmlu
ZzsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGlj
aXQgU2VuZFN0cmluZyhjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh1
cmwpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgU2VuZFN0cmluZ1N5bmNo
cm9uaXplZCB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25z
dCBTdHJpbmcmPjsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVk
OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJl
cGx5ID0gc3RkOjp0dXBsZTxpbnQ2NF90Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPGludDY0X3Q+OworICAgIGV4cGxpY2l0IFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQo
Y29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAg
ICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtCit9IC8v
IG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIyYzVhMDc4ZGUwMWVjMTQzMGY4OTRmMjBjYjljMmY5MTU1ZTdjYWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RX
aXRoU3RyZWFtIHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbQorfSAvLyBuYW1l
c3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGY5YmE1ZGM3ODI0YjFlNWIwM2U1M2Y5OGI3
YTdmOGU0ZGVmMjFjNjQuLjQ1ODkyNmYyNWJkNmQ1MTYyYTc1OWNlMGM3M2Y4ZWExZWIxN2Q1ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dApAQCAtMTUwLDYgKzE1MCwxMCBAQCBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJl
Y2VpdmVyTWFwLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcCBA
bm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBAbm8tdW5pZnkKIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkKK1BsYXRm
b3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQ
Qy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9TdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9TdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVu
Y2UuY3BwIEBuby11bmlmeQogCiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5j
cHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAppbmRleCBjMzMwNzgyNWIyMDA4NmRlZDRjODZjNjQ4OGNlNWRkNTdlYzBj
MzU4Li44OTUyMDhjM2JjMjI2ZDZmYjEyODYxZGE0MzdjZGEzODFmNDhkNjM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5o
IgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCmluZGV4IDMwMWQwZWQ4MzBkYmVkOTA4Y2JiMjc4ODZmMDRhOGZlZWE5ZmQ4
OWUuLjIzYWIxMGQ2M2E0ZjRhM2ZkMjBjZWQ0ZDczMDE3M2Y0NzVkYzdmNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJEcmF3
aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRl
ICJIYW5kbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2VD
bGllbnQuaCIKICNpbmNsdWRlICJVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjA2MWE2Mzdk
YjkzYmIwYWZjNmQ5YzY1MTZjM2QwM2UyMzViNWNjMS4uZjAwNmU1MWFiMjM4MzA4NDQyZTE2NDBm
ZjdlOGM2NTY0ZTczZjQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMzI4LDYgKzEzMjgsMTYgQEAKIAkJN0I0ODNGMjAyNUNEREE5
QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNz
YWdlUmVjZWl2ZVF1ZXVlLmggKi87IH07CiAJCTdCNDgzRjIxMjVDRERBOUMwMDEyMDQ4NiAvKiBN
ZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2
ZVF1ZXVlTWFwLmNwcCAqLzsgfTsKIAkJN0I0ODNGMjIyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3Nh
Z2VSZWNlaXZlUXVldWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMu
aCAqLzsgfTsKKwkJN0I3MzEyM0EyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
NzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi87IH07
CisJCTdCNzMxMjNCMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMx
MjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLzsg
fTsKKwkJN0I3MzEyM0MyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjMz
MjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggKi87IH07CisJCTdC
NzMxMjNEMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM0MjVDQzg1
MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCAqLzsgfTsKKwkJN0I3MzEy
M0UyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM1MjVDQzg1MjQw
MDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggKi87IH07CisJCTdCNzMxMjNG
MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM2MjVDQzg1MjQwMDNC
Mjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJN0I3MzEyNDAyNUND
ODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzcyNUNDODUyNDAwM0IyNzk2
IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovOyB9OworCQk3QjczMTI0MTI1Q0M4NTI1
MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzgyNUNDODUyNDAwM0IyNzk2IC8qIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKKwkJN0I3MzEyNDIyNUNDODUyNTAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzOTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIuaCAqLzsgfTsKKwkJN0JBQjExMTAyNUREMDJCMzAwOEZDNDc5IC8qIFNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi87IH07CiAJCTdDMDY1RjJDMUM4Q0Q5NUYwMEMy
RDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1
MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLzsgfTsKIAkJN0MxMzVB
QTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFF
MiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rp
b25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
MUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggKi87IH07CkBAIC00NTQw
LDYgKzQ1NTAsMTUgQEAKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNl
aXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVz
c2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
NDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzMTI1Q0M4
NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjczMTIzMzI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM0MjVDQzg1MjQwMDNCMjc5NiAv
KiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjczMTIzNTI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM2MjVD
Qzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNzI1Q0M4NTI0MDAzQjI3OTYgLyogU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0I3MzEyMzgyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtU2VydmVyQ29ubmVjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzOTI1Q0M4NTI1MDAzQjI3
OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY2MjU0QUZERUIw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NDcsNiArNDU2Niw3IEBA
CiAJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2RDI1NTAxMDhDMDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JBQjExMEYyNUREMDJCMjAwOEZDNDc5IC8q
IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1NzRGNjcyMDBFODVEOTggLyogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NjgyNTc2ODBFRjAwRTg1RDk4IC8q
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJE
YXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY5ODUsMTAgKzcwMDUsMjAgQEAKIAkJCQkxQTNFRUQwRDE2MUE1MzUzMDBBRUI0RjUg
LyogTWVzc2FnZVJlY2VpdmVyTWFwLmggKi8sCiAJCQkJMUFBQjAzNzcxODVBN0M2QTAwRURGNTAx
IC8qIE1lc3NhZ2VTZW5kZXIuY3BwICovLAogCQkJCTFBQUIwMzc4MTg1QTdDNkEwMEVERjUwMSAv
KiBNZXNzYWdlU2VuZGVyLmggKi8sCisJCQkJN0JBQjExMEYyNUREMDJCMjAwOEZDNDc5IC8qIFNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLywKIAkJCQkyREMxODAwMUQ5MERERDE1
RkM2OTkxQTkgLyogU2hhcmVkQnVmZmVyQ29weS5jcHAgKi8sCiAJCQkJNUNDNURCOTEyMTQ4OEUx
NjAwNkNCOEE4IC8qIFNoYXJlZEJ1ZmZlckNvcHkuaCAqLywKIAkJCQkyREMxODU1RURCRkI4NTBC
QTBCNkQwNkQgLyogU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMkRDMTg4
MUFDQkNBQjVENTdDNUM2RUYwIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCAqLywKKwkJ
CQk3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAg
Ki8sCisJCQkJN0I3MzEyMzMyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rp
b24uaCAqLywKKwkJCQk3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5jcHAgKi8sCisJCQkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuaCAqLywKKwkJCQk3QjczMTIzOTI1Q0M4NTI1MDAzQjI3OTYgLyogU3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAqLywKKwkJCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYg
LyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8sCisJCQkJN0I3MzEyMzUyNUNDODUy
NDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAqLywKKwkJCQk3QjczMTIz
NzI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJ
N0I3MzEyMzgyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCAqLywK
IAkJCQkxQUUwMEQ2OTE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCAqLywK
IAkJCQkxQUUwMEQ2QTE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmggKi8sCiAJ
CQkpOwpAQCAtMTIwMTgsNiArMTIwNDgsNyBAQAogCQkJCUJDMkQwMjE3MTJBQzQxQ0IwMEU3MzJB
MyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFB
QjRBOEQxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkFCMTExMDI1REQwMkIzMDA4RkM0Nzkg
LyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTRENTREMDQyMUYxRDcyRDAwN0UzQzM2IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVSZW1vdGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMxQzFDMThDNTcxMTkwMERCQTdD
MyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjA2Nyw2ICsxMjA5OCwxMSBA
QAogCQkJCTkzNkIwNTk4MjMwMzkwOTcwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTM2OEVFREYyMzAzQTlFRDAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5h
Z2VyU2V0TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NUY0RTA2MjMwQjJFOTUwMDND
RURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MzEyM0MyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTdCNzMxMjNBMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTI0MjI1Q0M4NTI1MDAzQjI3OTYg
LyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjNF
MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3QjczMTI0MTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENkMxODMyN0MxMjAwMDg3REQ3IC8qIFN0
cmluZ1JlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk2QkQ4NUQxNTAxOUJDMzAwNzFG
NDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODYyMkIz
NTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMzg5NCw2ICsxMzkzMCwxMCBAQAogCQkJCTkzRDZCNzgyMjU0Q0NDRjQwMDU4
REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTMzNERFRDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM2OEVFREUyMzAzQTkwMjAw
QkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTdCNzMxMjNGMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjNEMjVDQzg1MjUwMDNCMjc5NiAvKiBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjNCMjVD
Qzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTdCNzMxMjQwMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgzMjEyQjZBNzEwMEY0OTNGRCAvKiBT
dHJpbmdSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3NTEyMTI2QTI4MjAw
NkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3
NTIyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggZjI5YmUwMDZl
YjdiOTc2NGI3ODJkOTE2MjVjODAxNjBmZjhmMzZmMy4uYjE5YmMxZTBhMDE5MDdmOWNlZGQ2MGE1
NjU3NWZhZGY1YzlkODgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwCkBAIC00OCwxMyArNDgsMTYgQEAgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdAogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzKSk7
CiB9CiAKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0gMSA8PCAy
MTsKKwogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCiAgICAgOiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5QmFzZShhdHRycykKICAgICAsIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
JmdwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9uKGdwdVByb2Nl
c3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgZGVmYXVsdFN0cmVhbVNpemUpCiB7CiAgICAgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBncHVQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwotICAgIGNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVHcmFw
aGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpLCAwLCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgbV9zdHJlYW1Db25uZWN0aW9uLnN0cmVhbUJ1ZmZlcigpKSwgMCwgSVBDOjpT
ZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwog
fQogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eSgpCkBAIC0xNjMsNyArMTY2LDcgQEAgR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZXJyb3JX
aGVuQ29udGV4dElzTG9zdCwgTk9fRVJST1IpOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcmJiBhdmFpbGFi
bGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpT
ZW1hcGhvcmUmJiBzZW1hcGhvcmUsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmlu
ZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTcyLDYgKzE3NSw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2YWlsYWJs
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKCFtX2RpZEluaXRpYWxpemUpOwor
ICAgIG1fc3RyZWFtQ29ubmVjdGlvbi5zZXRXYWtlVXBTZW1hcGhvcmUoV1RGTW92ZShzZW1hcGhv
cmUpKTsKICAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOwogICAgIGluaXRpYWxpemUoYXZhaWxh
YmxlRXh0ZW5zaW9ucywgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDgzMWI0YjBhYjEzN2U2YWFmODM1OTZlMGIwYTA3
NmRmMWUwOTE3NjEuLjc4OTdmNmNmZTgzY2VjNTVmZmEyZjYzYTk3NGZhYTdmMDEzYWE5MTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0yOSwxMCArMjksMTEg
QEAKIAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2lu
Y2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKyNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUJhc2UuaD4KQEAgLTMzNCwxOSArMzM1LDE4IEBAIHByb3RlY3RlZDoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYm
IG1lc3NhZ2UpCiAgICAgewotICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3Nh
Z2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCBJUEM6OlNlbmRP
cHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9uLnNlbmQo
V1RGTW92ZShtZXNzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIGRlZmF1bHRT
ZW5kVGltZW91dCk7CiAgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgV0FSTl9V
TlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYm
IG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCiAgICAgewotICAgICAgICByZXR1
cm4gY29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCBkZWZhdWx0U2VuZFRp
bWVvdXQpOworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9uLnNlbmRTeW5jKFdURk1v
dmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKICAgICB9CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAg
dm9pZCB3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5z
aW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgdm9pZCB3YXNDcmVhdGVk
KGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUmJiwgU3RyaW5nJiYgYXZhaWxhYmxlRXh0
ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CiAgICAgdm9pZCB3YXNMb3N0
KCk7CiAgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CiAKQEAgLTM2MCw4ICszNjAsOCBAQCBwcml2YXRl
OgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAg
IGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKICAgICBHQ0dMZW51bSBtX2Vycm9yV2hl
bkNvbnRleHRJc0xvc3QgPSBOT19FUlJPUjsKLQogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciB7IEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBt
X3N0cmVhbUNvbm5lY3Rpb247CiB9OwogCiAvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8gZm9sbG93
aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13
ZWJnbCBzY3JpcHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggYTdjNjQxMmFjOTQ2ZTI1OGNlMDEzOGJjNDdiYzM4NjIxOTUw
MjFkNy4uZjQzZWMwYTJlYWEzODRlNGVkZThkZDQ0MGQ5ZWZlMDI4YWNiN2JmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQog
CiBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50ZWQg
ewotICAgIHZvaWQgV2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyBhdmFpbGFibGVF
eHRlbnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zKQorICAgIHZvaWQgV2FzQ3Jl
YXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlIHN0cmVhbVdha2VVcFNlbWFwaG9y
ZSwgU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lv
bnMpCiAgICAgdm9pZCBXYXNMb3N0KCkKICAgICB2b2lkIFdhc0NoYW5nZWQoKQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5kZXggN2FhZDdkYTIwNzBkZTgz
ZDE0YzcxZGQ5ODI0NzRhYWYxMDZhN2RiNS4uZjEzNDFkY2QyNzZkMGMxMDFlNDRiZGRhMTdjZTQw
YjhhM2NiMzYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGli
V2ViUlRDTmV0d29yay5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ05ldHdvcmsuaAppbmRleCBiYmU3ZmMyNmNmMzIzNDY2OTVlNjFmZDAxZDZhMGIy
MzJkZTBkMTg4Li5hNjExZGFiZjRlYmI1NmU3YTQyNTk0ZGQ3YmQzYmIwYzgxYTVjODBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRD
TmV0d29yay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENOZXR3b3JrLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJMaWJXZWJSVENQcm92aWRlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1NvY2tldEZhY3Rvcnku
aCIKICNpbmNsdWRlICJXZWJNRE5TUmVnaXN0ZXIuaCIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3YTM0MDg4ZjBkZmUxOGZlN2IxMTRhYzFiMDM4
YmQ3OGIyNGMwMzBkLi40MGI1ZTg3NGUxMGFjMjAyNWU5ZjU1M2RhYmVmNjQ1NWVjODk2ZGY3IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMjEtMDItMDUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNv
bT4KKworICAgICAgICBXZWJHTCBHUFUgcHJvY2VzcyBJUEMgc2hvdWxkIHVzZSBzaGFyZWQgbWVt
b3J5IGZvciBhc3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIz
NDA2NTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFyayBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBtZXNzYWdlIHJlY2VpdmVyIGFzICJTdHJlYW0i
LAorICAgICAgICBhIG5ldyB2YXJpYW50IG9mIHJlY2VpdmVyLgorCisgICAgICAgICogU2NyaXB0
cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorCiAyMDIxLTAyLTE2ICBBbmRyZXMgR29uemFsZXogIDxh
bmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgbWFrZUpTQXJyYXkgaW4gYm90aCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjL0lPUy5tbS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bAppbmRleCA1Njg1ZTkwNzUzNTNmZDFkMmNlYTk0NjIwNmI1N2U0OGI0MjY2M2ZkLi44MzQ2Mjgy
MzQwMWMxNjgzMDcyMmFlYjM1NDVlY2ZlZWZiNjRhODgzIDEwMDc1NQotLS0gYS9Ub29scy9TY3Jp
cHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsCkBAIC04OSw3ICs4OSw3IEBAIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCiAg
ICAgdGVtcGxhdGVfcHJlYW1ibGUKICAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShXRUJHTCkKIAotbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90
UmVmQ291bnRlZCB7eworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVm
Q291bnRlZCBTdHJlYW0ge3sKICAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxh
eSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MDZlNzQ3OWEyZTY1OWUzYTc4MzA2ZDMwNGJkMjE5M2EwMjFmNjUyZS4uYWRhNWRjODcyNDQzYzc3
YWJhNGQyMzgwY2Y2MjhlNGEwNjc1ZWIwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAy
LTE3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
R0wgR1BVIHByb2Nlc3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9u
b3VzIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTk2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hcmsgZmV3IHRlc3RzIGFz
IG5vdCB0aW1pbmcgb3V0IG5vdyB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3Qgc28gc2xv
dy4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDIt
MTYgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W3NlbGVjdG9yc10gOmZvY3VzLXZpc2libGUgcGFyc2luZyBhbmQgZXhwZXJpbWVudGFsIGZsYWcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDNiOTBjMmFiYWMx
YWZlMzVkZjg2NGE0YWJiOTNhYmIwMDI5MGZhYTQuLmYzYWY5M2M1OTZjN2QzYTAxZGQ3MjkxYzkw
NGJkMmQwMGVmOTgwZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMzQsNyArMzQsNyBAQCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELW1zZS1mbGlw
WS10cnVlLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQtdmlk
ZW8tZmxpcFktZmFsc2UuaHRtbCBbIFRpbWVvdXQgXQogZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1h
Z2UyRC12aWRlby1mbGlwWS10cnVlLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvY2FudmFzL3dlYmds
L3RleHR1cmUtYWN0aXZlLWJpbmQuaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9jYW52YXMvd2ViZ2wv
dW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBUaW1lb3V0IF0KK2Zhc3QvY2FudmFzL3dlYmds
L3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgU2xvdyBdCiBmYXN0L2NhbnZhcy93ZWJnbC93
ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQogCiBmYXN0L2RvbS9uYXZp
Z2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2guaHRtbCBbIEZhaWx1cmUgXQpAQCAtMjMwLDcgKzIzMCw2
IEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQt
d2l0aC1jYW52YXMuaHRtbCBbIEZhaWx1cmUKIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVu
c2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVyZSBdCiB3ZWJn
bC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0
aC1jYW52YXMuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5z
aW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1cmUgXQot
d2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJhdy1jYWxscy5odG1sIFsg
VGltZW91dCBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNh
bGxzLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL2ds
LXBpeGVsc3RvcmVpLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXJnYjU2NS5odG1s
IFsgRmFpbHVyZSBdCkBAIC0yNDksNyArMjQ4LDcgQEAgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvdGV4LWltYWdlLXdlYmdsLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL3RleHBhcmFtZXRlci10ZXN0Lmh0bWwgWyBGYWlsdXJlIF0KIHdl
YmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtYWN0aXZlLWJpbmQtMi5odG1s
IFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLWFj
dGl2ZS1iaW5kLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3VuaWZv
cm1zL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgVGltZW91dCBdCit3ZWJnbC8xLjAuMy9j
b25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFNsb3cgXQog
d2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvY2FudmFzL2NhbnZhcy10ZXN0Lmh0bWwgWyBGYWlsdXJl
IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2NhbnZhcy9kcmF3LXN0YXRpYy13ZWJnbC10by1t
dWx0aXBsZS1jYW52YXMtdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3Jt
YW5jZS9jYW52YXMvZHJhdy13ZWJnbC10by1jYW52YXMtdGVzdC5odG1sIFsgRmFpbHVyZSBdCkBA
IC0yNjEsNyArMjYwLDYgQEAgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMt
dGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLWNhbnZhcy5o
dG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10
ZXh0dXJlLWhhbGYtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAu
MC9jb25mb3JtYW5jZS9yZWFkaW5nL3JlYWQtcGl4ZWxzLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQot
d2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJhdy1jYWxscy5odG1sIFsg
VGltZW91dCBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNh
bGxzLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL2Nh
bnZhcy90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmds
LzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11bnNpZ25l
ZF9zaG9ydF81XzZfNS5odG1sIFsgRmFpbHVyZSBdCkBAIC0yODcsNyArMjg1LDcgQEAgd2ViZ2wv
Mi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2ItcmdiLXVu
c2lnbmVkX3Nob3J0XzVfNl8KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmds
X2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBbIEZhaWx1cmUgXQog
d2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2Jh
LXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAu
MC9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYmEtcmdiYS11bnNp
Z25lZF9zaG9ydF81XzVfNV8xLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmdsLzIuMC4wL2NvbmZvcm1h
bmNlL3VuaWZvcm1zL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgVGltZW91dCBdCit3ZWJn
bC8yLjAuMC9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBb
IFNsb3cgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3JlYWRpbmcvcmVhZC1waXhlbHMtcGFj
ay1wYXJhbWV0ZXJzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9z
dGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXIxMWZfZzExZl9iMTBmLXJnYi1mbG9h
dC5odG1sIFsgRmFpbHVyZSBdCg==
</data>
<flag name="commit-queue"
          id="439289"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420684</attachid>
            <date>2021-02-17 11:26:37 -0800</date>
            <delta_ts>2021-02-17 11:48:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210217212635.patch</filename>
            <type>text/plain</type>
            <size>163667</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjNDg4MWE0MDdiNmI0NjYz
N2U1MzM0MGMyZGEwZmE5ZjQ2MGJiNDEuLmNkNmM5N2RkZjZlNjY1YjU5NTczZjMzY2ZmMWVmNTcz
M2FlMDdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2Vz
IGFuZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJl
Y2VpdmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNl
aXZlZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAg
cHJvY2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVu
dGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hy
b25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQg
dGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhh
dmluZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAg
IGluIHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0
IGluIGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBv
bmUgMm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJl
IHdpbGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24K
KyAgICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFy
IHRocmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJv
cHRpbWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAg
cHJvY2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2Ug
dG8gaGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGlj
aXBhdGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8g
c2FtZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1p
emF0aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFz
IHBhcnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAg
IEluIEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sg
cXVldWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQg
d2lsbCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24g
cGVyIGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAg
ICBTZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRp
b24gd2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYg
dGhlIG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUg
aXQgdGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91
dCBvZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9u
IGFycml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAg
ICBtZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2ls
bCBzdG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxs
IGNvbnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4g
cHJvY2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0
cmVhbSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1l
c3NhZ2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMg
c2VuZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0g
Y29ubmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9y
ZS4gVGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlz
IHdhaXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6
CisgICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAg
cG9pbnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAg
IC0gV2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2gg
fjYwZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVl
VW5pbml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4g
dGhlIHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0
aW9ucyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1
ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpzZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVl
dWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBtdWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0
aGUgSVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmls
aXR5IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xp
ZW50LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6
CisgICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNv
bnN0cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZm
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAo
SVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNw
ZWNpZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFy
ZSB1bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRo
cm91Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAg
ICAgVGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBp
cyByZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2Fz
ZSB3aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRo
ZSBzdHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAg
ICAgICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2Fr
ZXVwIHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNl
bWFwaG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24u
IEFsbCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2
ZSB0aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhl
eSBoYXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVz
dGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rp
b246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dCBjb25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0
YSB0aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVN
ZW1vcnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAo
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0
aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZl
ci4KKyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90
aCB0aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4K
KyAgICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1
cCwgdGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFs
bCB0aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAi
aG9sZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBv
ZiAiYnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAg
ICAgIGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBj
b250YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAg
ICAgRm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBw
cm9jZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUg
b2YgdGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwg
c2xlZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3
aWxsIHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdp
bGwgd2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9m
ZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXpl
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
cyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9j
ZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1l
c3NhZ2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUg
bWVzc2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRo
ZSBidWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRo
YXQgdGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1h
bCBJUEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3Nh
Z2UgdW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdT
dHJlYW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFz
CisgICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxs
IG1lc3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1l
c3NhZ2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAg
ICAgIGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUg
c3RyZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJ
UEMgbWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNz
ZWQuCisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0
aW9uSUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJl
YW0gbWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAg
ICAgIHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJl
YW1EZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVk
LgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZm
ZXI6OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5
bmNocm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToK
KyAgICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0
IG9mIHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6
On5TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZSk6CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVs
ZCBzaW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0x
NiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgYnVpbGQgZml4IGFmdGVyIHIyNzI5MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkNTc3ZTQzNDk5ZjE4
MTQ3OTFjOGEwZWY3MWNiMzRhMDI0YTFmYWUyLi5kYjc3MjM4MTQ0Y2E4YTMwZmY2ZWFjOWY4MmY1
YzQ5ZGNkMjFiMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2Rl
ckFWRlByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogewogICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0o
KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAgICAgIHJldHVybiBJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zMjYsMjEgKzMyNiwxMSBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAotR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RGTW92
ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25uZWN0
KCk7Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUo
c3RyZWFtKSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWJiMGQwMDhmM2Q3MTI5MjE3YjhlOTZl
ZmExOWJkNTFmZmFmYTE2Ny4uZDAyZTk3ODc3NTdjZDZmYzQ1YTlmOTg5NmU1YjExODdmOTViN2Jl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNz
aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKIAogI2luY2x1ZGUgPFdl
YkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWlu
Z01hbmFnZXIuaD4KQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtMjA2LDIwICsyMDcsMTAg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9Owog
I2VuZGlmCiAKLSAgICBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7Ci0gICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOwot
ICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoKTsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBI
YXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKKyAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKICNp
ZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBI
YXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CiAgICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKICNl
bmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDMwZjVjMjk4ODYyMTRmOTEwNGYxYWZhMDgzNWIyMzhhMzZkYzZlZjEuLmY2MzBi
MWJhZmUwZDJjMmVjNDAwMzdkOWE3YTdjNzIzZDI1OTk5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5n
QmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQ
Qzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgIHZvaWQgUmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRl
cywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQogICAgIHZvaWQg
UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNlbmRpZgogICAgIHZvaWQgQ2xlYXJO
b3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA3OWIzNDU5NmZi
ZjJkMGRmYzk4MTg2NTFiZGNmZWI0YjBhMGM4NzVkLi4xZDJmZWU3ZmUxNTE3ZGY3MTAwNzg5N2Ew
NTc1M2EwZGFmYzMwYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTMxLDU1ICsz
MSw3OSBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBvbmUgZ2xvYmFsIFdlYkdMIHByb2Nl
c3NpbmcgaW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiBy
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZT4gaW5zdGFuY2UoIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsKKyAgICByZXR1cm4gaW5zdGFuY2Uu
Z2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmIHN0cmVhbSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3RhbmNlLT5pbml0aWFsaXplKFdU
Rk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5jZTsKIH0KICNlbmRpZgogCi1S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0
KSkKLSAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKSkKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCisgICAgOiBt
X3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1
ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0gICAg
bV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwotICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9j
b250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOwotICAgIFN0
cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNp
b25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgZXh0ZW5zaW9u
cywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQogewotICAgIGlmIChhdXRvKiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgp
KQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAo
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgIEFTU0VSVCghbV9zdHJlYW1Db25uZWN0aW9uKTsKKyAgICBBU1NFUlQo
IW1fY29udGV4dCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxp
emUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFt
V29ya1F1ZXVlKCkuZGlzcGF0Y2goW2F0dHJpYnV0ZXMgPSBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPndvcmtRdWV1ZUluaXRpYWxpemUoV1RGTW92ZShhdHRyaWJ1dGVzKSk7CisgICAg
fSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlz
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLUdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnN0
b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21D
b25uZWN0aW9uKQogewotICAgIHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0
KCk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rp
b24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUo
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24pXSgp
IHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAg
fSk7CiB9CiAKLUlQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OndvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYgYXR0cmlidXRlcykKIHsKLSAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgcmV0dXJuICZn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykp
OworICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRo
aXMpOworICAgICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdy
YXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFC
TEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSwgZXh0ZW5zaW9ucywgcmVxdWVz
dGFibGVFeHRlbnNpb25zKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFsc2UsIElQQzo6U2VtYXBo
b3JlIHsgfSwgIiIsICIiKSk7CiB9CiAKLXVpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjp3b3JrUXVldWVVbmluaXRpYWxpemUoKQogewotICAgIHJldHVybiBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIG1fY29udGV4dCA9IG51bGxw
dHI7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKQEAgLTg4LDcgKzExMiw3IEBAIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Oldhc0xvc3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OnJlY3ljbGVDb250ZXh0KCkKQEAgLTk4LDcgKzEyMiw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKaW5kZXggMDAxNTlhYzhiNTg2YThiNjJhM2RkYTNhNTcwMDRlODgzZTE1
NmQwOC4uNTJlNDc2OTEwYTRlYWQwMDM5Y2UwYzFhYTU1ZTRmNDQ2YTA0OTU2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKLQorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CkBAIC00OSwzMSArNDgsMjEgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0KIC8vIEdQVSBwcm9j
ZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBH
cmFwaGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4
dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KIC8vIFRoZSBpbXBsZW1l
bnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbC4KLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCi0gICAgOiBw
dWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyCi0gICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgewor
Y2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBv
dmVycmlkZTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKIAotICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKyAgICAvLyBJUEM6
OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IHRlbXBsYXRl
IGNvbnRyYWN0IGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3Nh
Z2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgotICAgIElQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKLSAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwotCi0g
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgotICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgdm9pZCBpbml0
aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKIAogICAgIC8v
IEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkQ29tcG9z
aXRlKCkgZmluYWw7CkBAIC05NSw4ICs4NCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICNpbmNsdWRlICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKIAot
ICAgIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwotICAg
IFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOworICAgIHZvaWQgd29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtV29ya1F1ZXVl
SW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJikgeyB9Owor
ICAgIHZvaWQgd29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2UpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtQ29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOyB9CisKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj4gbV9zdHJlYW1Db25uZWN0aW9uOworICAg
IFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwogICAg
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCA3
YTE5MjVkYmIyN2FiZjNkMzAzNGNiN2ZjYjM4YTNmMzkzZTNkY2ZhLi40NzAyYzY0Zjc1ZTQ3NmNm
ZjFhMTAwMDUwNzU1MDk2YmRjZTc4OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9y
RGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggOGUyZDFmYzY1MTg2MjgzOTVl
OTc0MWM0NGU3YWM4NTFiMDhlZjYyNy4uYzRlNDExMjYxOTViMzUyOThhZWFmMmZjYWVmMjBhZGZi
NDMxZDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtMzksMTAg
KzM5LDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wsIHByaXZhdGUgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gewogcHVibGljOgotICAgIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EoKSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBv
dmVycmlkZXMuCisgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOwogICAgIHZvaWQgcHJlcGFyZUZv
ckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYp
IGZpbmFsOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3Zl
cnJpZGVzLgpAQCAtNTYsMTYgKzU3LDIzIEBAIHByaXZhdGU6CiAKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRl
cywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikK
K1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNv
bm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
YXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKSk7CisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3RhbmNlLT5pbml0
aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAot
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMs
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0
cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykpCitSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV1RGTW92
ZShzdHJlYW0pKQogewogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBs
YXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmJiBhdHRyaWJ1dGVzKQoreworICAgIG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKFdURk1vdmUoYXR0cmlidXRlcyksIHRoaXMpOwor
fQorCiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQogewogICAgIHJldHVybiBXVEZN
b3ZlKG1fZGlzcGxheUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMmM3NjI1
MTg2YWVlMTVkNzcyYjc2NGJkZDU1OWYwYTFjMjcwYmQ0MS4uNjIxMmVhMDRlOWQ4ZThlMGMxODZl
MTEyYTBiMzgwNzRjNWIxNDgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtODMsNyAr
ODMsNyBAQCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgp
CiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtyZW1vdGVSZXNvdXJjZUNhY2hlID0gV1RGTW92
ZShtX3JlbW90ZVJlc291cmNlQ2FjaGUpXSB7IH0pOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmRpc2Nvbm5lY3QoKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdG9w
TGlzdGVuaW5nRm9ySVBDKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaAppbmRleCBiN2FlZTI2Mjc3MDViYjlhY2MxMDE5ZDcxNTVlZjI3ZTE1
M2QyYjI4Li5hNGFhN2I0Nzg3NTVhOWJiNWUyOTNmZDFiYzgyOGNjZGZlMjQ5NDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJl
ZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURp
c3BsYXlMaXN0U2VtYXBob3JlKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KCk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKICAgICBSZW1vdGVSZXNvdXJj
ZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlOyB9CiAKQEAgLTc4LDggKzc5LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXROZXh0SXRl
bUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbik7CiAKLSAg
ICB2b2lkIGRpc2Nvbm5lY3QoKTsKLQogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciwgSVBDOjpTZW1hcGhvcmUmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggNDk3MTcxYjU2NDI2
ODkyODk1MjEwNmJkN2VlYTU0YmVlOTNiZWUyMy4uYjBjZjcwZjA2ZTExOGUwMjFkODY0ZGViOThk
NDE0ZWZiYTllN2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBV
U0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJOZXR3b3JrUlRDTW9uaXRvci5oIgogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAppbmRleCAzMjA3NmFmZDAy
YTg5OGExZTM5ZGUyODNlMTAyYjg1OTQ3ZjhlZGM3Li41MzM1MGY5ZjdjOGMxMmJlNjI3NTk5OWM3
ZWJmYzNjN2UwOTFiY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2Rlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNzUsNiArNzYsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBBcmd1bWVudENvZGVyIHsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihUKSwgYWxp
Z25vZihUKSk7CkBAIC05MSw2ICs5Myw3IEBAIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIFQgdmFsdWUp
CiAgICAgewogICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxUPihXVEY6OmVudW1Ub1Vu
ZGVybHlpbmdUeXBlPFQ+KHZhbHVlKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGIwYTQzZGU5ZDdhMTM3MjE2YTE5YmY3ZDBiZDVlMTkx
MTNiNWRhNjguLmFlZTg5ZTYyNjk2YzU2MGYwYTE4YmZiMWQ2NzY5MTY1MGU3ZmYyYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC0xMTEsNyArMTEyLDcgQEAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2Rl
cjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENTdHJpbmcKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBBcmd1bWVudENv
ZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKICAgICAvLyBTcGVjaWFsIGNhc2UgdGhlIG51bGwgc3RyaW5nLgpAQCAtMTMwLDYgKzEz
MSwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVsc2UKICAgICAgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5n
LmNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgYWxpZ25vZihVQ2hhcikp
OwogfQordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8RW5jb2Rl
cj4oRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxTdHJpbmc+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgogc3RhdGljIGlubGluZSBPcHRpb25hbDxTdHJpbmc+IGRlY29kZVN0cmluZ1RleHQo
RGVjb2RlciYgZGVjb2RlciwgdWludDMyX3QgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjBlYjE3YTBmZDgyNjBkNDBiZWM3ZmNkYWFl
YTIzYmM1ZTg2NWUwOS4uZjg1Njk4MDczZGQwNDViMjgxNmUxNjEwY2E0OTk2YTVkNGVlNmMyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC01NSw2
ICs1NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVBcmd1bWVudENvZGVy
IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4gewogICAgIHVzaW5nIEFycmF5UmVmZXJl
bmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKICAgICB7CiAgICAgICAgIGlm
ICghRXh0ZW50KQpAQCAtNzQsNiArNzUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
RXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBFeHRlbgogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxU
LCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJyYXlSZWZlcmVu
Y2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNl
KQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlS
ZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI2Niw2ICsyNjgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnBhaXI8VCwgVT4+IHsKIAog
dGVtcGxhdGU8c2l6ZV90IGluZGV4LCB0eXBlbmFtZS4uLiBFbGVtZW50cz4KIHN0cnVjdCBUdXBs
ZUVuY29kZXIgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+
JiB0dXBsZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8c2l6ZW9mLi4uKEVs
ZW1lbnRzKSAtIGluZGV4Pih0dXBsZSk7CkBAIC0yNzUsNiArMjc4LDcgQEAgc3RydWN0IFR1cGxl
RW5jb2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1cGxl
RW5jb2RlcjwwLCBFbGVtZW50cy4uLj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBzdGQ6OnR1cGxlPEVsZW1l
bnRzLi4uPiYpCiAgICAgewogICAgIH0KQEAgLTMzOCw2ICszNDIsNyBAQCBzdHJ1Y3QgVHVwbGVE
ZWNvZGVyPDA+IHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4geworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkKICAgICB7CiAgICAgICAgIFR1
cGxlRW5jb2RlcjxzaXplb2YuLi4oRWxlbWVudHMpLCBFbGVtZW50cy4uLj46OmVuY29kZShlbmNv
ZGVyLCB0dXBsZSk7CkBAIC0zNzQsNiArMzc5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlw
ZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6OktleVZhbHUK
IHRlbXBsYXRlPGJvb2wgZml4ZWRTaXplRWxlbWVudHMsIHR5cGVuYW1lIFQsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+
IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNh
cGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2RlcjxmYWxzZSwgVCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+
JiB2ZWN0b3IpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih2ZWN0b3Iuc2l6ZSgpKTsKQEAgLTQxMSw2ICs0MTcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90
IG1pbgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4gc3RydWN0IFZlY3Rv
ckFyZ3VtZW50Q29kZXI8dHJ1ZSwgVCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwg
bWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiB2ZWN0b3IpCiAgICAgewogICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2ZWN0b3Iuc2l6ZSgpKTsKQEAg
LTc1Myw2ICs3NjAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENTdHJpbmc+
IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3RyaW5nPiB7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFN0cmluZyYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGRl
Y29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IDhiNzQzMTRhYzA0YTU1YTQ4YmQwOTM2MjljMzYyMjA3MWUwZjJjNTAuLjFkMmVhNDg1
YTk5OGFlMjY0NDZhM2FlNjAwZTA0ZjMwY2E4ZTFkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIgpAQCAtOTMwLDggKzkzMSwxMyBAQCB2b2lkIENv
bm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKIAogdm9pZCBD
b25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSBt
ZXNzYWdlTmFtZSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCisgICAgaWYg
KCFSdW5Mb29wOjppc01haW4oKSkgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZU5hbWVdKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPmlzVmFsaWQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2NsaWVudC5kaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UocHJvdGVjdGVkVGhpcywgbWVzc2FnZU5hbWUpOworICAgICAgICB9
KTsKKyAgICB9CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDQ4NTUyMDEyNDdjMjVkZjg1NTJj
NWE1NGEwNDY3N2I4ZDcyYjgyY2EuLmZlOWNhMzE4NjA2ZmRlZGM2MWQyMWQwN2RmMGY4YWIxYmZl
OTNiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTMwLDEw
ICszMCw5IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgot
I2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSA8YXRvbWljPgor
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRp
b24uaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpA
QCAtMzEyLDYgKzMxMSw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBkaXNwYXRjaE1l
c3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJlY2VpdmVyJiwgc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+JiYpOworICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgorICAgIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUpOwogcHJpdmF0
ZToKICAgICBDb25uZWN0aW9uKElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCYpOwog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIpOwpAQCAtMzM5LDcgKzM0MCw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShEZWNvZGVyJik7CiAgICAgdm9pZCBk
aXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKICAgICB2b2lkIGRpZEZhaWxUb1NlbmRTeW5j
TWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCA4MGEwZjc1YzcwNTcyYmY0YzI0ODUy
NmZlZDJmZWZiMDk3Y2RjOGY5Li40ZGUwNTA5OGM0NjMyYWQ0NWY0ZTg1M2Y2N2U5ZWUzZTc3MTM2
ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAtOTAsNiArOTAs
MTcgQEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJTaXplLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGUKICAgICAgICAgbWFya0ludmFsaWQoKTsKIH0K
IAorRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1T
aXplLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgIDogbV9idWZmZXIgeyBzdHJlYW0gfQor
ICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CisgICAgLCBtX2J1ZmZlckVuZCB7IG1fYnVm
ZmVyICsgc3RyZWFtU2l6ZSB9CisgICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yKFtdIChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSB7IH0pCisgICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25J
RCkKK3sKKyAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkKKyAgICAgICAgcmV0dXJuOwor
fQorCiBEZWNvZGVyOjp+RGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1fYnVmZmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA2Njk4NWJjMzg3ZDc0MzkxMzcwMWIxMTdi
OTE4MDBiOWEyNzcxYWI4Li5iM2M2YWM4YTJkNWFjYmEyYzIxNTI4ZGZlYjE4YzY0MTVjZWRkMjJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC01MSw2ICs1MSw3IEBAIGNs
YXNzIERlY29kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQg
KCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRh
Y2htZW50PiYmKTsKICAgICBleHBsaWNpdCBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhf
dCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKKyAgICBEZWNvZGVyKGNvbnN0IHVp
bnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
OwogICAgIH5EZWNvZGVyKCk7CiAKICAgICBEZWNvZGVyKGNvbnN0IERlY29kZXImKSA9IGRlbGV0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCBlYThh
ZDQ1YzA5ZWI2ODJlMGU4NjIzYjkzNGQ1ZTBlOWM3MDI2MjJhLi45Mjk2M2UyMWUxZDcxN2Y2NGE4
MjE5YzUyODliYWYwNTNmMDk5NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFu
ZGxlTWVzc2FnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0xNjQsNiArMTY1LDI4IEBAIHZvaWQgaGFuZGxl
TWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IERlY29kZXImIGRlCiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUo
KmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9u
KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+Cit2
b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYg
Y29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3sK
KyAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElEKSB7CisgICAgICAgIGRlY29kZXIubWFy
a0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE9wdGlvbmFsPHR5cGVu
YW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwor
ICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAg
IGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHR5
cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtzeW5jUmVxdWVzdElE
LCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRh
YmxlIHsKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShzeW5jUmVxdWVzdElELCBh
cmdzLi4uKTsKKyAgICB9OworICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVu
dHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5k
bGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2Rlciwg
Qyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lM2EwNTZhMDIwMWMyYWQwZTc0OTBlYzdkN2ZlYmJkZDc3MTA5N2IxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZS5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKKworLy8g
U2NvcGVkIGhvbGRlciBmb3Igb2JqZWN0cyB0aGF0IGhhdmUgYWN0aXZlIG1lc3NhZ2UgcmVjZWl2
ZSBxdWV1ZXMuIEVuZm9yY2VzIHRoYXQKKy8vIG9uY2UgaG9sZGVyIHN0b3BzIGhvbGRpbmcgdGhl
IG9iamVjdCwgdGhlIG1lc3NhZ2UgcXVldWUgc2hvdWxkIGJlIHJlbW92ZWQuCisvLyBUaGUgY29u
dmVudGlvbiBpcyB0byBjYWxsIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKSBmb3IgdGhlIG9iamVjdC4K
Ky8vIE9wdGlvbmFsbHkgdGhlIG9iamVjdCBjYW4gb2J0YWluIHRoZSBvd25pbmcgcmVmZXJlbmNl
IHRoYXQgd2FzIHVzZWQgdG8gaG9sZCB0aGUgb2JqZWN0CisvLyBpbiBvcmRlciB0byBhdHRlbXB0
IHRvIGF2b2lkIG5lZWRsZXNzIGRlc3RydWN0aW9uIG9mIHRoZSBvYmplY3QgaW4gaG9sZGVyIHRo
cmVhZC4KKy8vIFRoaXMgdXNlZnVsIGluIHRoZSBjYXNlIHRoZSBzdG9wIGludm9rZXMgYSBjbGVh
bnVwIHRhc2sgaW4gdGhlIG1lc3NhZ2UgaGFuZGxlcgorLy8gdGhyZWFkLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEhvbGRlclR5cGUgPSBSZWZQdHI8VD4+CitjbGFzcyBTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlKCkgPSBkZWZhdWx0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgor
ICAgIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoVSYmIG9iamVjdCkKKyAgICAgICAg
OiBtX29iamVjdChXVEZNb3ZlKG9iamVjdCkpCisgICAgeworICAgIH0KKyAgICBTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUmJiBv
dGhlcikKKyAgICAgICAgOiBtX29iamVjdChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCBu
dWxscHRyKSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUmIG9wZXJhdG9yPShTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlJiYgb3RoZXIpCisg
ICAgeworICAgICAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgICAgIHJlc2V0KCk7
CisgICAgICAgICAgICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIG51
bGxwdHIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgflNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsK
KyAgICB9CisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAgICBpZiAoIW1fb2JqZWN0KQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZShtX29iamVjdCk7CisgICAgfQorICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0
LmdldCgpOyB9Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgc3RhdGlj
IGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0KSAtPiBkZWNsdHlw
ZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpLCB2
b2lkKCkpCisgICAgeworICAgICAgICBvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0
LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAg
IHN0YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9iamVjdCkgLT4g
ZGVjbHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKFdURk1vdmUob2JqZWN0KSksIHZv
aWQoKSkKKyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhXVEZNb3Zl
KG9iamVjdCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBh
dXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9iamVjdCkgLT4gZGVjbHR5cGUo
b2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKCksIHZvaWQoKSkKKyAgICB7CisgICAgICAgIG9i
amVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQygpOworICAgICAgICBvYmplY3QgPSBudWxscHRyOwor
ICAgIH0KKyAgICBIb2xkZXJUeXBlIG1fb2JqZWN0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoc3RkOjp1bmlxdWVfcHRyPFQ+JiYp
IC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwgc3RkOjp1bmlxdWVfcHRyPFQ+
PjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUoUmVmPFQ+JiYpIC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwgUmVmUHRy
PFQ+PjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGY1Y2RmMDA4ZTVhN2YyZDJmMTAyYTIz
NWMzYzIyNTE3MzM3NmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0
aW9uLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJl
YW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBzaXplKQor
ICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2J1ZmZlcihzaXplKQorewor
ICAgIC8vIFJlYWQgc3RhcnRzIGZyb20gMCB3aXRoIGxpbWl0IG9mIDAgYW5kIHJlYWRlciBzbGVl
cGluZy4KKyAgICBzaGFyZWRTZW5kZXJPZmZzZXQoKS5zdG9yZShTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVy
X3JlbGF4ZWQpOworICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAgd2l0aCBhIGxpbWl0IG9mIHRo
ZSB3aG9sZSBidWZmZXIuCisgICAgc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5zdG9yZSgwLCBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30KKwordm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUgPSBXVEZNb3ZlKHNlbWFwaG9y
ZSk7CisjZW5kaWYKKyAgICB3YWtlVXBSZWNlaXZlcigpOworfQorCit2b2lkIFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246Ondha2VVcFJlY2VpdmVyKCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBpZiAobV93YWtlVXBTZW1hcGhvcmUpCisgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLT5zaWdu
YWwoKTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRmZmZlZWYzYTA5OTVhMWIx
ODJhNWNmOWU4NjA3MDA5ODZiYzUxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDI0MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUg
IklQQ1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ci5oIgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgorbmFtZXNwYWNlIElQQyB7CisKKy8vIEEgbWVzc2FnZSBzdHJlYW0gaXMgYSBoYWxm
LWR1cGxleCB0d28td2F5IHN0cmVhbSBvZiBtZXNzYWdlcyB0byBhIGJldHdlZW4gYSBzZW5kZXIg
YW5kIHRoZQorLy8gZGVzdGluYXRpb24gcmVjZWl2ZXIuCisvLworLy8gU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbiBjYW4gc2VuZCBtZXNzYWdlcyBhbmQgcmVjZWl2ZSBzeW5jaHJvbm91cyByZXBsaWVz
CisvLyB0aHJvdWdoIHRoaXMgbWVzc2FnZSBzdHJlYW0gb3IgdGhyb3VnaCBJUEM6OkNvbm5lY3Rp
b24uCisvLworLy8gVGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdpbGwgcmVjZWl2ZSBtZXNzYWdl
cyBpbiBvcmRlciBfZm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdlc18uCisvLyBUaGUgd2hvbGUg
SVBDOjpDb25uZWN0aW9uIG1lc3NhZ2Ugb3JkZXIgaXMgbm90IHByZXNlcnZlZC4KKworY2xhc3Mg
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbik7CitwdWJsaWM6CisgICAgU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbihDb25uZWN0aW9uJiwgc2l6ZV90IGJ1ZmZlclNpemUpOworCisgICAgU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYgc3RyZWFtQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICB2b2lk
IHNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRp
ZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpOworCisgICAgdXNpbmcgU2Vu
ZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBt
ZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFNwYW4gewor
ICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXplX3Qgc2l6ZTsKKyAgICB9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdl
QWxpZ25tZW50OworICAgIGJvb2wgdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIHRpbWVvdXQpOworICAgIHZvaWQgc2VuZFBy
b2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmKTsKKworICAgIE9wdGlvbmFsPFNwYW4+IHRy
eUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KTsKKyAgICBlbnVtIGNsYXNzIFdha2VVcFJl
Y2VpdmVyIDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAgICBZZXMKKyAgICB9OworICAgIFdh
a2VVcFJlY2VpdmVyIHJlbGVhc2Uoc2l6ZV90IHdyaXRlU2l6ZSk7CisgICAgdm9pZCB3YWtlVXBS
ZWNlaXZlcigpOworCisgICAgU3BhbiBhbGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGltaXQpOworICAgIHNpemVfdCBzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7Cisg
ICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0OworCisg
ICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIud3JhcE9mZnNldChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBv
ZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1l
bnQ+KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBz
aGFyZWRTZW5kZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQor
ICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVm
ZmVyLnJlY2VpdmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQorCisgICAgQ29ubmVjdGlvbiYgbV9jb25uZWN0aW9u
OworICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgeyAwIH07CisKKyAgICBzaXpl
X3QgbV9zZW5kZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1
ZmZlcjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPcHRpb25hbDxTZW1hcGhvcmU+IG1fd2Fr
ZVVwU2VtYXBob3JlOworI2VuZGlmCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPgorYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCBPYmpl
Y3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBz
dGF0aWNfYXNzZXJ0KCFUOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CisgICAgTW9ub3Rv
bmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7
CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKGRlc3RpbmF0aW9uSUQudG9V
SW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1
dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4pCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB7CisgICAgICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNv
ZGVyIG1lc3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBzcGFuLT5kYXRhLCBzcGFuLT5zaXplIH07
CisgICAgICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpKSB7Cisg
ICAgICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2UobWVzc2FnZUVuY29kZXIuc2l6
ZSgpKTsKKyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAgICAgICAgICAgICB3YWtlVXBSZWNlaXZl
cigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgc2Vu
ZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOworICAgIGlmICghbV9j
b25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRCwgSVBDOjpTZW5k
T3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3Vs
dCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQpCit7CisgICAgc3RhdGljX2Fzc2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlz
IG5vdCBzeW5jISIpOworICAgIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0ID0gTW9ub3Rv
bmljVGltZTo6bm93KCkgKyB0aW1lb3V0OworICAgIGlmICghdHJ5U2VuZERlc3RpbmF0aW9uSURJ
Zk5lZWRlZChkZXN0aW5hdGlvbklELnRvVUludDY0KCksIGFic29sdXRlVGltZW91dCkpCisgICAg
ICAgIHJldHVybiB7IH07CisgICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZShhYnNvbHV0ZVRpbWVv
dXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50IHNlbmQgdGhyb3VnaCBzdHJlYW0uCisgICAgLy8gRklYTUU6IGltcGxlbWVudCBy
ZWNlaXZlIHRocm91Z2ggc3RyZWFtLgorICAgIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdl
KFdURk1vdmUoKnNwYW4pKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fY29ubmVjdGlvbi5zZW5kU3lu
YyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpLCB0aW1lb3V0KTsKKyAgICBBU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4gV1RGTW92ZShy
ZXN1bHQpOworfQorCitpbmxpbmUgYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5k
RGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1vbm90b25pY1Rp
bWUgYWJzb2x1dGVUaW1lb3V0KQoreworICAgIGlmIChkZXN0aW5hdGlvbklEID09IG1fY3VycmVu
dERlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGF1dG8gc3BhbiA9IHRy
eUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNvZGVyIHsgTWVzc2FnZU5h
bWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQsIHNwYW4tPmRhdGEsIHNwYW4tPnNpemUgfTsKKyAg
ICBpZiAoIShlbmNvZGVyIDw8IGRlc3RpbmF0aW9uSUQpKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAvLyBTaXplIG9mIHRoZSBtaW5pbXVtIGFsbG9jYXRpb24gaXMgaW5jb3JyZWN0
LiBMaWtlbHkgYW4gYWxpZ25tZW50IGlzc3VlLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShlbmNvZGVyLnNpemUoKSk7CisgICAg
aWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBSZWNlaXZl
cjo6WWVzKQorICAgICAgICB3YWtlVXBSZWNlaXZlcigpOworICAgIG1fY3VycmVudERlc3RpbmF0
aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgdm9p
ZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShT
cGFuJiYgc3BhbikKK3sKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNvZGVyIHsgTWVz
c2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UsIHNwYW4uZGF0YSwgc3Bhbi5zaXpl
IH07CisgICAgLy8gTm90IG5vdGlmeWluZyBvbiB3YWtlIHVwIHNpbmNlIHRoZSBvdXQtb2Ytc3Ry
ZWFtIG1lc3NhZ2Ugd2lsbCBkbyB0aGF0LgorICAgICh2b2lkKSByZWxlYXNlKGVuY29kZXIuc2l6
ZSgpKTsKK30KK2lubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKE1vbm90b25pY1RpbWUgdGltZW91dCkK
K3sKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNpemVfdCBzZW5kZXJMaW1pdCA9IGNsYW1wZWRM
aW1pdChzaGFyZWRSZWNlaXZlck9mZnNldCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWly
ZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fc2VuZGVyT2Zmc2V0LCBz
ZW5kZXJMaW1pdCk7CisgICAgICAgIGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6
ZSkgeworICAgICAgICAgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICAg
ICAgICAgIGlmIChub3cgPj0gdGltZW91dCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIHNpemVfdCBvbGRTZW5kZXJMaW1pdCA9IHNoYXJl
ZFJlY2VpdmVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHNlbmRlckxpbWl0LCBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyOjpyZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGluZ1RhZywgc3Rk
OjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAg
ICAgICAgICBpZiAoc2VuZGVyTGltaXQgPT0gb2xkU2VuZGVyTGltaXQpCisgICAgICAgICAgICAg
ICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLndhaXRGb3IodGltZW91dCAtIG5vdyk7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzZW5kZXJMaW1pdCA9IGNsYW1w
ZWRMaW1pdChvbGRTZW5kZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gYWxpZ25l
ZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKKyAgICAgICAgICAgIH0KKyNlbHNl
CisgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAg
ICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXplKQorICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworaW5saW5l
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVyIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnJlbGVhc2Uoc2l6ZV90IHNpemUpCit7CisgICAgc2l6ZSA9IHN0ZDo6bWF4KHNpemUs
IG1pbmltdW1NZXNzYWdlU2l6ZSk7CisgICAgc2l6ZV90IGV4cGVjdGVkUmVjZWl2ZXJMaW1pdCA9
IG1fc2VuZGVyT2Zmc2V0OworICAgIG1fc2VuZGVyT2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9m
ZnNldChtX3NlbmRlck9mZnNldCkgKyBzaXplKTsKKyAgICBBU1NFUlQobV9zZW5kZXJPZmZzZXQg
PCBkYXRhU2l6ZSgpKTsKKyAgICAvLyBJZiB0aGUgcmVjZWl2ZXIgd3JvdGUgb3ZlciB0aGUgc2Vu
ZGVyT2Zmc2V0IHdpdGggc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCB3ZSBrbm93
IGl0IGlzIHNsZWVwaW5nLgorICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVy
T2Zmc2V0KCkuZXhjaGFuZ2UobV9zZW5kZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9y
ZWwpOworICAgIGlmIChyZWNlaXZlckxpbWl0ICE9IGV4cGVjdGVkUmVjZWl2ZXJMaW1pdCkKKyAg
ICAgICAgcmV0dXJuIFdha2VVcFJlY2VpdmVyOjpZZXM7CisgICAgcmV0dXJuIFdha2VVcFJlY2Vp
dmVyOjpObzsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4gU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6YWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0
KQoreworICAgIEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBBU1NFUlQobGltaXQg
PCBkYXRhU2l6ZSgpKTsKKyAgICBzaXplX3QgYWxpZ25lZCA9IGFsaWduT2Zmc2V0KG9mZnNldCk7
CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSAwOworICAgIGlmIChvZmZzZXQgPCBsaW1pdCkgewor
ICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgJiYgYWxpZ25lZCA8IGxpbWl0KQorICAgICAg
ICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwgbGltaXQpCisgICAgICAg
ICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfQorICAgIHJldHVy
biB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30KKworaW5saW5lIHNpemVfdCBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkK
K3sKKyAgICBpZiAoIWxpbWl0KQorICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAtIDEgLSBvZmZz
ZXQ7CisgICAgaWYgKGxpbWl0IDw9IG9mZnNldCkKKyAgICAgICAgcmV0dXJuIGRhdGFTaXplKCkg
LSBvZmZzZXQ7CisgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0IC0gMTsKK30KKworaW5saW5lIHNp
emVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3Rl
ZExpbWl0KSBjb25zdAoreworICAgIEFTU0VSVCh1bnRydXN0ZWRMaW1pdCA8IChkYXRhU2l6ZSgp
IC0gMSkpOworICAgIHJldHVybiBzdGQ6Om1pbih1bnRydXN0ZWRMaW1pdCwgZGF0YVNpemUoKSAt
IDEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1Db25uZWN0aW9uQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNvbm5lY3Rpb25CdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NzlkYWJlNjg5YWQ0NjI4ZTUyZGJk
MWJhZTBmNjFmZTZkZTE2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IEZmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNw
YWNlIElQQyB7CisKK3N0YXRpYyBSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IGNyZWF0ZU1lbW9y
eShzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvIG1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5
OjphbGxvY2F0ZShzaXplKTsKKyAgICBpZiAoIW1lbW9yeSkKKyAgICAgICAgQ1JBU0goKTsKKyAg
ICByZXR1cm4gbWVtb3J5LnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK1N0cmVhbUNvbm5lY3Rpb25C
dWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoc2l6ZV90IG1lbW9yeVNpemUpCisgICAgOiBt
X2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisgICAgLCBtX3NoYXJlZE1lbW9y
eShjcmVhdGVNZW1vcnkobWVtb3J5U2l6ZSkpCit7Cit9CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYmIG1l
bW9yeSwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNlbmRlcldhaXRTZW1hcGhvcmUp
CisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisgICAgLCBtX3No
YXJlZE1lbW9yeShXVEZNb3ZlKG1lbW9yeSkpCisgICAgLCBtX3NlbmRlcldhaXRTZW1hcGhvcmUo
V1RGTW92ZShzZW5kZXJXYWl0U2VtYXBob3JlKSkKK3sKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3Ro
ZXIpID0gZGVmYXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6flN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIoKSA9IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXImIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3RoZXIp
Cit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgIG1fZGF0YVNpemUgPSBvdGhl
ci5tX2RhdGFTaXplOworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9IFdURk1vdmUob3RoZXIubV9z
aGFyZWRNZW1vcnkpOworICAgICAgICBtX3NlbmRlcldhaXRTZW1hcGhvcmUgPSBXVEZNb3ZlKG90
aGVyLm1fc2VuZGVyV2FpdFNlbWFwaG9yZSk7CisgICAgfQorICAgIHJldHVybiAqdGhpczsKK30K
Kwordm9pZCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBp
ZiAoIW1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwg
bV9zaGFyZWRNZW1vcnktPnNpemUoKSB9OworICAgIGVuY29kZXIgPDwgaXBjSGFuZGxlOworICAg
IGVuY29kZXIgPDwgbV9zZW5kZXJXYWl0U2VtYXBob3JlOworfQorCitPcHRpb25hbDxTdHJlYW1D
b25uZWN0aW9uQnVmZmVyPiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
PiBpcGNIYW5kbGU7CisgICAgZGVjb2RlciA+PiBpcGNIYW5kbGU7CisgICAgaWYgKCFpcGNIYW5k
bGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8U2VtYXBob3Jl
PiBzZW1hcGhvcmU7CisgICAgZGVjb2RlciA+PiBzZW1hcGhvcmU7CisgICAgaWYgKCFzZW1hcGhv
cmUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgc2l6ZV90IGRhdGFTaXplID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUtPmRhdGFTaXplKTsKKyAgICBpZiAoZGF0YVNp
emUgPCBoZWFkZXJTaXplKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0
byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS0+aGFu
ZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKyAgICBp
ZiAoc2hhcmVkTWVtb3J5LT5zaXplKCkgPCBkYXRhU2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7IHNoYXJlZE1lbW9y
eS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhU2l6ZSwgIFdURk1vdmUoKnNlbWFwaG9yZSkgfTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3N2YyY2IxZWMwNzkzNWZjYzgwYWQ1ZjI0NDRhZGVmZmIw
Mzk0NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1Db25uZWN0aW9uQnVmZmVyLmgKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUu
aCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSVBDIHsKKworLy8gU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciBpcyBhIHNoYXJlZCAiYmktcGFydGl0ZSIgY2lyY3VsYXIgYnVmZmVy
IHN1cHBvcnRpbmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdlcywgc3BlY2lmaWMgZGF0YSBh
bGlnbm1lbnQgd2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUuCisvLyBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uIGFuZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHVzZSBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyIHRvIGNvbW11bmljYXRlLgorLy8KKy8vIFRoZSAiYmktcGFydGl0ZSIgaXMgaGVyZSB0byBt
ZWFuIHRoYXQgd3JpdGVzIGFuZCByZWFkcyB0byB0aGUgYnVmZmVyIG11c3QgYmUKKy8vIGNvbnRp
bnVvdXMuCisvLworLy8gVGhlIGNsaWVudCAoc2VuZGVyIG9yIHJlY2VpdmVyKSAiYWNxdWlyZXMi
IHNvbWUgYW1vdW50IG9mIGJ1ZmZlciBkYXRhLiBJZiBidWZmZXIgaGFzIG5vCisvLyBjYXBhY2l0
eSwgYWNxdWlyZSByZXR1cm5zIHdpdGggemVybyBjYXBhY2l0eS4gSWYgYnVmZmVyIGhhcyBhdCBs
ZWFzdCBhY3F1aXJlZAorLy8gY2FwYWNpdHksIGFsbCB0aGUgYXZhaWxhYmxlIGNhcGFjaXR5IGlz
IHJldHVybmVkLgorLy8KKy8vIFRoZSBjbGllbnQgInJlbGVhc2VzIiB0aGUgc29tZSBhbW91bnQg
b2YgZGF0YSwgYXQgbGVhc3QgdGhlIGFtb3VudCBhY3F1aXJlZCBidXQgcG90ZW50aWFsbHkKKy8v
IG1vcmUuCisvLworLy8gQm90aCBzZW5kZXIgYW5kIHJlY2VpdmVyIG11c3QgYWNxdWlyZSBzYW1l
IGFtb3VudCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhlIGFjcXVpcmUgc2VxdWVuY2Uu
CisvLyBJZiBzZW5kZXIgYWNxdWlyZXMgWCBhbmQgdGhlbiBZIGFtb3VudCwgcmVjZWl2ZXIgbXVz
dCBkbyB0aGUgc2FtZS4KKy8vCisvLyBUaGUgY2lyY3VsYXIgYnVmZmVyIGhhcyBmb2xsb3dpbmcg
aW1wbGVtZW50YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRoZSBkYXRhIGJldHdlZW4gW3NlbmRl
ck9mZnNldCwgcmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9mZnNldCA9PQorLy8gcmVjZWl2
ZXJPZmZzZXQsIHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4KKy8vICogUmVjZWl2ZXIgb3ducyB0
aGUgZGF0YSBiZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVyT2Zmc2V0Wy4KKy8vICogVGhl
IGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhlIGxhc3QgdmFs
dWUgaXMgcmVzZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxs
LiBGSVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBpZgorLy8gaXQg
d291bGQgdXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9mIHRoZSBob2xlIGFzIHRoZSBpbmRp
Y2F0b3IuIFRoaXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWduZWRTcGFuIGltcGxlbWVudGF0aW9u
IHRvIHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgorLy8gKiBBbGwgYXRvbWljIHZhcmlhYmxl
IGxvYWRzIGFyZSB1bnRydXN0ZWQsIHNvIHRoZXkncmUgY2xhbXBlZC4gVmlvbGF0aW9ucyBhcmUg
bm90IHJlcG9ydGVkLAorLy8gdGhvdWdoLgorLy8gU2VlIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
LgorY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6ZSk7CisgICAgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOworICAgIH5TdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKCk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgb3BlcmF0b3I9KFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisKKyAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qg
b2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8PSBkYXRhU2l6ZSgp
KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBkYXRhU2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90
IG1lc3NhZ2VBbGlnbm1lbnQ+CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQs
IHNpemVfdCBhY3F1aXJlU2l6ZSkgY29uc3QKKyAgICB7CisgICAgICAgIG9mZnNldCA9IHJvdW5k
VXBUb011bHRpcGxlT2Y8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0KTsKKyAgICAgICAgaWYgKG9m
ZnNldCArIGFjcXVpcmVTaXplID49IGRhdGFTaXplKCkpCisgICAgICAgICAgICBvZmZzZXQgPSAw
OworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAgIEF0b21pYzxzaXplX3Q+JiBz
ZW5kZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZW5kZXJPZmZzZXQ7IH0KKyAgICBBdG9t
aWM8c2l6ZV90PiYgcmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5yZWNlaXZlck9m
ZnNldDsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1
aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBoZWFkZXJTaXplKCk7IH0KKyAgICBz
aXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTaXplOyB9CisgICAgU2VtYXBo
b3JlJiBzZW5kZXJXYWl0U2VtYXBob3JlKCkgeyByZXR1cm4gbV9zZW5kZXJXYWl0U2VtYXBob3Jl
OyB9CisKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6c2VuZGVyT2Zmc2V0IHdo
ZW4gcmVjZWl2ZXIgaXMgc2xlZXBpbmcsIGUuZy4gbm90IHJ1bm5pbmcuCisgICAgc3RhdGljIGNv
bnN0ZXhwciBzaXplX3Qgc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnID0gMSA8PCAz
MTsKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6cmVjZWl2ZXJPZmZzZXQgd2hl
biBzZW5kZXIgaXMgd2FpdGluZywgZS5nLiB3YWl0aW5nIG9uCisgICAgLy8gYSBzZW1hcGhvcmUu
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRp
bmdUYWcgPSAxIDw8IDMxOworCisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAg
IHN0YXRpYyBPcHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYp
OworCitwcml2YXRlOgorICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hh
cmVkTWVtb3J5PiYmLCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgc2VuZGVyV2FpdFNl
bWFwaG9yZSk7CisKKyAgICBzdHJ1Y3QgSGVhZGVyIHsKKyAgICAgICAgQXRvbWljPHNpemVfdD4g
cmVjZWl2ZXJPZmZzZXQ7CisgICAgICAgIC8vIFBhZGRpbmcgc28gdGhhdCB0aGUgdmFyaWFibGVz
IG1vc3RseSBhY2Nlc3NlZCBieSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGRvIG5vdCBzaGFyZSBhIGNh
Y2hlIGxpbmUuCisgICAgICAgIC8vIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBhdm9pZCBjYWNoZS1s
aW5lIGluZHVjZWQgcmVkdWN0aW9uIG9mIHBhcmFsbGVsIGFjY2Vzcy4KKyAgICAgICAgdWludDY0
X3QgY2FjaGVMaW5lUGFkZGluZ1syXTsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gc2VuZGVyT2Zm
c2V0OworICAgIH07CisgICAgSGVhZGVyJiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiAqcmVpbnRl
cnByZXRfY2FzdDxIZWFkZXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKTsgfQorICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGhlYWRlclNpemUoKSB7IHJldHVybiByb3VuZFVwVG9NdWx0aXBs
ZU9mPHNpemVvZihzdGQ6Om1heF9hbGlnbl90KT4oc2l6ZW9mKEhlYWRlcikpOyB9CisKKyAgICBz
aXplX3QgbV9kYXRhU2l6ZSB7IDAgfTsKKyAgICBSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IG1f
c2hhcmVkTWVtb3J5OworICAgIFNlbWFwaG9yZSBtX3NlbmRlcldhaXRTZW1hcGhvcmU7Cit9Owor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0
aW9uRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTIzMmRlY2Y2Yzc5M2E0NTc3MTY4ZTk3ZWZiNTFhYWZi
MzJmZGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXIuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
TWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3Bh
Y2UgSVBDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjsKKworLy8gSVBDIGVuY29kZXIgd2hpY2g6CisvLyAgLSBFbmNvZGVzIHRvIGEgY2FsbGVy
IGJ1ZmZlciB3aXRoIGZpeGVkIHNpemUsIGRvZXMgbm90IHJlc2l6ZSwgc3RvcHMgd2hlbiBzaXpl
IHJ1bnMgb3V0CisvLyAgLSBEb2VzIG5vdCBpbml0aWFsaXplIGFsaWdubWVudCBnYXBzCisvLwor
Y2xhc3MgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZmluYWwgeworcHVibGljOgorICAgIC8vIFN0
cmVhbSBtZXNzYWdlIG5lZWRzIHRvIGJlIGF0IGxlYXN0IHNpemUgb2YgU3RyZWFtU2V0RGVzdGlu
YXRpb25JRCBtZXNzYWdlLgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNz
YWdlU2l6ZSA9IHNpemVvZihNZXNzYWdlTmFtZSkgKyBzaXplb2YodWludDY0X3QpOworICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBhbGlnbm9mKE1lc3NhZ2VO
YW1lKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0gdHJ1ZTsKKwor
ICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50
OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1DYXBhY2l0eSkKKyAgICAgICAgOiBtX2J1ZmZlcihz
dHJlYW0pCisgICAgICAgICwgbV9idWZmZXJDYXBhY2l0eShzdHJlYW1DYXBhY2l0eSkKKyAgICB7
CisgICAgICAgICp0aGlzIDw8IG1lc3NhZ2VOYW1lOworICAgIH0KKworICAgIH5TdHJlYW1Db25u
ZWN0aW9uRW5jb2RlcigpID0gZGVmYXVsdDsKKworICAgIGJvb2wgZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQor
ICAgIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclBvaW50ZXIgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fYnVmZmVyICsgbV9lbmNvZGVkU2l6ZSkpOwor
ICAgICAgICBzaXplX3QgbmV3QnVmZmVyUG9pbnRlciA9IHJvdW5kVXBUb011bHRpcGxlT2YoYWxp
Z25tZW50LCBidWZmZXJQb2ludGVyKTsKKyAgICAgICAgaWYgKG5ld0J1ZmZlclBvaW50ZXIgPCBi
dWZmZXJQb2ludGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpbnRwdHJf
dCBhbGlnbmVkU2l6ZSA9IG1fZW5jb2RlZFNpemUgKyAobmV3QnVmZmVyUG9pbnRlciAtIGJ1ZmZl
clBvaW50ZXIpOworICAgICAgICBpZiAoIXJlc2VydmUoYWxpZ25lZFNpemUsIHNpemUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1aW50OF90KiBidWZmZXIgPSBtX2J1ZmZl
ciArIGFsaWduZWRTaXplOworICAgICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKKyAg
ICAgICAgbV9lbmNvZGVkU2l6ZSA9IGFsaWduZWRTaXplICsgc2l6ZTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBTdHJlYW1Db25u
ZWN0aW9uRW5jb2RlciYgb3BlcmF0b3I8PChUJiYgdCkKKyAgICB7CisgICAgICAgIEFyZ3VtZW50
Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4sIHZv
aWQ+OjplbmNvZGUoKnRoaXMsIHN0ZDo6Zm9yd2FyZDxUPih0KSk7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgQVNTRVJUKGlzVmFsaWQo
KSk7IHJldHVybiBtX2VuY29kZWRTaXplOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXJDYXBhY2l0eTsgfQorICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiBpc1ZhbGlkKCk7IH0KK3ByaXZhdGU6CisgICAgYm9vbCByZXNlcnZlKHNpemVfdCBhbGln
bmVkU2l6ZSwgc2l6ZV90IGFkZGl0aW9uYWxTaXplKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHNp
emUgPSBhbGlnbmVkU2l6ZSArIGFkZGl0aW9uYWxTaXplOworICAgICAgICBpZiAoc2l6ZSA8IGFs
aWduZWRTaXplIHx8IHNpemUgPiBtX2J1ZmZlckNhcGFjaXR5KSB7CisgICAgICAgICAgICBtX2J1
ZmZlckNhcGFjaXR5ID0gMDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgdWludDhfdCogbV9idWZmZXI7CisgICAg
c2l6ZV90IG1fYnVmZmVyQ2FwYWNpdHk7CisgICAgc2l6ZV90IG1fZW5jb2RlZFNpemUgeyAwIH07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTVi
NDQ5NGI3NGZkOTI4NTgwM2U0ZWEyZWY0OGMxMTczNjU5ZDcxZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
CkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKworbmFtZXNwYWNlIElQQyB7CisK
K1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUoY29u
c3QgY2hhciogbmFtZSkKKyAgICA6IG1fbmFtZShuYW1lKQoreworfQorCit2b2lkIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OmRpc3BhdGNoKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0
aW9uKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBt
X2Z1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOworICAgICAgICBBU1NFUlQoIW1f
c2hvdWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVk
LgorICAgIH0KKyAgICB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7CisKK30KK3ZvaWQgU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZSYgY29ubmVjdGlvbikKK3sKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICAgICAgbV9jb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbik7CisgICAgICAg
IEFTU0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5v
dCBzdXBwb3J0ZWQuCisgICAgfQorICAgIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQoKTsKK30KKwor
dm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpyZW1vdmVTdHJlYW1Db25uZWN0aW9uKFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChtX3By
b2Nlc3NpbmdUaHJlYWQpOworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwor
ICAgICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uKTsKKyAgICAgICAgQVNTRVJU
KCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBv
cnRlZC4KKyAgICB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUu
c2lnbmFsKCk7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpz
dG9wKCkKK3sKKyAgICBtX3Nob3VsZFF1aXQgPSB0cnVlOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIGlmICghbV9wcm9jZXNzaW5nVGhyZWFkKQorICAgICAgICByZXR1cm47CisgICAgbV93YWtl
VXBTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkLT53YWl0Rm9yQ29t
cGxldGlvbigpOworICAgIG1fcHJvY2Vzc2luZ1RocmVhZCA9IG51bGxwdHI7CisjZW5kaWYKK30K
Kwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXAoKQoreworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25hbCgpOworI2VuZGlmCit9CisK
K0lQQzo6U2VtYXBob3JlJiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXBTZW1hcGhv
cmUoKQoreworICAgIHJldHVybiBtX3dha2VVcFNlbWFwaG9yZTsKK30KKwordm9pZCBTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCkKK3sKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBpZiAobV9wcm9jZXNzaW5nVGhyZWFkKSB7CisgICAgICAgIG1fd2Fr
ZVVwU2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byB0YXNrID0gW3RoaXNdKCkgbXV0YWJsZSB7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAg
ICAgIHByb2Nlc3NTdHJlYW1zKCk7CisgICAgICAgICAgICBpZiAobV9zaG91bGRRdWl0KSB7Cisg
ICAgICAgICAgICAgICAgcHJvY2Vzc1N0cmVhbXMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3dha2VVcFNlbWFwaG9yZS53YWl0KCk7Cisg
ICAgICAgIH0KKyAgICB9OworICAgIG1fcHJvY2Vzc2luZ1RocmVhZCA9IFRocmVhZDo6Y3JlYXRl
KG1fbmFtZSwgV1RGTW92ZSh0YXNrKSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MsIFRocmVhZDo6UU9T
OjpVc2VySW50ZXJhY3RpdmUpOworI2VuZGlmCit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6cHJvY2Vzc1N0cmVhbXMoKQoreworICAgIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVs
dE1lc3NhZ2VMaW1pdCA9IDEwMDA7CisgICAgYm9vbCBoYXNNb3JlVG9Qcm9jZXNzID0gZmFsc2U7
CisgICAgZG8geworICAgICAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IGZ1bmN0aW9u
czsKKyAgICAgICAgSGFzaFNldDxSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+PiBjb25u
ZWN0aW9uczsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOworICAgICAgICAgICAgZnVuY3Rpb25zLnN3YXAobV9mdW5jdGlvbnMpOworICAgICAg
ICAgICAgY29ubmVjdGlvbnMgPSBtX2Nvbm5lY3Rpb25zOworICAgICAgICB9CisgICAgICAgIGZv
ciAoYXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbnMpCisgICAgICAgICAgICBXVEZNb3ZlKGZ1bmN0
aW9uKSgpOworCisgICAgICAgIGhhc01vcmVUb1Byb2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgZm9y
IChhdXRvJiBjb25uZWN0aW9uIDogY29ubmVjdGlvbnMpCisgICAgICAgICAgICBoYXNNb3JlVG9Q
cm9jZXNzIHw9IGNvbm5lY3Rpb24tPmRpc3BhdGNoU3RyZWFtTWVzc2FnZXMoZGVmYXVsdE1lc3Nh
Z2VMaW1pdCkgPT0gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6Okhhc01vcmVNZXNzYWdlczsK
KyAgICB9IHdoaWxlIChoYXNNb3JlVG9Qcm9jZXNzKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFmN2JhM2YzNDAyOTBmMzAyNGM1Yjg5YTBlYTNmODMwMDljZDgyNmMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRl
IDx3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNw
YWNlIElQQyB7CisKK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUgZmluYWwgOiBwdWJs
aWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlKGNvbnN0IGNoYXIqKTsKKyAgICB+U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSgpID0g
ZGVmYXVsdDsKKyAgICB2b2lkIGFkZFN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2UmKTsKKyAgICB2b2lkIHJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2UmKTsKKworICAgIHZvaWQgZGlzcGF0Y2goV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpOworCisgICAgdm9pZCB3YWtlVXAoKTsKKwor
ICAgIFNlbWFwaG9yZSYgd2FrZVVwU2VtYXBob3JlKCk7Citwcml2YXRlOgorICAgIHZvaWQgd2Fr
ZVVwUHJvY2Vzc2luZ1RocmVhZCgpOworICAgIHZvaWQgcHJvY2Vzc1N0cmVhbXMoKTsKKworICAg
IGNvbnN0IGNoYXIqIGNvbnN0IG1fbmFtZTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBTZW1h
cGhvcmUgbV93YWtlVXBTZW1hcGhvcmU7CisjZW5kaWYKKyAgICBSZWZQdHI8VGhyZWFkPiBtX3By
b2Nlc3NpbmdUaHJlYWQ7CisKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX3Nob3VsZFF1aXQgeyBm
YWxzZSB9OworCisgICAgTG9jayBtX2xvY2s7CisgICAgRGVxdWU8RnVuY3Rpb248dm9pZCgpPj4g
bV9mdW5jdGlvbnM7CisgICAgSGFzaFNldDxSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+
PiBtX2Nvbm5lY3Rpb25zOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTE0YjVkNTE3
ZjA2NzYzMzgyZjUxM2ZlNTUzNzUxYjZjMWIzMzJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCAr
MSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtLCBTdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29u
bmVjdGlvbikKKyAgICAsIG1fd29ya1F1ZXVlKHdvcmtRdWV1ZSkKKyAgICAsIG1fYnVmZmVyKFdU
Rk1vdmUoc3RyZWFtKSkKK3sKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6
c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNl
aXZlUXVldWUoKnRoaXMsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgbV93b3Jr
UXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJl
Y2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24t
PnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsK
KyAgICBtX3dvcmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKK30KKwordm9p
ZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYs
IHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmIG1lc3NhZ2UpCit7CisgICAgeworICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOworICAgICAg
ICBtX291dE9mU3RyZWFtTWVzc2FnZXMuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAgIH0K
KyAgICBtX3dvcmtRdWV1ZS53YWtlVXAoKTsKK30KKworT3B0aW9uYWw8U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OlNwYW4+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUo
KQoreworICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkubG9h
ZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICBpZiAocmVjZWl2ZXJMaW1pdCA9PSBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byByZXN1bHQgPSBhbGlnbmVk
U3BhbihtX3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0KTsKKyAgICBpZiAocmVzdWx0LnNp
emUgPCBtaW5pbXVtTWVzc2FnZVNpemUpIHsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IHNoYXJl
ZFNlbmRlck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhyZWNlaXZlckxpbWl0LCBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0
ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAg
ICAgICBBU1NFUlQoIShyZWNlaXZlckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2Vu
ZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKSk7CisgICAgICAgIHJlY2VpdmVyTGltaXQg
PSBjbGFtcGVkTGltaXQocmVjZWl2ZXJMaW1pdCk7CisgICAgICAgIHJlc3VsdCA9IGFsaWduZWRT
cGFuKG1fcmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworICAgIH0KKworICAgIGlmIChy
ZXN1bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZTo6cmVsZWFzZShzaXplX3QgcmVhZFNpemUpCit7CisgICAgQVNTRVJUKHJlYWRTaXpl
KTsKKyAgICByZWFkU2l6ZSA9IHN0ZDo6bWF4KHJlYWRTaXplLCBtaW5pbXVtTWVzc2FnZVNpemUp
OworICAgIHNpemVfdCByZWNlaXZlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9y
ZWNlaXZlck9mZnNldCkgKyByZWFkU2l6ZSk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBz
aXplX3Qgb2xkUmVjZWl2ZXJPZmZzZXQgPSBzaGFyZWRSZWNlaXZlck9mZnNldCgpLmV4Y2hhbmdl
KHJlY2VpdmVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAvLyBJZiB0
aGUgc2VuZGVyIHdyb3RlIG92ZXIgcmVjZWl2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBzZW5kZXIg
aXMgd2FpdGluZy4KKyAgICBpZiAob2xkUmVjZWl2ZXJPZmZzZXQgIT0gbV9yZWNlaXZlck9mZnNl
dCkKKyAgICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLnNpZ25hbCgpOworI2Vu
ZGlmCisKKyAgICBtX3JlY2VpdmVyT2Zmc2V0ID0gcmVjZWl2ZXJPZmZzZXQ7Cit9CisKK1N0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjph
bGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgQVNTRVJUKG9m
ZnNldCA8IGRhdGFTaXplKCkpOworICAgIEFTU0VSVChsaW1pdCA8IGRhdGFTaXplKCkpOworICAg
IHNpemVfdCBhbGlnbmVkID0gYWxpZ25PZmZzZXQob2Zmc2V0KTsKKyAgICBzaXplX3QgcmVzdWx0
U2l6ZSA9IDA7CisgICAgaWYgKG9mZnNldCA8IGxpbWl0KSB7CisgICAgICAgIGlmIChvZmZzZXQg
PD0gYWxpZ25lZCAmJiBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0g
c2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfSBlbHNlIGlmIChvZmZzZXQgPiBsaW1pdCkgewor
ICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgfHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAg
ICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0KKyAgICByZXR1
cm4geyBkYXRhKCkgKyBhbGlnbmVkLCByZXN1bHRTaXplIH07Cit9CisKK3NpemVfdCBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7
CisgICAgaWYgKG9mZnNldCA8PSBsaW1pdCkKKyAgICAgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0
OworICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gb2Zmc2V0OworfQorCitzaXplX3QgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNv
bnN0Cit7CisgICAgQVNTRVJUKHVudHJ1c3RlZExpbWl0IDwgKGRhdGFTaXplKCkgLSAxKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWluKHVudHJ1c3RlZExpbWl0LCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMjBiOTIxMzZmZjZiNmE5YjllMTk4ZGM5NzNiM2QzYTZlYTU2
NjI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMjgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgor
I2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRl
ICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVu
Y29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
OworCitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4sIHByb3RlY3RlZCBNZXNzYWdl
UmVjZWl2ZVF1ZXVlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZSk7CitwdWJsaWM6CisgICAgflN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKCkg
b3ZlcnJpZGUgPSBkZWZhdWx0OworCisgICAgQ29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0
dXJuIG1fY29ubmVjdGlvbjsgfQorCisgICAgZW51bSBEaXNwYXRjaFJlc3VsdCA6IGJvb2wgewor
ICAgICAgICBIYXNOb01lc3NhZ2VzLAorICAgICAgICBIYXNNb3JlTWVzc2FnZXMKKyAgICB9Owor
ICAgIHZpcnR1YWwgRGlzcGF0Y2hSZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3Qg
bWVzc2FnZUxpbWl0KSA9IDA7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+
CisgICAgdm9pZCBzZW5kU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50
cyYmLi4uKTsKKworcHJvdGVjdGVkOgorICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKElQ
Qzo6Q29ubmVjdGlvbiYsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZSYpOworCisgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIHZvaWQgc3RvcFJlY2Vpdmlu
Z01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisg
ICAgLy8gTWVzc2FnZVJlY2VpdmVRdWV1ZQorICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoQ29ubmVj
dGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmKSBmaW5hbDsKKworICAgIHN0cnVjdCBT
cGFuIHsKKyAgICAgICAgdWludDhfdCogZGF0YTsKKyAgICAgICAgc2l6ZV90IHNpemU7CisgICAg
fTsKKyAgICBPcHRpb25hbDxTcGFuPiB0cnlBcXVpcmUoKTsKKworICAgIHZvaWQgcmVsZWFzZShz
aXplX3QgcmVhZFNpemUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNz
YWdlU2l6ZSA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyOjptZXNzYWdlQWxpZ25tZW50OworICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAgICBzaXplX3Qgc2l6ZShzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3Rl
ZExpbWl0KSBjb25zdDsKKyAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci53cmFwT2Zmc2V0KG9mZnNldCk7IH0KKyAgICBzaXplX3QgYWxp
Z25PZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZz
ZXQ8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9CisgICAg
QXRvbWljPHNpemVfdD4mIHNoYXJlZFNlbmRlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNl
bmRlck9mZnNldCgpOyB9CisgICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0
KCkgeyByZXR1cm4gbV9idWZmZXIucmVjZWl2ZXJPZmZzZXQoKTsgfQorICAgIHVpbnQ4X3QqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3QgZGF0YVNp
emUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CisKKyAgICBSZWY8SVBD
OjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZSYgbV93b3JrUXVldWU7CisKKyAgICBzaXplX3QgbV9yZWNlaXZlck9mZnNldCB7IDAgfTsKKyAg
ICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIG1fYnVmZmVyOworCisgICAgTG9jayBtX291dE9mU3Ry
ZWFtTWVzc2FnZXNMb2NrOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9v
dXRPZlN0cmVhbU1lc3NhZ2VzOworCisgICAgZnJpZW5kIGNsYXNzIFN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cit2b2lkIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzZW5kU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1
ZXN0SUQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHNlbmRpbmcgdG8gYnVmZmVyLgorICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBD
OjpFbmNvZGVyPihJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVz
dElEKTsKKyAgICAoKmVuY29kZXIgPDwgLi4uIDw8IGFyZ3VtZW50cyk7CisgICAgbV9jb25uZWN0
aW9uLT5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2RlcikpOworfQorCisvLyBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uIHJlcHJlc2VudHMgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBzdHJlYW0gc2Vu
ZGVyIGFuZCByZWNlaXZlciwgYXMgdXNlZCBieSB0aGUgcmVjZWl2ZXIuCisvLyBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uOgorLy8gICogSG9sZHMgdGhlIG1lc3NhZ2VzIHRvd2FyZHMgdGhlIHJlY2Vp
dmVyLgorLy8gICogU2VuZHMgdGhlIHJlcGxpZXMgYmFjayB0byB0aGUgc2VuZGVyIHZpYSB0aGUg
c3RyZWFtIG9yIG5vcm1hbCBDb25uZWN0aW9uIGZhbGxiYWNrLgorLy8KKy8vIFJlY2VpdmVyIHRl
bXBsYXRlIGNvbnRyYWN0OgorLy8gICB2b2lkIGRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgRGVjb2RlciYpOworLy8KK3RlbXBsYXRlPHR5cGVuYW1l
IFJlY2VpdmVyPgorY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uPiBjcmVhdGUoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZSYgd29ya1F1ZXVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtR
dWV1ZSkpOworICAgIH0KKyAgICB+U3RyZWFtU2VydmVyQ29ubmVjdGlvbigpIGZpbmFsID0gZGVm
YXVsdDsKKworICAgIHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYsIFJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgLy8gU3RvcHMgdGhlIG1lc3Nh
Z2UgcmVjZWlwdC4gTm90ZTogYWxyZWFkeSByZWNlaXZlZCBtZXNzYWdlcyBtaWdodCBzdGlsbCBi
ZSBkZWxpdmVyZWQuCisgICAgdm9pZCBzdG9wUmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKworICAgIC8vIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlIG92ZXJyaWRlcy4KKyAgICBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1lc3Nh
Z2VzKHNpemVfdCBtZXNzYWdlTGltaXQpIGZpbmFsOworCitwcml2YXRlOgorICAgIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVl
KQorICAgICAgICA6IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKGNvbm5lY3Rpb24sIFdURk1v
dmUoc3RyZWFtQnVmZmVyKSwgd29ya1F1ZXVlKQorICAgIHsKKyAgICB9CisgICAgYm9vbCBwcm9j
ZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRChEZWNvZGVyJiYsIFJlZlB0cjxSZWNlaXZlcj4mIGN1
cnJlbnRSZWNlaXZlcik7CisgICAgYm9vbCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2UoRGVjb2RlciYm
LCBSZWNlaXZlciYpOworICAgIGJvb2wgZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2Rl
ciYmKTsKKyAgICBMb2NrIG1fcmVjZWl2ZXJzTG9jazsKKyAgICB1c2luZyBSZWNlaXZlcnNNYXAg
PSBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50NjRfdD4sIFJlZjxSZWNlaXZlcj4+Owor
ICAgIFJlY2VpdmVyc01hcCBtX3JlY2VpdmVyczsKKworICAgIHVpbnQ2NF90IG1fY3VycmVudERl
c3RpbmF0aW9uSUQgPSAwOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Cit2b2lk
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpzdGFydFJlY2VpdmluZ01lc3NhZ2Vz
KFJlY2VpdmVyJiByZWNlaXZlciwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCkKK3sKKyAgICB7CisgICAgICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3Bh
aXIoc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7Cisg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAg
QVNTRVJUKCFtX3JlY2VpdmVycy5jb250YWlucyhrZXkpKTsKKyAgICAgICAgbV9yZWNlaXZlcnMu
YWRkKGtleSwgbWFrZVJlZihyZWNlaXZlcikpOworICAgIH0KKyAgICBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0
aW5hdGlvbklEKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Cit2b2lkIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2
ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChyZWNlaXZl
ck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3Rh
dGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgIEFTU0VSVChtX3JlY2Vp
dmVycy5jb250YWlucyhrZXkpKTsKKyAgICBtX3JlY2VpdmVycy5yZW1vdmUoa2V5KTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+CitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6
RGlzcGF0Y2hSZXN1bHQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNo
U3RyZWFtTWVzc2FnZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkKK3sKKyAgICBSZWZQdHI8UmVjZWl2
ZXI+IGN1cnJlbnRSZWNlaXZlcjsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IFdURjo6aXNWYWxp
ZChSZWNlaXZlck5hbWUpLgorICAgIHVpbnQ4X3QgY3VycmVudFJlY2VpdmVyTmFtZSA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KFJlY2VpdmVyTmFtZTo6SW52YWxpZCk7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1lc3NhZ2VMaW1pdDsgKytpKSB7CisgICAgICAgIGF1dG8gc3BhbiA9IHRy
eUFxdWlyZSgpOworICAgICAgICBpZiAoIXNwYW4pCisgICAgICAgICAgICByZXR1cm4gRGlzcGF0
Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgIElQQzo6RGVjb2RlciBkZWNvZGVyIHsg
c3Bhbi0+ZGF0YSwgc3Bhbi0+c2l6ZSwgbV9jdXJyZW50RGVzdGluYXRpb25JRCB9OworICAgICAg
ICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRp
c3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6U2V0
U3RyZWFtRGVzdGluYXRpb25JRCkgeworICAgICAgICAgICAgaWYgKCFwcm9jZXNzU2V0U3RyZWFt
RGVzdGluYXRpb25JRChXVEZNb3ZlKGRlY29kZXIpLCBjdXJyZW50UmVjZWl2ZXIpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpIHsKKyAgICAgICAg
ICAgIGlmICghZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnJlbnRSZWNlaXZl
ck5hbWUgIT0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpKSB7CisgICAgICAgICAgICBjdXJyZW50UmVjZWl2ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgICAgICAgICAgY3VycmVu
dFJlY2VpdmVyID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNl
aXZlcikgeworICAgICAgICAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2Fz
dDx1aW50OF90PihjdXJyZW50UmVjZWl2ZXJOYW1lKSwgbV9jdXJyZW50RGVzdGluYXRpb25JRCk7
CisgICAgICAgICAgICBpZiAoIVJlY2VpdmVyc01hcDo6aXNWYWxpZEtleShrZXkpKSB7CisgICAg
ICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBEaXNwYXRj
aFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgICAgIGN1cnJlbnRS
ZWNlaXZlciA9IG1fcmVjZWl2ZXJzLmdldChrZXkpOworICAgICAgICB9CisgICAgICAgIGlmICgh
Y3VycmVudFJlY2VpdmVyKSB7CisgICAgICAgICAgICAvLyBWYWxpZCBzY2VuYXJpbyBpcyB3aGVu
IHJlY2VpdmVyIGhhcyBiZWVuIHJlbW92ZWQsIGJ1dCB0aGVyZSBhcmUgbWVzc2FnZXMgZm9yIGl0
IGluIHRoZSBidWZmZXIuCisgICAgICAgICAgICAvLyBGSVhNRTogU2luY2Ugd2UgZG8gbm90IGhh
dmUgYSByZWNlaXZlciwgd2UgZG9uJ3Qga25vdyBob3cgdG8gZGVjb2RlIHRoZSBtZXNzYWdlLgor
ICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSBtdXN0IHRpbWVvdXQgZXZlcnkgcmVjZWl2ZXIg
aW4gdGhlIHN0cmVhbSBjb25uZWN0aW9uLgorICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIGFz
c2VydCB0aGF0IHRoZSByZWNlaXZlcnMgYXJlIGVtcHR5LCBhcyB3ZSBvbmx5IGhhdmUgdXAgdG8g
b25lIHJlY2VpdmVyIGluCisgICAgICAgICAgICAvLyBhIHN0cmVhbSBjb25uZWN0aW9uIHVudGls
IHBvc3NpYmlsaXR5IG9mIHNraXBwaW5nIGlzIGltcGxlbWVudGVkIHByb3Blcmx5LgorICAgICAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICAg
ICAgQVNTRVJUKG1fcmVjZWl2ZXJzLmlzRW1wdHkoKSk7CisgICAgICAgICAgICByZXR1cm4gRGlz
cGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFkaXNw
YXRjaFN0cmVhbU1lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSwgKmN1cnJlbnRSZWNlaXZlcikpCisg
ICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgfQor
ICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTW9yZU1lc3NhZ2VzOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZl
cj46OnByb2Nlc3NTZXRTdHJlYW1EZXN0aW5hdGlvbklEKERlY29kZXImJiBkZWNvZGVyLCBSZWZQ
dHI8UmVjZWl2ZXI+JiBjdXJyZW50UmVjZWl2ZXIpCit7CisgICAgdWludDY0X3QgZGVzdGluYXRp
b25JRCA9IDA7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXN0aW5hdGlvbklEKSkgeworICAg
ICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYg
KG1fY3VycmVudERlc3RpbmF0aW9uSUQgIT0gZGVzdGluYXRpb25JRCkgeworICAgICAgICBtX2N1
cnJlbnREZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKKyAgICAgICAgY3VycmVudFJlY2Vp
dmVyID0gbnVsbHB0cjsKKyAgICB9CisgICAgcmVsZWFzZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQ
b3NpdGlvbigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVj
ZWl2ZXI+Citib29sIFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0
cmVhbU1lc3NhZ2UoRGVjb2RlciYmIGRlY29kZXIsIFJlY2VpdmVyJiByZWNlaXZlcikKK3sKKyAg
ICByZWNlaXZlci5kaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSgqdGhpcywgZGVjb2Rlcik7CisgICAg
aWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkgeworICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNo
RGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmVsZWFzZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQ
b3NpdGlvbigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVj
ZWl2ZXI+Citib29sIFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaE91
dE9mU3RyZWFtTWVzc2FnZShEZWNvZGVyJiYgZGVjb2RlcikKK3sKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4gbWVzc2FnZTsKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jayk7CisgICAgICAgIGlmIChtX291dE9mU3RyZWFt
TWVzc2FnZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBt
ZXNzYWdlID0gbV9vdXRPZlN0cmVhbU1lc3NhZ2VzLnRha2VGaXJzdCgpOworICAgIH0KKyAgICBp
ZiAoIW1lc3NhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxSZWNlaXZl
cj4gcmVjZWl2ZXI7CisgICAgeworICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIG1lc3Nh
Z2UtPmRlc3RpbmF0aW9uSUQoKSk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9y
ZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgcmVjZWl2ZXIgPSBtX3JlY2VpdmVycy5nZXQoa2V5KTsK
KyAgICB9CisgICAgaWYgKHJlY2VpdmVyKSB7CisgICAgICAgIHJlY2VpdmVyLT5kaWRSZWNlaXZl
U3RyZWFtTWVzc2FnZSgqdGhpcywgKm1lc3NhZ2UpOworICAgICAgICBpZiAoIW1lc3NhZ2UtPmlz
VmFsaWQoKSkgeworICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvLyBJZiByZWNlaXZlciBkb2VzIG5vdCBl
eGlzdCBpZiBpdCBoYXMgYmVlbiByZW1vdmVkIGJ1dCBtZXNzYWdlcyBhcmUgc3RpbGwgcGVuZGlu
ZyB0byBiZQorICAgIC8vIHByb2Nlc3NlZC4gSXQncyBvayB0byBza2lwIHN1Y2ggbWVzc2FnZXMu
CisgICAgLy8gRklYTUU6IE5vdGUsIGNvcnJlc3BvbmRpbmcgc2tpcCBpcyBub3QgcG9zc2libGUg
YXQgdGhlIG1vbWVudCBmb3Igc3RyZWFtIG1lc3NhZ2VzLgorICAgIHJlbGVhc2UoZGVjb2Rlci5j
dXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oCmluZGV4IDc4NTRmYThmMTg2
OGZiOGU0NTYyMjg5ZmRkZjZmMjc5NWFmMmQ5MGQuLjgzZDk5ZjBjYmM4ZmUwNDgyMGI0NzgzYzlj
MDc2YWI1N2EzZWFiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Nv
Y29hL01hY2hQb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFj
aFBvcnQuaApAQCAtMjUsOSArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCi0jaW5jbHVkZSAiRGVjb2Rl
ci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKIAogbmFtZXNwYWNlIElQQyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVkMDhjNzM5NzcwMjIyZmM1YzRj
NDZjMzM0NzhhYzEwMzAxYTk5ODguLmFjOWU3ODJlMjE4MzE4MWJjOTg1MzVkNWRlODRmZTgwNWFm
MDdlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjQs
OCArMjQsOSBAQCBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCByZQogaW1wb3J0IHN5cwogCitm
cm9tIG1vZGVsIGltcG9ydCBNZXNzYWdlUmVjZWl2ZXIsIE1lc3NhZ2UKIGZyb20gd2Via2l0IGlt
cG9ydCBwYXJzZXIKLWZyb20gd2Via2l0Lm1vZGVsIGltcG9ydCBCVUlMVElOX0FUVFJJQlVURSwg
QVNZTkNfQVRUUklCVVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEUsIE1BSU5USFJFQURDQUxMQkFD
S19BVFRSSUJVVEUKK2Zyb20gd2Via2l0Lm1vZGVsIGltcG9ydCBCVUlMVElOX0FUVFJJQlVURSwg
QVNZTkNfQVRUUklCVVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEUsIE1BSU5USFJFQURDQUxMQkFD
S19BVFRSSUJVVEUsIFNUUkVBTV9BVFRSSUJVVEUsIFdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRF
CiAKIF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01MywxMyArNTQsMTEgQEAgX2xpY2Vu
c2VfaGVhZGVyID0gIiIiLyoKIAogIiIiCiAKLVdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFID0g
J1dhbnRzQ29ubmVjdGlvbicKIFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFID0gJ1dh
bnRzRGlzcGF0Y2hNZXNzYWdlJwogV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJV
VEUgPSAnV2FudHNBc3luY0Rpc3BhdGNoTWVzc2FnZScKIExFR0FDWV9SRUNFSVZFUl9BVFRSSUJV
VEUgPSAnTGVnYWN5UmVjZWl2ZXInCiBOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUg
PSAnTm90UmVmQ291bnRlZCcKIAotCiBkZWYgcmVjZWl2ZXJfZW51bWVyYXRvcl9vcmRlcl9rZXko
cmVjZWl2ZXJfbmFtZSk6CiAgICAgaWYgcmVjZWl2ZXJfbmFtZSA9PSAnSVBDJzoKICAgICAgICAg
cmV0dXJuIDEKQEAgLTIxMSw3ICsyMTAsNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFy
YXRpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhh
bmRsZXJDYWxsVGhyZWFkOjpNYWluVGhyZWFkO1xuJykKICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJl
YWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFk
O1xuJykKLSAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJ
QlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAg
IGlmIChtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNz
YWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSkgYW5kIG5vdCByZWNlaXZlci5oYXNf
YXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBD
OjpDb25uZWN0aW9uJicpCiAgICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJzKToKICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlIGNvbXBsZXRpb25faGFuZGxlcl9w
YXJhbWV0ZXJzKQpAQCAtMjU5LDYgKzI1OCw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9m
b3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgcmV0dXJuIGZyb3plbnNldChbCiAgICAgICAgICdJUEM6
OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAnSVBDOjpGb250UmVmZXJlbmNlJywKKyAgICAgICAg
J0lQQzo6U2VtYXBob3JlJywKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAogICAgICAgICAnTWVk
aWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCkBAIC01NzEsMTAgKzU3MSwxNSBAQCBkZWYgc3lu
Y19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgIGRpc3BhdGNo
X2Z1bmN0aW9uICs9ICdBc3luYycKIAogICAgIHdhbnRzX2Nvbm5lY3Rpb24gPSBtZXNzYWdlLmhh
c19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1
dGUoV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUpCisgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9
ICIsICpyZXBseUVuY29kZXIiCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1f
QVRUUklCVVRFKToKKyAgICAgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9ICcnCisgICAgZWxpZiBt
ZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhh
c19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgbWF5YmVfcmVwbHlfZW5jb2Rl
ciA9ICcsIHJlcGx5RW5jb2RlcicKIAogICAgIHJlc3VsdCA9IFtdCiAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OiVzOjolczo6bmFt
ZSgpKSB7XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCi0gICAgcmVzdWx0LmFw
cGVuZCgnICAgICAgICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzZGVjb2RlciwgJXNyZXBs
eUVuY29kZXIsIHRoaXMsICYlcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5u
YW1lLCBtZXNzYWdlLm5hbWUsICdjb25uZWN0aW9uLCAnIGlmIHdhbnRzX2Nvbm5lY3Rpb24gZWxz
ZSAnJywgJycgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkg
b3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSkgZWxzZSAnKicsIGhhbmRs
ZXJfZnVuY3Rpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpKSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAg
ICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXNkZWNvZGVyJXMsIHRoaXMsICYlcyk7XG4n
ICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICdjb25u
ZWN0aW9uLCAnIGlmIHdhbnRzX2Nvbm5lY3Rpb24gZWxzZSAnJywgbWF5YmVfcmVwbHlfZW5jb2Rl
ciwgaGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQogICAgIHJlc3VsdC5hcHBl
bmQoJyAgICAgICAgcmV0dXJuO1xuJykKICAgICByZXN1bHQuYXBwZW5kKCcgICAgfVxuJykKICAg
ICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9uKCcnLmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5j
b25kaXRpb24pCkBAIC04NzQsNyArODc5LDcgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxl
cihyZWNlaXZlcik6CiAgICAgICAgIGlmIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25l
IGFuZCAobWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVz
c2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSkpOgogICAgICAgICAgICAgZGVsYXll
ZF9vcl9hc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkKIAotICAgIGlmIGRlbGF5ZWRfb3Jf
YXN5bmNfbWVzc2FnZXM6CisgICAgaWYgZGVsYXllZF9vcl9hc3luY19tZXNzYWdlcyBhbmQgbm90
IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ25hbWVzcGFjZSBNZXNzYWdlcyB7XG5cbm5hbWVzcGFjZSAlcyB7XG5cbicgJSBy
ZWNlaXZlci5uYW1lKQogCiAgICAgICAgIGZvciBtZXNzYWdlIGluIGRlbGF5ZWRfb3JfYXN5bmNf
bWVzc2FnZXM6CkBAIC05MjIsMjUgKzkyNyw0NCBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5k
bGVyKHJlY2VpdmVyKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFzeW5jX21lc3NhZ2Vz
LmFwcGVuZChtZXNzYWdlKQogCi0gICAgaWYgYXN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFz
X2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIu
aGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6Ci0g
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJlY2Vp
dmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lf
UkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkKKyAgICBpZiByZWNlaXZlci5oYXNfYXR0cmli
dXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpk
aWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUpKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQotICAgICAgICBpZiBub3QgcmVjZWl2ZXIuaGFz
X2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpOgorICAgICAgICBh
c3NlcnQocmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRS
SUJVVEUpKQorICAgICAgICBhc3NlcnQobm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNf
RElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKQorICAgICAgICBhc3NlcnQobm90IHJlY2VpdmVy
Lmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKQor
CisgICAgICAgIHJlc3VsdCArPSBbYXN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1l
c3NhZ2UpIGZvciBtZXNzYWdlIGluIGFzeW5jX21lc3NhZ2VzXQorICAgICAgICByZXN1bHQgKz0g
W3N5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGlu
IHN5bmNfbWVzc2FnZXNdCisKKyAgICAgICAgaWYgKHJlY2VpdmVyLnN1cGVyY2xhc3MpOgorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcykpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGRlY29k
ZXIpO1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oY29u
bmVjdGlvbik7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpO1xuJykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKyAgICBlbGlmIGFz
eW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVT
U0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElT
UEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgorICAgICAgICByZWNlaXZlX3ZhcmlhbnQgPSByZWNl
aXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJ
QlVURSkgZWxzZSAnJworICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZl
JXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlX3ZhcmlhbnQpKQorICAgICAgICByZXN1
bHQuYXBwZW5kKCd7XG4nKQorICAgICAgICBpZiBub3QgKHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUo
Tk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNfYXR0cmli
dXRlKFNUUkVBTV9BVFRSSUJVVEUpKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBh
dXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTtcbicpCiAKICAgICAgICAgcmVzdWx0
ICs9IFthc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3Nh
Z2UgaW4gYXN5bmNfbWVzc2FnZXNdCisKICAgICAgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0
ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJp
YnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CiAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKSlcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybjtcbicp
CiAgICAgICAgIGlmIChyZWNlaXZlci5zdXBlcmNsYXNzKToKLSAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7XG4n
ICUgKHJlY2VpdmVyLnN1cGVyY2xhc3MpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
ICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNl
aXZlci5zdXBlcmNsYXNzLCByZWNlaXZlX3ZhcmlhbnQpKQogICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTtcbicpCiAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpO1xuJykK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicp
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCiAKLSAgICBpZiBzeW5jX21lc3NhZ2VzIG9y
IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUp
OgorICAgIGlmIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpIGFu
ZCAoc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENI
X01FU1NBR0VfQVRUUklCVVRFKSk6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN5bmMlc01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJl
Y2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRU
UklCVVRFKSBlbHNlICcnKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CmluZGV4IDQ4
ZDhlMWI2MjdjYzMxYjE4ZmExYzUwZmFiZWVlZDk3MWJkMTViZTkuLmU4OWUxN2UxNDA3YjViNTY2
YmMxOTJjNDBhOTlhMjhkOGJmOGRjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQpAQCAtNDYsNiArNDYsOCBAQCBfdGVzdF9yZWNl
aXZlcl9uYW1lcyA9IFsKICAgICAnVGVzdFdpdGhJZk1lc3NhZ2UnLAogICAgICdUZXN0V2l0aFNl
bWFwaG9yZScsCiAgICAgJ1Rlc3RXaXRoSW1hZ2VEYXRhJywKKyAgICAnVGVzdFdpdGhTdHJlYW0n
LAorICAgICdUZXN0V2l0aFN0cmVhbUJ1ZmZlcicKIF0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tb2RlbC5weQppbmRleCA0ODAwZmE0ZWZjYTk2NzhhODlhZmM3ZTQzNGYyNmIzNDZjZThj
ZjZjLi41MDdlMDQyYTU3N2ZmOGEwMjMzNzJjM2E2MDdhYjEwOGE1ZmE5Njc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5CisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKQEAgLTI4LDYgKzI4LDggQEAgQlVJTFRJTl9BVFRS
SUJVVEUgPSAiQnVpbHRpbiIKIEFTWU5DX0FUVFJJQlVURSA9ICJBc3luYyIKIE1BSU5USFJFQURD
QUxMQkFDS19BVFRSSUJVVEUgPSAiTWFpblRocmVhZENhbGxiYWNrIgogU1lOQ0hST05PVVNfQVRU
UklCVVRFID0gJ1N5bmNocm9ub3VzJworU1RSRUFNX0FUVFJJQlVURSA9ICJTdHJlYW0iCitXQU5U
U19DT05ORUNUSU9OX0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24nCiAKIGNsYXNzIE1lc3Nh
Z2VSZWNlaXZlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdXBlcmNs
YXNzLCBhdHRyaWJ1dGVzLCBtZXNzYWdlcywgY29uZGl0aW9uKToKQEAgLTczLDcgKzc1LDkgQEAg
aXBjX3JlY2VpdmVyID0gTWVzc2FnZVJlY2VpdmVyKG5hbWU9IklQQyIsIHN1cGVyY2xhc3M9Tm9u
ZSwgYXR0cmlidXRlcz1bQlVJTFRJTl8KICAgICBNZXNzYWdlKCdXcmFwcGVkQXN5bmNNZXNzYWdl
Rm9yVGVzdGluZycsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEUsIFNZTkNI
Uk9OT1VTX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdTeW5jTWVz
c2FnZVJlcGx5JywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRp
dGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdJbml0aWFsaXplQ29ubmVjdGlvbicsIFtdLCBbXSwg
YXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249IlBMQVRGT1JNKENPQ09B
KSIpLAotICAgIE1lc3NhZ2UoJ0xlZ2FjeVNlc3Npb25TdGF0ZScsIFtdLCBbXSwgYXR0cmlidXRl
cz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSkKKyAgICBNZXNzYWdlKCdMZWdh
Y3lTZXNzaW9uU3RhdGUnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwg
Y29uZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2UoJ1NldFN0cmVhbURlc3RpbmF0aW9uSUQnLCBb
XSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAor
ICAgIE1lc3NhZ2UoJ1Byb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UnLCBbXSwgW10sIGF0dHJpYnV0
ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpCiBdLCBjb25kaXRpb249Tm9u
ZSkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01h
a2VmaWxlIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQppbmRl
eCAyMWIzMGFlMjBmYTEwMzNmYTY2NGUwM2FkYmQ4ODA4NmE2YzcyYzQyLi5lMTk3YmQzYzI2N2Fl
NDExYTQ1MDBkMGZmNjkzOTg2MDNhNDUwODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvTWFrZWZpbGUKQEAgLTYsNiArNiw4IEBAIFRFU1RTID0gXAogICAgIFRlc3RX
aXRoSWZNZXNzYWdlIFwKICAgICBUZXN0V2l0aFNlbWFwaG9yZSBcCiAgICAgVGVzdFdpdGhJbWFn
ZURhdGEgXAorCVRlc3RXaXRoU3RyZWFtIFwKKwlUZXN0V2l0aFN0cmVhbUJ1ZmZlciBcCiAjCiAK
IGFsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVz
c2FnZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2Fn
ZU5hbWVzLmNwcAppbmRleCA3ZDVhZmM5MThlNWIwNWI4ZjdhNWNkNjIzODUyYjVjMGUwYzE4YTAz
Li4yZTdjYTE1ZTc0ZWJiZGE4NmM3OWY4ZmMwYjhmMzhiNGI1Zjc1ODk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCkBAIC0x
MzQsNiArMTM0LDEwIEBAIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1lIG5hbWUp
CiAgICAgICAgIHJldHVybiAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iOwogICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZToKICAgICAgICAgcmV0dXJuICJMZWdhY3lTZXNzaW9u
U3RhdGUiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2U6
CisgICAgICAgIHJldHVybiAiUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSI7CisgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRDoKKyAgICAgICAgcmV0dXJuICJTZXRT
dHJlYW1EZXN0aW5hdGlvbklEIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJl
cGx5OgogICAgICAgICByZXR1cm4gIlN5bmNNZXNzYWdlUmVwbHkiOwogICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CkBAIC0yMjQs
NiArMjI4LDggQEAgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdl
TmFtZSkKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVz
OwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgogICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpQ
cm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlNldFN0cmVh
bURlc3RpbmF0aW9uSUQ6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseToK
ICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SVBDOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CkBAIC00MDEsNiArNDA3
LDEwIEBAIGJvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQog
I2VuZGlmCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OkxlZ2FjeVNl
c3Npb25TdGF0ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09
IElQQzo6TWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTZXRT
dHJlYW1EZXN0aW5hdGlvbklEKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmggYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmluZGV4IGVmZWEyMzAyZDY4N2Jl
NGY1MjI2OTBmNzhhM2M2NGY2MzZlMzFmZDguLmEyMmJkMWNmZDdmNzNiZTllYWIxY2JiYzBmZjBj
NmVmMDZhMDY0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvTWVzc2FnZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9NZXNzYWdlTmFtZXMuaApAQCAtOTMsNiArOTMsOCBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1l
IDogdWludDE2X3QgewogICAgICwgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1RvdWNoRXZlbnQKICAg
ICAsIEluaXRpYWxpemVDb25uZWN0aW9uCiAgICAgLCBMZWdhY3lTZXNzaW9uU3RhdGUKKyAgICAs
IFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UKKyAgICAsIFNldFN0cmVhbURlc3RpbmF0aW9uSUQK
ICAgICAsIFN5bmNNZXNzYWdlUmVwbHkKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5
bmNNZXNzYWdlUmVwbHkKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdl
V2l0aENvbm5lY3Rpb25SZXBseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmQwZjUyOGM2OWNkZWZkZGE5YzQ4Njc5MTM4YzYzOGI4YWMwY2IzMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjIFRlc3RzIFN0cmVhbSByZWNlaXZlciBhdHRyaWJ1dGUuCittZXNzYWdlcyAt
PiBUZXN0V2l0aFN0cmVhbSBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CisgICAgdm9pZCBTZW5kU3Ry
aW5nKFN0cmluZyB1cmwpCisgICAgdm9pZCBTZW5kU3RyaW5nU3luY2hyb25pemVkKFN0cmluZyB1
cmwpIC0+IChpbnQ2NF90IHJldHVybikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3Nh
Z2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjExNzBhYzg5YTI1ZjAzOTIxOWZlNDE4MTA1YjJjMWQwNGFlMGM3
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUZXN0cyBTdHJlYW0gcmVjZWl2
ZXIgYXR0cmlidXRlLgorbWVzc2FnZXMgLT4gVGVzdFdpdGhTdHJlYW1CdWZmZXIgIHsKKyAgICB2
b2lkIFNlbmRTdHJlYW1CdWZmZXIoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzljOTI0MGE0ZWIxYWI1NTc0MDk2MDIyOTFkYzEyNzMxOTg3ZjA1NAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhT
dHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1C
dWZmZXIuaCIKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdl
LmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUgIlRlc3RX
aXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQg
VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0g
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjpuYW1lKCkp
IHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1
ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtQnVm
ZmVyOjpzZW5kU3RyZWFtQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVT
RURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZm
ZXJNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEyNGViZGQyMDBmMzM5MDQ3N2Rm
YWY3Y2Q4NTcxOTFiZDUzYjI4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oCkBAIC0wLDAg
KzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVz
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyOworfQorCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFt
QnVmZmVyIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFt
QnVmZmVyOworfQorCitjbGFzcyBTZW5kU3RyZWFtQnVmZmVyIHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6
TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXI7IH0KKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRT
dHJlYW1CdWZmZXIoY29uc3QgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBzdHJlYW0pCisg
ICAgICAgIDogbV9hcmd1bWVudHMoc3RyZWFtKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBB
cmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1
bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307
CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyCit9IC8vIG5hbWVzcGFjZSBN
ZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg3ZmEyYWQ3ZDUwNjMwMGYzY2NiMzkwZjE5NzI1OWQ5MGU2OTNmMzMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNl
IFRlc3RXaXRoU3RyZWFtQnVmZmVyIHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVh
bUJ1ZmZlcgorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3Nh
Z2VSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM5ODg1NWFkNTZlOTUxOTk3YzlkMmFiM2Y4ODgw
OTRjODg5MjMyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVz
dFdpdGhTdHJlYW0uaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
RGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJUZXN0V2l0
aFN0cmVhbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFt
TWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUoKSkgeworICAgICAgICBJ
UEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nPihk
ZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmcpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpuYW1lKCkpIHsKKyAgICAgICAg
SVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5
bmNocm9uaXplZD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtOjpzZW5kU3RyaW5nU3lu
Y2hyb25pemVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVTRURfUEFSQU0oZGVj
b2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTBiZmViYWIyMzcyYzFmNjYwNWM1NTg5NDU5MzhiZjFlNGU3YWFmYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1NZXNzYWdlcy5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRo
U3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3Ry
ZWFtIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtOwor
fQorCitjbGFzcyBTZW5kU3RyaW5nIHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBz
dGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUg
bmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJp
bmc7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxp
Y2l0IFNlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHMo
dXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRl
OgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFNlbmRTdHJpbmdTeW5j
aHJvbml6ZWQgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29u
c3QgU3RyaW5nJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1
cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZ1N5bmNocm9uaXpl
ZDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1c2luZyBS
ZXBseSA9IHN0ZDo6dHVwbGU8aW50NjRfdCY+OworICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0g
c3RkOjp0dXBsZTxpbnQ2NF90PjsKKyAgICBleHBsaWNpdCBTZW5kU3RyaW5nU3luY2hyb25pemVk
KGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7Cisg
ICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbQorfSAv
LyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaCBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMmM1YTA3OGRlMDFlYzE0MzBmODk0ZjIwY2I5YzJmOTE1NWU3Y2FiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBUZXN0
V2l0aFN0cmVhbSB7CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0KK30gLy8gbmFt
ZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBmOWJhNWRjNzgyNGIxZTViMDNlNTNmOThi
N2E3ZjhlNGRlZjIxYzY0Li40NTg5MjZmMjViZDZkNTE2MmE3NTljZTBjNzNmOGVhMWViMTdkNWZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTE1MCw2ICsxNTAsMTAgQEAgUGxhdGZvcm0vSVBDL01lc3NhZ2VS
ZWNlaXZlck1hcC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAg
QG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgQG5vLXVuaWZ5CiBQ
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CitQbGF0
Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJl
bmNlLmNwcCBAbm8tdW5pZnkKIAogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
Y3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmgKaW5kZXggYzMzMDc4MjViMjAwODZkZWQ0Yzg2YzY0ODhjZTVkZDU3ZWMw
YzM1OC4uODk1MjA4YzNiYzIyNmQ2ZmIxMjg2MWRhNDM3Y2RhMzgxZjQ4ZDYzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQu
aCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcAppbmRleCAzMDFkMGVkODMwZGJlZDkwOGNiYjI3ODg2ZjA0YThmZWVhOWZk
ODllLi4yM2FiMTBkNjNhNGY0YTNmZDIwY2VkNGQ3MzAxNzNmNDc1ZGM3ZjVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiRHJh
d2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiSGFuZGxlTWVzc2FnZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwNjFhNjM3
ZGI5M2JiMGFmYzZkOWM2NTE2YzNkMDNlMjM1YjVjYzEuLmYwMDZlNTFhYjIzODMwODQ0MmUxNjQw
ZmY3ZThjNjU2NGU3M2Y0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTMyOCw2ICsxMzI4LDE2IEBACiAJCTdCNDgzRjIwMjVDRERB
OUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVz
c2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OwogCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0ODYgLyog
TWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2Vp
dmVRdWV1ZU1hcC5jcHAgKi87IH07CiAJCTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNz
YWdlUmVjZWl2ZVF1ZXVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVz
LmggKi87IH07CisJCTdCNzMxMjNBMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovOyB9
OworCQk3QjczMTIzQjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qjcz
MTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi87
IH07CisJCTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIz
MzI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9OworCQk3
QjczMTIzRDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNDI1Q0M4
NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi87IH07CisJCTdCNzMx
MjNFMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNTI1Q0M4NTI0
MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oICovOyB9OworCQk3QjczMTIz
RjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNjI1Q0M4NTI0MDAz
QjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi87IH07CisJCTdCNzMxMjQwMjVD
Qzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM3MjVDQzg1MjQwMDNCMjc5
NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJN0I3MzEyNDEyNUNDODUy
NTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CisJCTdCNzMxMjQyMjVDQzg1MjUwMDNCMjc5
NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25FbmNvZGVyLmggKi87IH07CisJCTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3OSAvKiBT
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkFCMTEwRjI1REQwMkIyMDA4RkM0NzkgLyogU2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBD
MkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5
NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1
QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZB
RTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0
aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtNDU0
MCw2ICs0NTUwLDE1IEBACiAJCTdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVj
ZWl2ZVF1ZXVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1l
c3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzEyNUND
ODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0I3MzEyMzMyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYg
LyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I3MzEyMzUyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNjI1
Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzcyNUNDODUyNDAwM0IyNzk2IC8qIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzkyNUNDODUyNTAwM0Iy
Nzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NjI1NEFGREVC
MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTQ3LDYgKzQ1NjYsNyBA
QAogCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNkQyNTUwMTA4QzAw
NkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAv
KiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC02OTg1LDEwICs3MDA1LDIwIEBACiAJCQkJMUEzRUVEMEQxNjFBNTM1MzAwQUVCNEY1
IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5oICovLAogCQkJCTFBQUIwMzc3MTg1QTdDNkEwMEVERjUw
MSAvKiBNZXNzYWdlU2VuZGVyLmNwcCAqLywKIAkJCQkxQUFCMDM3ODE4NUE3QzZBMDBFREY1MDEg
LyogTWVzc2FnZVNlbmRlci5oICovLAorCQkJCTdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBT
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8sCiAJCQkJMkRDMTgwMDFEOTBEREQx
NUZDNjk5MUE5IC8qIFNoYXJlZEJ1ZmZlckNvcHkuY3BwICovLAogCQkJCTVDQzVEQjkxMjE0ODhF
MTYwMDZDQjhBOCAvKiBTaGFyZWRCdWZmZXJDb3B5LmggKi8sCiAJCQkJMkRDMTg1NUVEQkZCODUw
QkEwQjZEMDZEIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwICovLAogCQkJCTJEQzE4
ODFBQ0JDQUI1RDU3QzVDNkVGMCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggKi8sCisJ
CQkJN0I3MzEyMzYyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3Bw
ICovLAorCQkJCTdCNzMxMjMzMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0
aW9uLmggKi8sCisJCQkJN0I3MzEyMzQyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuY3BwICovLAorCQkJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyLmggKi8sCisJCQkJN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi8sCisJCQkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovLAorCQkJCTdCNzMxMjM1MjVDQzg1
MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggKi8sCisJCQkJN0I3MzEy
MzcyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJ
CTdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi8s
CiAJCQkJMUFFMDBENjkxODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5jcHAgKi8s
CiAJCQkJMUFFMDBENkExODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oICovLAog
CQkJKTsKQEAgLTEyMDE4LDYgKzEyMDQ4LDcgQEAKIAkJCQlCQzJEMDIxNzEyQUM0MUNCMDBFNzMy
QTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QUI0QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9u
UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JBQjExMTAyNUREMDJCMzAwOEZDNDc5
IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0RDU0RDA0MjFGMUQ3MkQwMDdFM0MzNiAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlUmVtb3RlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3
QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY5MzFDMUMxOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMTIwNjcsNiArMTIwOTgsMTEg
QEAKIAkJCQk5MzZCMDU5ODIzMDM5MDk3MDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzNjhFRURGMjMwM0E5RUQwMEJEQjExQSAvKiBTdG9yYWdlTWFu
YWdlclNldE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjVGNEUwNjIzMEIyRTk1MDAz
Q0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3QjczMTIzQTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyNDIyNUNDODUyNTAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIz
RTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJN0I3MzEyNDEyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTAwRDZDMTgzMjdDMTIwMDA4N0RENyAvKiBT
dHJpbmdSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5NkJEODVEMTUwMTlCQzMwMDcx
RjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTg2MjJC
MzUxNkMwMDhEMEU4QiAvKiBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMTM4OTQsNiArMTM5MzAsMTAgQEAKIAkJCQk5M0Q2Qjc4MjI1NENDQ0Y0MDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUEzMzRERUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFw
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNjhFRURFMjMwM0E5MDIw
MEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3QjczMTIzRjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIzRDI1Q0M4NTI1MDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIzQjI1
Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3QjczMTI0MDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MzIxMkI2QTcxMDBGNDkzRkQgLyog
U3RyaW5nUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUxMjEyNkEyODIw
MDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFC
NzUyMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IGYyOWJlMDA2
ZWI3Yjk3NjRiNzgyZDkxNjI1YzgwMTYwZmY4ZjM2ZjMuLmIxOWJjMWUwYTAxOTA3ZjljZWRkNjBh
NTY1NzVmYWRmNWM5ZDg4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcApAQCAtNDgsMTMgKzQ4LDE2IEBAIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcykp
OwogfQogCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwg
MjE7CisKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25z
dCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQogICAgIDogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCiAgICAgLCBtX2dwdVByb2Nlc3NDb25uZWN0aW9u
KCZncHVQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihncHVQcm9j
ZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGRlZmF1bHRTdHJlYW1TaXplKQogewogICAgIGdw
dVByb2Nlc3NDb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7CiAgICAgZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKLSAgICBjb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSwgMCwg
SVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkpOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIG1fc3RyZWFtQ29ubmVjdGlvbi5zdHJlYW1CdWZmZXIoKSksIDAsIElQQzo6
U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsK
IH0KIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkoKQpAQCAtMTYzLDcgKzE2Niw3IEBAIEdDR0xlbnVtIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OmdldEVycm9yKCkKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Vycm9y
V2hlbkNvbnRleHRJc0xvc3QsIE5PX0VSUk9SKTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZhaWxh
YmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6
U2VtYXBob3JlJiYgc2VtYXBob3JlLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJp
bmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE3Miw2ICsxNzUsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcmJiBhdmFpbGFi
bAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVCghbV9kaWRJbml0aWFsaXplKTsK
KyAgICBtX3N0cmVhbUNvbm5lY3Rpb24uc2V0V2FrZVVwU2VtYXBob3JlKFdURk1vdmUoc2VtYXBo
b3JlKSk7CiAgICAgbV9kaWRJbml0aWFsaXplID0gdHJ1ZTsKICAgICBpbml0aWFsaXplKGF2YWls
YWJsZUV4dGVuc2lvbnMsIHJlcXVlc3RlZEV4dGVuc2lvbnMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCA4MzFiNGIwYWIxMzdlNmFhZjgzNTk2ZTBiMGEw
NzZkZjFlMDkxNzYxLi43ODk3ZjZjZmU4M2NlYzU1ZmZhMmY2M2E5NzRmYWE3ZjAxM2FhOTE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMjksMTAgKzI5LDEx
IEBACiAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNp
bmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAiU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHlCYXNlLmg+CkBAIC0zMzQsMTkgKzMzNSwxOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQm
JiBtZXNzYWdlKQogICAgIHsKLSAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNz
YWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgSVBDOjpTZW5k
T3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi5zZW5k
KFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFdBUk5f
VU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGNvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi5zZW5kU3luYyhXVEZN
b3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIGRlZmF1bHRTZW5kVGltZW91dCk7CiAgICAgfQogICAgIElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rp
b24oKTsgfQogCiBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAg
IHZvaWQgd2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVu
c2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIHZvaWQgd2FzQ3JlYXRl
ZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlJiYsIFN0cmluZyYmIGF2YWlsYWJsZUV4
dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOwogICAgIHZvaWQgd2FzTG9z
dCgpOwogICAgIHZvaWQgd2FzQ2hhbmdlZCgpOwogCkBAIC0zNjAsOCArMzYwLDggQEAgcHJpdmF0
ZToKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAg
ICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CiAgICAgR0NHTGVudW0gbV9lcnJvcldo
ZW5Db250ZXh0SXNMb3N0ID0gTk9fRVJST1I7Ci0KICAgICBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24g
bV9zdHJlYW1Db25uZWN0aW9uOwogfTsKIAogLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxv
d2luZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAt
d2ViZ2wgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGE3YzY0MTJhYzk0NmUyNThjZTAxMzhiYzQ3YmMzODYyMTk1
MDIxZDcuLmY0M2VjMGEyZWFhMzg0ZTRlZGU4ZGQ0NDBkOWVmZTAyOGFjYjdiZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KQEAg
LTIzLDcgKzIzLDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkK
IAogbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVk
IHsKLSAgICB2b2lkIFdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcgYXZhaWxhYmxl
RXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0Ny
ZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSBzdHJlYW1XYWtlVXBTZW1hcGhv
cmUsIFN0cmluZyBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNp
b25zKQogICAgIHZvaWQgV2FzTG9zdCgpCiAgICAgdm9pZCBXYXNDaGFuZ2VkKCkKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCmluZGV4IDdhYWQ3ZGEyMDcwZGU4
M2QxNGM3MWRkOTgyNDc0YWFmMTA2YTdkYjUuLmYxMzQxZGNkMjc2ZDBjMTAxZTQ0YmRkYTE3Y2U0
MGI4YTNjYjM2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIu
aApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ05ldHdvcmsuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9MaWJXZWJSVENOZXR3b3JrLmgKaW5kZXggYmJlN2ZjMjZjZjMyMzQ2Njk1ZTYxZmQwMWQ2YTBi
MjMyZGUwZDE4OC4uYTYxMWRhYmY0ZWJiNTZlN2E0MjU5NGRkN2JkM2JiMGM4MWE1YzgwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJU
Q05ldHdvcmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMv
TGliV2ViUlRDTmV0d29yay5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENTb2NrZXRGYWN0b3J5
LmgiCiAjaW5jbHVkZSAiV2ViTUROU1JlZ2lzdGVyLmgiCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2EzNDA4OGYwZGZlMThmZTdiMTE0YWMxYjAz
OGJkNzhiMjRjMDMwZC4uNDBiNWU4NzRlMTBhYzIwMjVlOWY1NTNkYWJlZjY0NTVlYzg5NmRmNyAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDIxLTAyLTA1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nlc3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1l
bW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcy
MzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1hcmsgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgbWVzc2FnZSByZWNlaXZlciBhcyAiU3RyZWFt
IiwKKyAgICAgICAgYSBuZXcgdmFyaWFudCBvZiByZWNlaXZlci4KKworICAgICAgICAqIFNjcmlw
dHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoKKwogMjAyMS0wMi0xNiAgQW5kcmVzIEdvbnphbGV6ICA8
YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIG1ha2VKU0FycmF5IGluIGJvdGgg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy9JT1MubW0uCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2Vi
Z2wKaW5kZXggNTY4NWU5MDc1MzUzZmQxZDJjZWE5NDYyMDZiNTdlNDhiNDI2NjNmZC4uODM0NjI4
MjM0MDFjMTY4MzA3MjJhZWIzNTQ1ZWNmZWVmYjY0YTg4MyAxMDA3NTUKLS0tIGEvVG9vbHMvU2Ny
aXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1
cC13ZWJnbApAQCAtODksNyArODksNyBAQCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlID0gKAog
ICAgIHRlbXBsYXRlX3ByZWFtYmxlCiAgICAgKyAiIiIjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoV0VCR0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5v
dFJlZkNvdW50ZWQge3sKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJl
ZkNvdW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMy
X3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3Bs
YXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDA2ZTc0NzlhMmU2NTllM2E3ODMwNmQzMDRiZDIxOTNhMDIxZjY1MmUuLmFkYTVkYzg3MjQ0M2M3
N2FiYTRkMjM4MGNmNjI4ZTRhMDY3NWViMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0w
Mi0xNyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdl
YkdMIEdQVSBwcm9jZXNzIElQQyBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIGFzeW5jaHJv
bm91cyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE5NjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM0MDY1MT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIGZldyB0ZXN0cyBh
cyBub3QgdGltaW5nIG91dCBub3cgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm90IHNvIHNs
b3cuCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTAy
LTE2ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtzZWxlY3RvcnNdIDpmb2N1cy12aXNpYmxlIHBhcnNpbmcgYW5kIGV4cGVyaW1lbnRhbCBmbGFn
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzYjkwYzJhYmFj
MWFmZTM1ZGY4NjRhNGFiYjkzYWJiMDAyOTBmYWE0Li5mM2FmOTNjNTk2YzdkM2EwMWRkNzI5MWM5
MDRiZDJkMDBlZjk4MGQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTM0LDcgKzM0LDcgQEAgZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyRC1tc2UtZmxp
cFktdHJ1ZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELXZp
ZGVvLWZsaXBZLWZhbHNlLmh0bWwgWyBUaW1lb3V0IF0KIGZhc3QvY2FudmFzL3dlYmdsL3RleElt
YWdlMkQtdmlkZW8tZmxpcFktdHJ1ZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2NhbnZhcy93ZWJn
bC90ZXh0dXJlLWFjdGl2ZS1iaW5kLmh0bWwgWyBGYWlsdXJlIF0KLWZhc3QvY2FudmFzL3dlYmds
L3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgVGltZW91dCBdCitmYXN0L2NhbnZhcy93ZWJn
bC91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFNsb3cgXQogZmFzdC9jYW52YXMvd2ViZ2wv
d2ViZ2xjb250ZXh0Y2hhbmdlZGV2ZW50Lmh0bWwgWyBUaW1lb3V0IF0KIAogZmFzdC9kb20vbmF2
aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTIzMCw3ICsyMzAs
NiBAQCB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0
LXdpdGgtY2FudmFzLmh0bWwgWyBGYWlsdXJlCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRl
bnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1cmUgXQogd2Vi
Z2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdp
dGgtY2FudmFzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVu
c2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0K
LXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tYW55LWRyYXctY2FsbHMuaHRtbCBb
IFRpbWVvdXQgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtb2JqZWN0LWdldC1j
YWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy9n
bC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90
ZXh0dXJlcy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1yZ2I1NjUuaHRt
bCBbIEZhaWx1cmUgXQpAQCAtMjQ5LDcgKzI0OCw3IEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNl
L3RleHR1cmVzL3RleC1pbWFnZS13ZWJnbC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9j
b25mb3JtYW5jZS90ZXh0dXJlcy90ZXhwYXJhbWV0ZXItdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLWFjdGl2ZS1iaW5kLTIuaHRt
bCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1h
Y3RpdmUtYmluZC5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS91bmlm
b3Jtcy91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFRpbWVvdXQgXQord2ViZ2wvMS4wLjMv
Y29uZm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBTbG93IF0K
IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2NhbnZhcy9jYW52YXMtdGVzdC5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9jYW52YXMvZHJhdy1zdGF0aWMtd2ViZ2wtdG8t
bXVsdGlwbGUtY2FudmFzLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9y
bWFuY2UvY2FudmFzL2RyYXctd2ViZ2wtdG8tY2FudmFzLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQpA
QCAtMjYxLDcgKzI2MCw2IEBAIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2Vz
LXRleHR1cmUtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9j
b25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0aC1jYW52YXMu
aHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMt
dGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4w
LjAvY29uZm9ybWFuY2UvcmVhZGluZy9yZWFkLXBpeGVscy10ZXN0Lmh0bWwgWyBGYWlsdXJlIF0K
LXdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tYW55LWRyYXctY2FsbHMuaHRtbCBb
IFRpbWVvdXQgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtb2JqZWN0LWdldC1j
YWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy9j
YW52YXMvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJn
bC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYi1yZ2ItdW5zaWdu
ZWRfc2hvcnRfNV82XzUuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMjg3LDcgKzI4NSw3IEBAIHdlYmds
LzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11
bnNpZ25lZF9zaG9ydF81XzZfCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJn
bF9jYW52YXMvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdi
YS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4w
LjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhLXJnYmEtdW5z
aWduZWRfc2hvcnRfNV81XzVfMS5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8yLjAuMC9jb25mb3Jt
YW5jZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFRpbWVvdXQgXQord2Vi
Z2wvMi4wLjAvY29uZm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwg
WyBTbG93IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9yZWFkaW5nL3JlYWQtcGl4ZWxzLXBh
Y2stcGFyYW1ldGVycy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIv
c3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8yLjAuMC9j
b25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxv
YXQuaHRtbCBbIEZhaWx1cmUgXQo=
</data>
<flag name="commit-queue"
          id="439297"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420687</attachid>
            <date>2021-02-17 11:46:09 -0800</date>
            <delta_ts>2021-02-18 00:11:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210217214607.patch</filename>
            <type>text/plain</type>
            <size>163638</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjNDg4MWE0MDdiNmI0NjYz
N2U1MzM0MGMyZGEwZmE5ZjQ2MGJiNDEuLmNkNmM5N2RkZjZlNjY1YjU5NTczZjMzY2ZmMWVmNTcz
M2FlMDdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2Vz
IGFuZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJl
Y2VpdmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNl
aXZlZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAg
cHJvY2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVu
dGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hy
b25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQg
dGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhh
dmluZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAg
IGluIHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0
IGluIGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBv
bmUgMm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJl
IHdpbGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24K
KyAgICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFy
IHRocmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJv
cHRpbWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAg
cHJvY2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2Ug
dG8gaGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGlj
aXBhdGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8g
c2FtZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1p
emF0aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFz
IHBhcnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAg
IEluIEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sg
cXVldWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQg
d2lsbCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24g
cGVyIGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAg
ICBTZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRp
b24gd2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYg
dGhlIG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUg
aXQgdGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91
dCBvZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9u
IGFycml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAg
ICBtZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2ls
bCBzdG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxs
IGNvbnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4g
cHJvY2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0
cmVhbSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1l
c3NhZ2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMg
c2VuZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0g
Y29ubmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9y
ZS4gVGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlz
IHdhaXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6
CisgICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAg
cG9pbnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAg
IC0gV2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2gg
fjYwZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVl
VW5pbml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4g
dGhlIHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0
aW9ucyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1
ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpzZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVl
dWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBtdWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0
aGUgSVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmls
aXR5IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xp
ZW50LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6
CisgICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNv
bnN0cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZm
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAo
SVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNw
ZWNpZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFy
ZSB1bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRo
cm91Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAg
ICAgVGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBp
cyByZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2Fz
ZSB3aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRo
ZSBzdHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAg
ICAgICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2Fr
ZXVwIHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNl
bWFwaG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24u
IEFsbCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2
ZSB0aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhl
eSBoYXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVz
dGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rp
b246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dCBjb25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0
YSB0aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVN
ZW1vcnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAo
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0
aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZl
ci4KKyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90
aCB0aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4K
KyAgICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1
cCwgdGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFs
bCB0aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAi
aG9sZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBv
ZiAiYnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAg
ICAgIGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBj
b250YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAg
ICAgRm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBw
cm9jZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUg
b2YgdGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwg
c2xlZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3
aWxsIHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdp
bGwgd2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9m
ZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXpl
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
cyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9j
ZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1l
c3NhZ2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUg
bWVzc2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRo
ZSBidWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRo
YXQgdGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1h
bCBJUEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3Nh
Z2UgdW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdT
dHJlYW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFz
CisgICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxs
IG1lc3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1l
c3NhZ2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAg
ICAgIGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUg
c3RyZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJ
UEMgbWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNz
ZWQuCisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0
aW9uSUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJl
YW0gbWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAg
ICAgIHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJl
YW1EZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVk
LgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZm
ZXI6OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5
bmNocm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToK
KyAgICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0
IG9mIHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6
On5TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZSk6CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVs
ZCBzaW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0x
NiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgYnVpbGQgZml4IGFmdGVyIHIyNzI5MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkNTc3ZTQzNDk5ZjE4
MTQ3OTFjOGEwZWY3MWNiMzRhMDI0YTFmYWUyLi5kYjc3MjM4MTQ0Y2E4YTMwZmY2ZWFjOWY4MmY1
YzQ5ZGNkMjFiMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2Rl
ckFWRlByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogewogICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0o
KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAgICAgIHJldHVybiBJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zMjYsMjEgKzMyNiwxMSBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAotR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RGTW92
ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25uZWN0
KCk7Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUo
c3RyZWFtKSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWJiMGQwMDhmM2Q3MTI5MjE3YjhlOTZl
ZmExOWJkNTFmZmFmYTE2Ny4uZDAyZTk3ODc3NTdjZDZmYzQ1YTlmOTg5NmU1YjExODdmOTViN2Jl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNz
aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKIAogI2luY2x1ZGUgPFdl
YkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWlu
Z01hbmFnZXIuaD4KQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtMjA2LDIwICsyMDcsMTAg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9Owog
I2VuZGlmCiAKLSAgICBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7Ci0gICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOwot
ICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoKTsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBI
YXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKKyAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKICNp
ZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBI
YXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CiAgICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKICNl
bmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDMwZjVjMjk4ODYyMTRmOTEwNGYxYWZhMDgzNWIyMzhhMzZkYzZlZjEuLmY2MzBi
MWJhZmUwZDJjMmVjNDAwMzdkOWE3YTdjNzIzZDI1OTk5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5n
QmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQ
Qzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgIHZvaWQgUmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRl
cywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQogICAgIHZvaWQg
UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNlbmRpZgogICAgIHZvaWQgQ2xlYXJO
b3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA3OWIzNDU5NmZi
ZjJkMGRmYzk4MTg2NTFiZGNmZWI0YjBhMGM4NzVkLi4xZDJmZWU3ZmUxNTE3ZGY3MTAwNzg5N2Ew
NTc1M2EwZGFmYzMwYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTMxLDU1ICsz
MSw3OSBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBvbmUgZ2xvYmFsIFdlYkdMIHByb2Nl
c3NpbmcgaW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiBy
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZT4gaW5zdGFuY2UoIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsKKyAgICByZXR1cm4gaW5zdGFuY2Uu
Z2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmIHN0cmVhbSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3RhbmNlLT5pbml0aWFsaXplKFdU
Rk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5jZTsKIH0KICNlbmRpZgogCi1S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0
KSkKLSAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKSkKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCisgICAgOiBt
X3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1
ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0gICAg
bV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwotICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9j
b250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOwotICAgIFN0
cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNp
b25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgZXh0ZW5zaW9u
cywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQogewotICAgIGlmIChhdXRvKiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgp
KQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAo
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgIEFTU0VSVCghbV9zdHJlYW1Db25uZWN0aW9uKTsKKyAgICBBU1NFUlQo
IW1fY29udGV4dCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxp
emUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFt
V29ya1F1ZXVlKCkuZGlzcGF0Y2goW2F0dHJpYnV0ZXMgPSBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPndvcmtRdWV1ZUluaXRpYWxpemUoV1RGTW92ZShhdHRyaWJ1dGVzKSk7CisgICAg
fSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlz
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLUdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnN0
b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21D
b25uZWN0aW9uKQogewotICAgIHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0
KCk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rp
b24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUo
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24pXSgp
IHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAg
fSk7CiB9CiAKLUlQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OndvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYgYXR0cmlidXRlcykKIHsKLSAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgcmV0dXJuICZn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykp
OworICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRo
aXMpOworICAgICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdy
YXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFC
TEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSwgZXh0ZW5zaW9ucywgcmVxdWVz
dGFibGVFeHRlbnNpb25zKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFsc2UsIElQQzo6U2VtYXBo
b3JlIHsgfSwgIiIsICIiKSk7CiB9CiAKLXVpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjp3b3JrUXVldWVVbmluaXRpYWxpemUoKQogewotICAgIHJldHVybiBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIG1fY29udGV4dCA9IG51bGxw
dHI7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKQEAgLTg4LDcgKzExMiw3IEBAIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Oldhc0xvc3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OnJlY3ljbGVDb250ZXh0KCkKQEAgLTk4LDcgKzEyMiw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKaW5kZXggMDAxNTlhYzhiNTg2YThiNjJhM2RkYTNhNTcwMDRlODgzZTE1
NmQwOC4uNTJlNDc2OTEwYTRlYWQwMDM5Y2UwYzFhYTU1ZTRmNDQ2YTA0OTU2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKLQorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CkBAIC00OSwzMSArNDgsMjEgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0KIC8vIEdQVSBwcm9j
ZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBH
cmFwaGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4
dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KIC8vIFRoZSBpbXBsZW1l
bnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbC4KLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCi0gICAgOiBw
dWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyCi0gICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgewor
Y2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBv
dmVycmlkZTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKIAotICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKyAgICAvLyBJUEM6
OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IHRlbXBsYXRl
IGNvbnRyYWN0IGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3Nh
Z2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgotICAgIElQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKLSAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwotCi0g
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgotICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgdm9pZCBpbml0
aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKIAogICAgIC8v
IEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkQ29tcG9z
aXRlKCkgZmluYWw7CkBAIC05NSw4ICs4NCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICNpbmNsdWRlICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKIAot
ICAgIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwotICAg
IFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOworICAgIHZvaWQgd29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtV29ya1F1ZXVl
SW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJikgeyB9Owor
ICAgIHZvaWQgd29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2UpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtQ29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOyB9CisKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj4gbV9zdHJlYW1Db25uZWN0aW9uOworICAg
IFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwogICAg
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCA3
YTE5MjVkYmIyN2FiZjNkMzAzNGNiN2ZjYjM4YTNmMzkzZTNkY2ZhLi40NzAyYzY0Zjc1ZTQ3NmNm
ZjFhMTAwMDUwNzU1MDk2YmRjZTc4OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9y
RGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggOGUyZDFmYzY1MTg2MjgzOTVl
OTc0MWM0NGU3YWM4NTFiMDhlZjYyNy4uYzRlNDExMjYxOTViMzUyOThhZWFmMmZjYWVmMjBhZGZi
NDMxZDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtMzksMTAg
KzM5LDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wsIHByaXZhdGUgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gewogcHVibGljOgotICAgIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EoKSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBv
dmVycmlkZXMuCisgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOwogICAgIHZvaWQgcHJlcGFyZUZv
ckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYp
IGZpbmFsOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3Zl
cnJpZGVzLgpAQCAtNTYsMTYgKzU3LDIzIEBAIHByaXZhdGU6CiAKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRl
cywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikK
K1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNv
bm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
YXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKSk7CisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3RhbmNlLT5pbml0
aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAot
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMs
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0
cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykpCitSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV1RGTW92
ZShzdHJlYW0pKQogewogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBs
YXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmJiBhdHRyaWJ1dGVzKQoreworICAgIG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKFdURk1vdmUoYXR0cmlidXRlcyksIHRoaXMpOwor
fQorCiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQogewogICAgIHJldHVybiBXVEZN
b3ZlKG1fZGlzcGxheUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMmM3NjI1
MTg2YWVlMTVkNzcyYjc2NGJkZDU1OWYwYTFjMjcwYmQ0MS4uNjIxMmVhMDRlOWQ4ZThlMGMxODZl
MTEyYTBiMzgwNzRjNWIxNDgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtODMsNyAr
ODMsNyBAQCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgp
CiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtyZW1vdGVSZXNvdXJjZUNhY2hlID0gV1RGTW92
ZShtX3JlbW90ZVJlc291cmNlQ2FjaGUpXSB7IH0pOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmRpc2Nvbm5lY3QoKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdG9w
TGlzdGVuaW5nRm9ySVBDKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaAppbmRleCBiN2FlZTI2Mjc3MDViYjlhY2MxMDE5ZDcxNTVlZjI3ZTE1
M2QyYjI4Li5hNGFhN2I0Nzg3NTVhOWJiNWUyOTNmZDFiYzgyOGNjZGZlMjQ5NDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJl
ZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURp
c3BsYXlMaXN0U2VtYXBob3JlKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KCk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKICAgICBSZW1vdGVSZXNvdXJj
ZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlOyB9CiAKQEAgLTc4LDggKzc5LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXROZXh0SXRl
bUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbik7CiAKLSAg
ICB2b2lkIGRpc2Nvbm5lY3QoKTsKLQogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciwgSVBDOjpTZW1hcGhvcmUmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggNDk3MTcxYjU2NDI2
ODkyODk1MjEwNmJkN2VlYTU0YmVlOTNiZWUyMy4uYjBjZjcwZjA2ZTExOGUwMjFkODY0ZGViOThk
NDE0ZWZiYTllN2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBV
U0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJOZXR3b3JrUlRDTW9uaXRvci5oIgogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAppbmRleCAzMjA3NmFmZDAy
YTg5OGExZTM5ZGUyODNlMTAyYjg1OTQ3ZjhlZGM3Li41MzM1MGY5ZjdjOGMxMmJlNjI3NTk5OWM3
ZWJmYzNjN2UwOTFiY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2Rlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNzUsNiArNzYsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBBcmd1bWVudENvZGVyIHsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihUKSwgYWxp
Z25vZihUKSk7CkBAIC05MSw2ICs5Myw3IEBAIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIFQgdmFsdWUp
CiAgICAgewogICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxUPihXVEY6OmVudW1Ub1Vu
ZGVybHlpbmdUeXBlPFQ+KHZhbHVlKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGIwYTQzZGU5ZDdhMTM3MjE2YTE5YmY3ZDBiZDVlMTkx
MTNiNWRhNjguLmFlZTg5ZTYyNjk2YzU2MGYwYTE4YmZiMWQ2NzY5MTY1MGU3ZmYyYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC0xMTEsNyArMTEyLDcgQEAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2Rl
cjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENTdHJpbmcKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBBcmd1bWVudENv
ZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKICAgICAvLyBTcGVjaWFsIGNhc2UgdGhlIG51bGwgc3RyaW5nLgpAQCAtMTMwLDYgKzEz
MSwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVsc2UKICAgICAgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5n
LmNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgYWxpZ25vZihVQ2hhcikp
OwogfQordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8RW5jb2Rl
cj4oRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxTdHJpbmc+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgogc3RhdGljIGlubGluZSBPcHRpb25hbDxTdHJpbmc+IGRlY29kZVN0cmluZ1RleHQo
RGVjb2RlciYgZGVjb2RlciwgdWludDMyX3QgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjBlYjE3YTBmZDgyNjBkNDBiZWM3ZmNkYWFl
YTIzYmM1ZTg2NWUwOS4uZjg1Njk4MDczZGQwNDViMjgxNmUxNjEwY2E0OTk2YTVkNGVlNmMyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC01NSw2
ICs1NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVBcmd1bWVudENvZGVy
IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4gewogICAgIHVzaW5nIEFycmF5UmVmZXJl
bmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKICAgICB7CiAgICAgICAgIGlm
ICghRXh0ZW50KQpAQCAtNzQsNiArNzUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
RXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBFeHRlbgogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxU
LCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJyYXlSZWZlcmVu
Y2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNl
KQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlS
ZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI2Niw2ICsyNjgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnBhaXI8VCwgVT4+IHsKIAog
dGVtcGxhdGU8c2l6ZV90IGluZGV4LCB0eXBlbmFtZS4uLiBFbGVtZW50cz4KIHN0cnVjdCBUdXBs
ZUVuY29kZXIgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+
JiB0dXBsZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8c2l6ZW9mLi4uKEVs
ZW1lbnRzKSAtIGluZGV4Pih0dXBsZSk7CkBAIC0yNzUsNiArMjc4LDcgQEAgc3RydWN0IFR1cGxl
RW5jb2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1cGxl
RW5jb2RlcjwwLCBFbGVtZW50cy4uLj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBzdGQ6OnR1cGxlPEVsZW1l
bnRzLi4uPiYpCiAgICAgewogICAgIH0KQEAgLTMzOCw2ICszNDIsNyBAQCBzdHJ1Y3QgVHVwbGVE
ZWNvZGVyPDA+IHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4geworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkKICAgICB7CiAgICAgICAgIFR1
cGxlRW5jb2RlcjxzaXplb2YuLi4oRWxlbWVudHMpLCBFbGVtZW50cy4uLj46OmVuY29kZShlbmNv
ZGVyLCB0dXBsZSk7CkBAIC0zNzQsNiArMzc5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlw
ZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6OktleVZhbHUK
IHRlbXBsYXRlPGJvb2wgZml4ZWRTaXplRWxlbWVudHMsIHR5cGVuYW1lIFQsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+
IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNh
cGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2RlcjxmYWxzZSwgVCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+
JiB2ZWN0b3IpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih2ZWN0b3Iuc2l6ZSgpKTsKQEAgLTQxMSw2ICs0MTcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90
IG1pbgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4gc3RydWN0IFZlY3Rv
ckFyZ3VtZW50Q29kZXI8dHJ1ZSwgVCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwg
bWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiB2ZWN0b3IpCiAgICAgewogICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2ZWN0b3Iuc2l6ZSgpKTsKQEAg
LTc1Myw2ICs3NjAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENTdHJpbmc+
IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3RyaW5nPiB7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFN0cmluZyYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGRl
Y29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IDhiNzQzMTRhYzA0YTU1YTQ4YmQwOTM2MjljMzYyMjA3MWUwZjJjNTAuLjFkMmVhNDg1
YTk5OGFlMjY0NDZhM2FlNjAwZTA0ZjMwY2E4ZTFkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIgpAQCAtOTMwLDggKzkzMSwxMyBAQCB2b2lkIENv
bm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKIAogdm9pZCBD
b25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSBt
ZXNzYWdlTmFtZSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCisgICAgaWYg
KCFSdW5Mb29wOjppc01haW4oKSkgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZU5hbWVdKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPmlzVmFsaWQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2NsaWVudC5kaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UocHJvdGVjdGVkVGhpcywgbWVzc2FnZU5hbWUpOworICAgICAgICB9
KTsKKyAgICB9CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDQ4NTUyMDEyNDdjMjVkZjg1NTJj
NWE1NGEwNDY3N2I4ZDcyYjgyY2EuLmZlOWNhMzE4NjA2ZmRlZGM2MWQyMWQwN2RmMGY4YWIxYmZl
OTNiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTMwLDEw
ICszMCw5IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgot
I2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSA8YXRvbWljPgor
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRp
b24uaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpA
QCAtMzEyLDYgKzMxMSw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBkaXNwYXRjaE1l
c3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJlY2VpdmVyJiwgc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+JiYpOworICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgorICAgIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUpOwogcHJpdmF0
ZToKICAgICBDb25uZWN0aW9uKElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCYpOwog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIpOwpAQCAtMzM5LDcgKzM0MCw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShEZWNvZGVyJik7CiAgICAgdm9pZCBk
aXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKICAgICB2b2lkIGRpZEZhaWxUb1NlbmRTeW5j
TWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCA4MGEwZjc1YzcwNTcyYmY0YzI0ODUy
NmZlZDJmZWZiMDk3Y2RjOGY5Li40ZGUwNTA5OGM0NjMyYWQ0NWY0ZTg1M2Y2N2U5ZWUzZTc3MTM2
ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAtOTAsNiArOTAs
MTcgQEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJTaXplLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGUKICAgICAgICAgbWFya0ludmFsaWQoKTsKIH0K
IAorRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1T
aXplLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgIDogbV9idWZmZXIgeyBzdHJlYW0gfQor
ICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CisgICAgLCBtX2J1ZmZlckVuZCB7IG1fYnVm
ZmVyICsgc3RyZWFtU2l6ZSB9CisgICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yKFtdIChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSB7IH0pCisgICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25J
RCkKK3sKKyAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkKKyAgICAgICAgcmV0dXJuOwor
fQorCiBEZWNvZGVyOjp+RGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1fYnVmZmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA2Njk4NWJjMzg3ZDc0MzkxMzcwMWIxMTdi
OTE4MDBiOWEyNzcxYWI4Li5iM2M2YWM4YTJkNWFjYmEyYzIxNTI4ZGZlYjE4YzY0MTVjZWRkMjJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC01MSw2ICs1MSw3IEBAIGNs
YXNzIERlY29kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQg
KCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRh
Y2htZW50PiYmKTsKICAgICBleHBsaWNpdCBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhf
dCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKKyAgICBEZWNvZGVyKGNvbnN0IHVp
bnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
OwogICAgIH5EZWNvZGVyKCk7CiAKICAgICBEZWNvZGVyKGNvbnN0IERlY29kZXImKSA9IGRlbGV0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCBlYThh
ZDQ1YzA5ZWI2ODJlMGU4NjIzYjkzNGQ1ZTBlOWM3MDI2MjJhLi45Mjk2M2UyMWUxZDcxN2Y2NGE4
MjE5YzUyODliYWYwNTNmMDk5NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFu
ZGxlTWVzc2FnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0xNjQsNiArMTY1LDI4IEBAIHZvaWQgaGFuZGxl
TWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IERlY29kZXImIGRlCiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUo
KmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9u
KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+Cit2
b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYg
Y29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3sK
KyAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElEKSB7CisgICAgICAgIGRlY29kZXIubWFy
a0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE9wdGlvbmFsPHR5cGVu
YW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwor
ICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAg
IGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHR5
cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtzeW5jUmVxdWVzdElE
LCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRh
YmxlIHsKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShzeW5jUmVxdWVzdElELCBh
cmdzLi4uKTsKKyAgICB9OworICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVu
dHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5k
bGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2Rlciwg
Qyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lM2EwNTZhMDIwMWMyYWQwZTc0OTBlYzdkN2ZlYmJkZDc3MTA5N2IxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZS5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKKworLy8g
U2NvcGVkIGhvbGRlciBmb3Igb2JqZWN0cyB0aGF0IGhhdmUgYWN0aXZlIG1lc3NhZ2UgcmVjZWl2
ZSBxdWV1ZXMuIEVuZm9yY2VzIHRoYXQKKy8vIG9uY2UgaG9sZGVyIHN0b3BzIGhvbGRpbmcgdGhl
IG9iamVjdCwgdGhlIG1lc3NhZ2UgcXVldWUgc2hvdWxkIGJlIHJlbW92ZWQuCisvLyBUaGUgY29u
dmVudGlvbiBpcyB0byBjYWxsIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKSBmb3IgdGhlIG9iamVjdC4K
Ky8vIE9wdGlvbmFsbHkgdGhlIG9iamVjdCBjYW4gb2J0YWluIHRoZSBvd25pbmcgcmVmZXJlbmNl
IHRoYXQgd2FzIHVzZWQgdG8gaG9sZCB0aGUgb2JqZWN0CisvLyBpbiBvcmRlciB0byBhdHRlbXB0
IHRvIGF2b2lkIG5lZWRsZXNzIGRlc3RydWN0aW9uIG9mIHRoZSBvYmplY3QgaW4gaG9sZGVyIHRo
cmVhZC4KKy8vIFRoaXMgdXNlZnVsIGluIHRoZSBjYXNlIHRoZSBzdG9wIGludm9rZXMgYSBjbGVh
bnVwIHRhc2sgaW4gdGhlIG1lc3NhZ2UgaGFuZGxlcgorLy8gdGhyZWFkLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEhvbGRlclR5cGUgPSBSZWZQdHI8VD4+CitjbGFzcyBTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlKCkgPSBkZWZhdWx0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgor
ICAgIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoVSYmIG9iamVjdCkKKyAgICAgICAg
OiBtX29iamVjdChXVEZNb3ZlKG9iamVjdCkpCisgICAgeworICAgIH0KKyAgICBTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUmJiBv
dGhlcikKKyAgICAgICAgOiBtX29iamVjdChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCBu
dWxscHRyKSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUmIG9wZXJhdG9yPShTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlJiYgb3RoZXIpCisg
ICAgeworICAgICAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgICAgIHJlc2V0KCk7
CisgICAgICAgICAgICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIG51
bGxwdHIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgflNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsK
KyAgICB9CisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAgICBpZiAoIW1fb2JqZWN0KQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZShtX29iamVjdCk7CisgICAgfQorICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0
LmdldCgpOyB9Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgc3RhdGlj
IGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0KSAtPiBkZWNsdHlw
ZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpLCB2
b2lkKCkpCisgICAgeworICAgICAgICBvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0
LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAg
IHN0YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9iamVjdCkgLT4g
ZGVjbHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKFdURk1vdmUob2JqZWN0KSksIHZv
aWQoKSkKKyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhXVEZNb3Zl
KG9iamVjdCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBh
dXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9iamVjdCkgLT4gZGVjbHR5cGUo
b2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKCksIHZvaWQoKSkKKyAgICB7CisgICAgICAgIG9i
amVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQygpOworICAgICAgICBvYmplY3QgPSBudWxscHRyOwor
ICAgIH0KKyAgICBIb2xkZXJUeXBlIG1fb2JqZWN0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoc3RkOjp1bmlxdWVfcHRyPFQ+JiYp
IC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwgc3RkOjp1bmlxdWVfcHRyPFQ+
PjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUoUmVmPFQ+JiYpIC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwgUmVmUHRy
PFQ+PjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGY1Y2RmMDA4ZTVhN2YyZDJmMTAyYTIz
NWMzYzIyNTE3MzM3NmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0
aW9uLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJl
YW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBzaXplKQor
ICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2J1ZmZlcihzaXplKQorewor
ICAgIC8vIFJlYWQgc3RhcnRzIGZyb20gMCB3aXRoIGxpbWl0IG9mIDAgYW5kIHJlYWRlciBzbGVl
cGluZy4KKyAgICBzaGFyZWRTZW5kZXJPZmZzZXQoKS5zdG9yZShTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVy
X3JlbGF4ZWQpOworICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAgd2l0aCBhIGxpbWl0IG9mIHRo
ZSB3aG9sZSBidWZmZXIuCisgICAgc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5zdG9yZSgwLCBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30KKwordm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUgPSBXVEZNb3ZlKHNlbWFwaG9y
ZSk7CisjZW5kaWYKKyAgICB3YWtlVXBSZWNlaXZlcigpOworfQorCit2b2lkIFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246Ondha2VVcFJlY2VpdmVyKCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBpZiAobV93YWtlVXBTZW1hcGhvcmUpCisgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLT5zaWdu
YWwoKTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRmZmZlZWYzYTA5OTVhMWIx
ODJhNWNmOWU4NjA3MDA5ODZiYzUxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDI0MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUg
IklQQ1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ci5oIgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgorbmFtZXNwYWNlIElQQyB7CisKKy8vIEEgbWVzc2FnZSBzdHJlYW0gaXMgYSBoYWxm
LWR1cGxleCB0d28td2F5IHN0cmVhbSBvZiBtZXNzYWdlcyB0byBhIGJldHdlZW4gYSBzZW5kZXIg
YW5kIHRoZQorLy8gZGVzdGluYXRpb24gcmVjZWl2ZXIuCisvLworLy8gU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbiBjYW4gc2VuZCBtZXNzYWdlcyBhbmQgcmVjZWl2ZSBzeW5jaHJvbm91cyByZXBsaWVz
CisvLyB0aHJvdWdoIHRoaXMgbWVzc2FnZSBzdHJlYW0gb3IgdGhyb3VnaCBJUEM6OkNvbm5lY3Rp
b24uCisvLworLy8gVGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdpbGwgcmVjZWl2ZSBtZXNzYWdl
cyBpbiBvcmRlciBfZm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdlc18uCisvLyBUaGUgd2hvbGUg
SVBDOjpDb25uZWN0aW9uIG1lc3NhZ2Ugb3JkZXIgaXMgbm90IHByZXNlcnZlZC4KKworY2xhc3Mg
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbik7CitwdWJsaWM6CisgICAgU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbihDb25uZWN0aW9uJiwgc2l6ZV90IGJ1ZmZlclNpemUpOworCisgICAgU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYgc3RyZWFtQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICB2b2lk
IHNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRp
ZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpOworCisgICAgdXNpbmcgU2Vu
ZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBt
ZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFNwYW4gewor
ICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXplX3Qgc2l6ZTsKKyAgICB9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdl
QWxpZ25tZW50OworICAgIGJvb2wgdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIHRpbWVvdXQpOworICAgIHZvaWQgc2VuZFBy
b2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmKTsKKworICAgIE9wdGlvbmFsPFNwYW4+IHRy
eUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KTsKKyAgICBlbnVtIGNsYXNzIFdha2VVcFJl
Y2VpdmVyIDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAgICBZZXMKKyAgICB9OworICAgIFdh
a2VVcFJlY2VpdmVyIHJlbGVhc2Uoc2l6ZV90IHdyaXRlU2l6ZSk7CisgICAgdm9pZCB3YWtlVXBS
ZWNlaXZlcigpOworCisgICAgU3BhbiBhbGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGltaXQpOworICAgIHNpemVfdCBzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7Cisg
ICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0OworCisg
ICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIud3JhcE9mZnNldChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBv
ZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1l
bnQ+KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBz
aGFyZWRTZW5kZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQor
ICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVm
ZmVyLnJlY2VpdmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQorCisgICAgQ29ubmVjdGlvbiYgbV9jb25uZWN0aW9u
OworICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgeyAwIH07CisKKyAgICBzaXpl
X3QgbV9zZW5kZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1
ZmZlcjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPcHRpb25hbDxTZW1hcGhvcmU+IG1fd2Fr
ZVVwU2VtYXBob3JlOworI2VuZGlmCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPgorYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCBPYmpl
Y3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBz
dGF0aWNfYXNzZXJ0KCFUOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CisgICAgTW9ub3Rv
bmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7
CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKGRlc3RpbmF0aW9uSUQudG9V
SW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1
dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4pCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB7CisgICAgICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNv
ZGVyIG1lc3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBzcGFuLT5kYXRhLCBzcGFuLT5zaXplIH07
CisgICAgICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpKSB7Cisg
ICAgICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2UobWVzc2FnZUVuY29kZXIuc2l6
ZSgpKTsKKyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAgICAgICAgICAgICB3YWtlVXBSZWNlaXZl
cigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgc2Vu
ZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOworICAgIGlmICghbV9j
b25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRCwgSVBDOjpTZW5k
T3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3Vs
dCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQpCit7CisgICAgc3RhdGljX2Fzc2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlz
IG5vdCBzeW5jISIpOworICAgIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0ID0gTW9ub3Rv
bmljVGltZTo6bm93KCkgKyB0aW1lb3V0OworICAgIGlmICghdHJ5U2VuZERlc3RpbmF0aW9uSURJ
Zk5lZWRlZChkZXN0aW5hdGlvbklELnRvVUludDY0KCksIGFic29sdXRlVGltZW91dCkpCisgICAg
ICAgIHJldHVybiB7IH07CisgICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZShhYnNvbHV0ZVRpbWVv
dXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50IHNlbmQgdGhyb3VnaCBzdHJlYW0uCisgICAgLy8gRklYTUU6IGltcGxlbWVudCBy
ZWNlaXZlIHRocm91Z2ggc3RyZWFtLgorICAgIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdl
KFdURk1vdmUoKnNwYW4pKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fY29ubmVjdGlvbi5zZW5kU3lu
YyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpLCB0aW1lb3V0KTsKKyAgICBBU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4gV1RGTW92ZShy
ZXN1bHQpOworfQorCitpbmxpbmUgYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5k
RGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1vbm90b25pY1Rp
bWUgYWJzb2x1dGVUaW1lb3V0KQoreworICAgIGlmIChkZXN0aW5hdGlvbklEID09IG1fY3VycmVu
dERlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGF1dG8gc3BhbiA9IHRy
eUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNvZGVyIHsgTWVzc2FnZU5h
bWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQsIHNwYW4tPmRhdGEsIHNwYW4tPnNpemUgfTsKKyAg
ICBpZiAoIShlbmNvZGVyIDw8IGRlc3RpbmF0aW9uSUQpKSB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAvLyBTaXplIG9mIHRoZSBtaW5pbXVtIGFsbG9jYXRpb24gaXMgaW5jb3JyZWN0
LiBMaWtlbHkgYW4gYWxpZ25tZW50IGlzc3VlLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShlbmNvZGVyLnNpemUoKSk7CisgICAg
aWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBSZWNlaXZl
cjo6WWVzKQorICAgICAgICB3YWtlVXBSZWNlaXZlcigpOworICAgIG1fY3VycmVudERlc3RpbmF0
aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgdm9p
ZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShT
cGFuJiYgc3BhbikKK3sKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNvZGVyIHsgTWVz
c2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UsIHNwYW4uZGF0YSwgc3Bhbi5zaXpl
IH07CisgICAgLy8gTm90IG5vdGlmeWluZyBvbiB3YWtlIHVwIHNpbmNlIHRoZSBvdXQtb2Ytc3Ry
ZWFtIG1lc3NhZ2Ugd2lsbCBkbyB0aGF0LgorICAgICh2b2lkKSByZWxlYXNlKGVuY29kZXIuc2l6
ZSgpKTsKK30KK2lubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKE1vbm90b25pY1RpbWUgdGltZW91dCkK
K3sKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNpemVfdCBzZW5kZXJMaW1pdCA9IGNsYW1wZWRM
aW1pdChzaGFyZWRSZWNlaXZlck9mZnNldCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWly
ZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fc2VuZGVyT2Zmc2V0LCBz
ZW5kZXJMaW1pdCk7CisgICAgICAgIGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6
ZSkgeworICAgICAgICAgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICAg
ICAgICAgIGlmIChub3cgPj0gdGltZW91dCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIHNpemVfdCBvbGRTZW5kZXJMaW1pdCA9IHNoYXJl
ZFJlY2VpdmVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHNlbmRlckxpbWl0LCBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyOjpyZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGluZ1RhZywgc3Rk
OjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAg
ICAgICAgICBpZiAoc2VuZGVyTGltaXQgPT0gb2xkU2VuZGVyTGltaXQpCisgICAgICAgICAgICAg
ICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLndhaXRGb3IodGltZW91dCAtIG5vdyk7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzZW5kZXJMaW1pdCA9IGNsYW1w
ZWRMaW1pdChvbGRTZW5kZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gYWxpZ25l
ZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKKyAgICAgICAgICAgIH0KKyNlbHNl
CisgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAg
ICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXplKQorICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworaW5saW5l
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVyIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnJlbGVhc2Uoc2l6ZV90IHNpemUpCit7CisgICAgc2l6ZSA9IHN0ZDo6bWF4KHNpemUs
IG1pbmltdW1NZXNzYWdlU2l6ZSk7CisgICAgc2l6ZV90IGV4cGVjdGVkUmVjZWl2ZXJMaW1pdCA9
IG1fc2VuZGVyT2Zmc2V0OworICAgIG1fc2VuZGVyT2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9m
ZnNldChtX3NlbmRlck9mZnNldCkgKyBzaXplKTsKKyAgICBBU1NFUlQobV9zZW5kZXJPZmZzZXQg
PCBkYXRhU2l6ZSgpKTsKKyAgICAvLyBJZiB0aGUgcmVjZWl2ZXIgd3JvdGUgb3ZlciB0aGUgc2Vu
ZGVyT2Zmc2V0IHdpdGggc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCB3ZSBrbm93
IGl0IGlzIHNsZWVwaW5nLgorICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVy
T2Zmc2V0KCkuZXhjaGFuZ2UobV9zZW5kZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9y
ZWwpOworICAgIGlmIChyZWNlaXZlckxpbWl0ICE9IGV4cGVjdGVkUmVjZWl2ZXJMaW1pdCkKKyAg
ICAgICAgcmV0dXJuIFdha2VVcFJlY2VpdmVyOjpZZXM7CisgICAgcmV0dXJuIFdha2VVcFJlY2Vp
dmVyOjpObzsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4gU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6YWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0
KQoreworICAgIEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBBU1NFUlQobGltaXQg
PCBkYXRhU2l6ZSgpKTsKKyAgICBzaXplX3QgYWxpZ25lZCA9IGFsaWduT2Zmc2V0KG9mZnNldCk7
CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSAwOworICAgIGlmIChvZmZzZXQgPCBsaW1pdCkgewor
ICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgJiYgYWxpZ25lZCA8IGxpbWl0KQorICAgICAg
ICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwgbGltaXQpCisgICAgICAg
ICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfQorICAgIHJldHVy
biB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30KKworaW5saW5lIHNpemVfdCBT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkK
K3sKKyAgICBpZiAoIWxpbWl0KQorICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAtIDEgLSBvZmZz
ZXQ7CisgICAgaWYgKGxpbWl0IDw9IG9mZnNldCkKKyAgICAgICAgcmV0dXJuIGRhdGFTaXplKCkg
LSBvZmZzZXQ7CisgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0IC0gMTsKK30KKworaW5saW5lIHNp
emVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3Rl
ZExpbWl0KSBjb25zdAoreworICAgIEFTU0VSVCh1bnRydXN0ZWRMaW1pdCA8IChkYXRhU2l6ZSgp
IC0gMSkpOworICAgIHJldHVybiBzdGQ6Om1pbih1bnRydXN0ZWRMaW1pdCwgZGF0YVNpemUoKSAt
IDEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1Db25uZWN0aW9uQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNvbm5lY3Rpb25CdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NzlkYWJlNjg5YWQ0NjI4ZTUyZGJk
MWJhZTBmNjFmZTZkZTE2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IEZmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNw
YWNlIElQQyB7CisKK3N0YXRpYyBSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IGNyZWF0ZU1lbW9y
eShzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvIG1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5
OjphbGxvY2F0ZShzaXplKTsKKyAgICBpZiAoIW1lbW9yeSkKKyAgICAgICAgQ1JBU0goKTsKKyAg
ICByZXR1cm4gbWVtb3J5LnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK1N0cmVhbUNvbm5lY3Rpb25C
dWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoc2l6ZV90IG1lbW9yeVNpemUpCisgICAgOiBt
X2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisgICAgLCBtX3NoYXJlZE1lbW9y
eShjcmVhdGVNZW1vcnkobWVtb3J5U2l6ZSkpCit7Cit9CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYmIG1l
bW9yeSwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNlbmRlcldhaXRTZW1hcGhvcmUp
CisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisgICAgLCBtX3No
YXJlZE1lbW9yeShXVEZNb3ZlKG1lbW9yeSkpCisgICAgLCBtX3NlbmRlcldhaXRTZW1hcGhvcmUo
V1RGTW92ZShzZW5kZXJXYWl0U2VtYXBob3JlKSkKK3sKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3Ro
ZXIpID0gZGVmYXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6flN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIoKSA9IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXImIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3RoZXIp
Cit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgIG1fZGF0YVNpemUgPSBvdGhl
ci5tX2RhdGFTaXplOworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9IFdURk1vdmUob3RoZXIubV9z
aGFyZWRNZW1vcnkpOworICAgICAgICBtX3NlbmRlcldhaXRTZW1hcGhvcmUgPSBXVEZNb3ZlKG90
aGVyLm1fc2VuZGVyV2FpdFNlbWFwaG9yZSk7CisgICAgfQorICAgIHJldHVybiAqdGhpczsKK30K
Kwordm9pZCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBp
ZiAoIW1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwg
bV9zaGFyZWRNZW1vcnktPnNpemUoKSB9OworICAgIGVuY29kZXIgPDwgaXBjSGFuZGxlOworICAg
IGVuY29kZXIgPDwgbV9zZW5kZXJXYWl0U2VtYXBob3JlOworfQorCitPcHRpb25hbDxTdHJlYW1D
b25uZWN0aW9uQnVmZmVyPiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
PiBpcGNIYW5kbGU7CisgICAgZGVjb2RlciA+PiBpcGNIYW5kbGU7CisgICAgaWYgKCFpcGNIYW5k
bGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8U2VtYXBob3Jl
PiBzZW1hcGhvcmU7CisgICAgZGVjb2RlciA+PiBzZW1hcGhvcmU7CisgICAgaWYgKCFzZW1hcGhv
cmUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgc2l6ZV90IGRhdGFTaXplID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUtPmRhdGFTaXplKTsKKyAgICBpZiAoZGF0YVNp
emUgPCBoZWFkZXJTaXplKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0
byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS0+aGFu
ZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKyAgICBp
ZiAoc2hhcmVkTWVtb3J5LT5zaXplKCkgPCBkYXRhU2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7IHNoYXJlZE1lbW9y
eS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhU2l6ZSwgIFdURk1vdmUoKnNlbWFwaG9yZSkgfTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3N2YyY2IxZWMwNzkzNWZjYzgwYWQ1ZjI0NDRhZGVmZmIw
Mzk0NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1Db25uZWN0aW9uQnVmZmVyLmgKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUu
aCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSVBDIHsKKworLy8gU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciBpcyBhIHNoYXJlZCAiYmktcGFydGl0ZSIgY2lyY3VsYXIgYnVmZmVy
IHN1cHBvcnRpbmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdlcywgc3BlY2lmaWMgZGF0YSBh
bGlnbm1lbnQgd2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUuCisvLyBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uIGFuZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHVzZSBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyIHRvIGNvbW11bmljYXRlLgorLy8KKy8vIFRoZSAiYmktcGFydGl0ZSIgaXMgaGVyZSB0byBt
ZWFuIHRoYXQgd3JpdGVzIGFuZCByZWFkcyB0byB0aGUgYnVmZmVyIG11c3QgYmUKKy8vIGNvbnRp
bnVvdXMuCisvLworLy8gVGhlIGNsaWVudCAoc2VuZGVyIG9yIHJlY2VpdmVyKSAiYWNxdWlyZXMi
IHNvbWUgYW1vdW50IG9mIGJ1ZmZlciBkYXRhLiBJZiBidWZmZXIgaGFzIG5vCisvLyBjYXBhY2l0
eSwgYWNxdWlyZSByZXR1cm5zIHdpdGggemVybyBjYXBhY2l0eS4gSWYgYnVmZmVyIGhhcyBhdCBs
ZWFzdCBhY3F1aXJlZAorLy8gY2FwYWNpdHksIGFsbCB0aGUgYXZhaWxhYmxlIGNhcGFjaXR5IGlz
IHJldHVybmVkLgorLy8KKy8vIFRoZSBjbGllbnQgInJlbGVhc2VzIiB0aGUgc29tZSBhbW91bnQg
b2YgZGF0YSwgYXQgbGVhc3QgdGhlIGFtb3VudCBhY3F1aXJlZCBidXQgcG90ZW50aWFsbHkKKy8v
IG1vcmUuCisvLworLy8gQm90aCBzZW5kZXIgYW5kIHJlY2VpdmVyIG11c3QgYWNxdWlyZSBzYW1l
IGFtb3VudCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhlIGFjcXVpcmUgc2VxdWVuY2Uu
CisvLyBJZiBzZW5kZXIgYWNxdWlyZXMgWCBhbmQgdGhlbiBZIGFtb3VudCwgcmVjZWl2ZXIgbXVz
dCBkbyB0aGUgc2FtZS4KKy8vCisvLyBUaGUgY2lyY3VsYXIgYnVmZmVyIGhhcyBmb2xsb3dpbmcg
aW1wbGVtZW50YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRoZSBkYXRhIGJldHdlZW4gW3NlbmRl
ck9mZnNldCwgcmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9mZnNldCA9PQorLy8gcmVjZWl2
ZXJPZmZzZXQsIHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4KKy8vICogUmVjZWl2ZXIgb3ducyB0
aGUgZGF0YSBiZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVyT2Zmc2V0Wy4KKy8vICogVGhl
IGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhlIGxhc3QgdmFs
dWUgaXMgcmVzZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxs
LiBGSVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBpZgorLy8gaXQg
d291bGQgdXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9mIHRoZSBob2xlIGFzIHRoZSBpbmRp
Y2F0b3IuIFRoaXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWduZWRTcGFuIGltcGxlbWVudGF0aW9u
IHRvIHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgorLy8gKiBBbGwgYXRvbWljIHZhcmlhYmxl
IGxvYWRzIGFyZSB1bnRydXN0ZWQsIHNvIHRoZXkncmUgY2xhbXBlZC4gVmlvbGF0aW9ucyBhcmUg
bm90IHJlcG9ydGVkLAorLy8gdGhvdWdoLgorLy8gU2VlIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
LgorY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6ZSk7CisgICAgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOworICAgIH5TdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKCk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgb3BlcmF0b3I9KFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisKKyAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qg
b2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8PSBkYXRhU2l6ZSgp
KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBkYXRhU2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90
IG1lc3NhZ2VBbGlnbm1lbnQ+CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQs
IHNpemVfdCBhY3F1aXJlU2l6ZSkgY29uc3QKKyAgICB7CisgICAgICAgIG9mZnNldCA9IHJvdW5k
VXBUb011bHRpcGxlT2Y8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0KTsKKyAgICAgICAgaWYgKG9m
ZnNldCArIGFjcXVpcmVTaXplID49IGRhdGFTaXplKCkpCisgICAgICAgICAgICBvZmZzZXQgPSAw
OworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAgIEF0b21pYzxzaXplX3Q+JiBz
ZW5kZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZW5kZXJPZmZzZXQ7IH0KKyAgICBBdG9t
aWM8c2l6ZV90PiYgcmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5yZWNlaXZlck9m
ZnNldDsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1
aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBoZWFkZXJTaXplKCk7IH0KKyAgICBz
aXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTaXplOyB9CisgICAgU2VtYXBo
b3JlJiBzZW5kZXJXYWl0U2VtYXBob3JlKCkgeyByZXR1cm4gbV9zZW5kZXJXYWl0U2VtYXBob3Jl
OyB9CisKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6c2VuZGVyT2Zmc2V0IHdo
ZW4gcmVjZWl2ZXIgaXMgc2xlZXBpbmcsIGUuZy4gbm90IHJ1bm5pbmcuCisgICAgc3RhdGljIGNv
bnN0ZXhwciBzaXplX3Qgc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnID0gMSA8PCAz
MTsKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6cmVjZWl2ZXJPZmZzZXQgd2hl
biBzZW5kZXIgaXMgd2FpdGluZywgZS5nLiB3YWl0aW5nIG9uCisgICAgLy8gYSBzZW1hcGhvcmUu
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRp
bmdUYWcgPSAxIDw8IDMxOworCisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAg
IHN0YXRpYyBPcHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYp
OworCitwcml2YXRlOgorICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hh
cmVkTWVtb3J5PiYmLCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgc2VuZGVyV2FpdFNl
bWFwaG9yZSk7CisKKyAgICBzdHJ1Y3QgSGVhZGVyIHsKKyAgICAgICAgQXRvbWljPHNpemVfdD4g
cmVjZWl2ZXJPZmZzZXQ7CisgICAgICAgIC8vIFBhZGRpbmcgc28gdGhhdCB0aGUgdmFyaWFibGVz
IG1vc3RseSBhY2Nlc3NlZCBieSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGRvIG5vdCBzaGFyZSBhIGNh
Y2hlIGxpbmUuCisgICAgICAgIC8vIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBhdm9pZCBjYWNoZS1s
aW5lIGluZHVjZWQgcmVkdWN0aW9uIG9mIHBhcmFsbGVsIGFjY2Vzcy4KKyAgICAgICAgdWludDY0
X3QgY2FjaGVMaW5lUGFkZGluZ1syXTsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gc2VuZGVyT2Zm
c2V0OworICAgIH07CisgICAgSGVhZGVyJiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiAqcmVpbnRl
cnByZXRfY2FzdDxIZWFkZXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKTsgfQorICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGhlYWRlclNpemUoKSB7IHJldHVybiByb3VuZFVwVG9NdWx0aXBs
ZU9mPHNpemVvZihzdGQ6Om1heF9hbGlnbl90KT4oc2l6ZW9mKEhlYWRlcikpOyB9CisKKyAgICBz
aXplX3QgbV9kYXRhU2l6ZSB7IDAgfTsKKyAgICBSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IG1f
c2hhcmVkTWVtb3J5OworICAgIFNlbWFwaG9yZSBtX3NlbmRlcldhaXRTZW1hcGhvcmU7Cit9Owor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0
aW9uRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTIzMmRlY2Y2Yzc5M2E0NTc3MTY4ZTk3ZWZiNTFhYWZi
MzJmZGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXIuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
TWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3Bh
Y2UgSVBDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjsKKworLy8gSVBDIGVuY29kZXIgd2hpY2g6CisvLyAgLSBFbmNvZGVzIHRvIGEgY2FsbGVy
IGJ1ZmZlciB3aXRoIGZpeGVkIHNpemUsIGRvZXMgbm90IHJlc2l6ZSwgc3RvcHMgd2hlbiBzaXpl
IHJ1bnMgb3V0CisvLyAgLSBEb2VzIG5vdCBpbml0aWFsaXplIGFsaWdubWVudCBnYXBzCisvLwor
Y2xhc3MgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZmluYWwgeworcHVibGljOgorICAgIC8vIFN0
cmVhbSBtZXNzYWdlIG5lZWRzIHRvIGJlIGF0IGxlYXN0IHNpemUgb2YgU3RyZWFtU2V0RGVzdGlu
YXRpb25JRCBtZXNzYWdlLgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNz
YWdlU2l6ZSA9IHNpemVvZihNZXNzYWdlTmFtZSkgKyBzaXplb2YodWludDY0X3QpOworICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBhbGlnbm9mKE1lc3NhZ2VO
YW1lKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0gdHJ1ZTsKKwor
ICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50
OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1DYXBhY2l0eSkKKyAgICAgICAgOiBtX2J1ZmZlcihz
dHJlYW0pCisgICAgICAgICwgbV9idWZmZXJDYXBhY2l0eShzdHJlYW1DYXBhY2l0eSkKKyAgICB7
CisgICAgICAgICp0aGlzIDw8IG1lc3NhZ2VOYW1lOworICAgIH0KKworICAgIH5TdHJlYW1Db25u
ZWN0aW9uRW5jb2RlcigpID0gZGVmYXVsdDsKKworICAgIGJvb2wgZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQor
ICAgIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclBvaW50ZXIgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fYnVmZmVyICsgbV9lbmNvZGVkU2l6ZSkpOwor
ICAgICAgICBzaXplX3QgbmV3QnVmZmVyUG9pbnRlciA9IHJvdW5kVXBUb011bHRpcGxlT2YoYWxp
Z25tZW50LCBidWZmZXJQb2ludGVyKTsKKyAgICAgICAgaWYgKG5ld0J1ZmZlclBvaW50ZXIgPCBi
dWZmZXJQb2ludGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpbnRwdHJf
dCBhbGlnbmVkU2l6ZSA9IG1fZW5jb2RlZFNpemUgKyAobmV3QnVmZmVyUG9pbnRlciAtIGJ1ZmZl
clBvaW50ZXIpOworICAgICAgICBpZiAoIXJlc2VydmUoYWxpZ25lZFNpemUsIHNpemUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1aW50OF90KiBidWZmZXIgPSBtX2J1ZmZl
ciArIGFsaWduZWRTaXplOworICAgICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKKyAg
ICAgICAgbV9lbmNvZGVkU2l6ZSA9IGFsaWduZWRTaXplICsgc2l6ZTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBTdHJlYW1Db25u
ZWN0aW9uRW5jb2RlciYgb3BlcmF0b3I8PChUJiYgdCkKKyAgICB7CisgICAgICAgIEFyZ3VtZW50
Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4sIHZv
aWQ+OjplbmNvZGUoKnRoaXMsIHN0ZDo6Zm9yd2FyZDxUPih0KSk7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgQVNTRVJUKGlzVmFsaWQo
KSk7IHJldHVybiBtX2VuY29kZWRTaXplOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXJDYXBhY2l0eTsgfQorICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiBpc1ZhbGlkKCk7IH0KK3ByaXZhdGU6CisgICAgYm9vbCByZXNlcnZlKHNpemVfdCBhbGln
bmVkU2l6ZSwgc2l6ZV90IGFkZGl0aW9uYWxTaXplKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHNp
emUgPSBhbGlnbmVkU2l6ZSArIGFkZGl0aW9uYWxTaXplOworICAgICAgICBpZiAoc2l6ZSA8IGFs
aWduZWRTaXplIHx8IHNpemUgPiBtX2J1ZmZlckNhcGFjaXR5KSB7CisgICAgICAgICAgICBtX2J1
ZmZlckNhcGFjaXR5ID0gMDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgdWludDhfdCogbV9idWZmZXI7CisgICAg
c2l6ZV90IG1fYnVmZmVyQ2FwYWNpdHk7CisgICAgc2l6ZV90IG1fZW5jb2RlZFNpemUgeyAwIH07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTVi
NDQ5NGI3NGZkOTI4NTgwM2U0ZWEyZWY0OGMxMTczNjU5ZDcxZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
CkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKworbmFtZXNwYWNlIElQQyB7CisK
K1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUoY29u
c3QgY2hhciogbmFtZSkKKyAgICA6IG1fbmFtZShuYW1lKQoreworfQorCit2b2lkIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OmRpc3BhdGNoKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0
aW9uKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBt
X2Z1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOworICAgICAgICBBU1NFUlQoIW1f
c2hvdWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVk
LgorICAgIH0KKyAgICB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7CisKK30KK3ZvaWQgU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZSYgY29ubmVjdGlvbikKK3sKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICAgICAgbV9jb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbik7CisgICAgICAg
IEFTU0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5v
dCBzdXBwb3J0ZWQuCisgICAgfQorICAgIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQoKTsKK30KKwor
dm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpyZW1vdmVTdHJlYW1Db25uZWN0aW9uKFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChtX3By
b2Nlc3NpbmdUaHJlYWQpOworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOwor
ICAgICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uKTsKKyAgICAgICAgQVNTRVJU
KCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBv
cnRlZC4KKyAgICB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUu
c2lnbmFsKCk7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpz
dG9wKCkKK3sKKyAgICBtX3Nob3VsZFF1aXQgPSB0cnVlOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIGlmICghbV9wcm9jZXNzaW5nVGhyZWFkKQorICAgICAgICByZXR1cm47CisgICAgbV93YWtl
VXBTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkLT53YWl0Rm9yQ29t
cGxldGlvbigpOworICAgIG1fcHJvY2Vzc2luZ1RocmVhZCA9IG51bGxwdHI7CisjZW5kaWYKK30K
Kwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXAoKQoreworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25hbCgpOworI2VuZGlmCit9CisK
K0lQQzo6U2VtYXBob3JlJiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXBTZW1hcGhv
cmUoKQoreworICAgIHJldHVybiBtX3dha2VVcFNlbWFwaG9yZTsKK30KKwordm9pZCBTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCkKK3sKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBpZiAobV9wcm9jZXNzaW5nVGhyZWFkKSB7CisgICAgICAgIG1fd2Fr
ZVVwU2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byB0YXNrID0gW3RoaXNdKCkgbXV0YWJsZSB7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAg
ICAgIHByb2Nlc3NTdHJlYW1zKCk7CisgICAgICAgICAgICBpZiAobV9zaG91bGRRdWl0KSB7Cisg
ICAgICAgICAgICAgICAgcHJvY2Vzc1N0cmVhbXMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3dha2VVcFNlbWFwaG9yZS53YWl0KCk7Cisg
ICAgICAgIH0KKyAgICB9OworICAgIG1fcHJvY2Vzc2luZ1RocmVhZCA9IFRocmVhZDo6Y3JlYXRl
KG1fbmFtZSwgV1RGTW92ZSh0YXNrKSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MsIFRocmVhZDo6UU9T
OjpVc2VySW50ZXJhY3RpdmUpOworI2VuZGlmCit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6cHJvY2Vzc1N0cmVhbXMoKQoreworICAgIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVs
dE1lc3NhZ2VMaW1pdCA9IDEwMDA7CisgICAgYm9vbCBoYXNNb3JlVG9Qcm9jZXNzID0gZmFsc2U7
CisgICAgZG8geworICAgICAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IGZ1bmN0aW9u
czsKKyAgICAgICAgSGFzaFNldDxSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+PiBjb25u
ZWN0aW9uczsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOworICAgICAgICAgICAgZnVuY3Rpb25zLnN3YXAobV9mdW5jdGlvbnMpOworICAgICAg
ICAgICAgY29ubmVjdGlvbnMgPSBtX2Nvbm5lY3Rpb25zOworICAgICAgICB9CisgICAgICAgIGZv
ciAoYXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbnMpCisgICAgICAgICAgICBXVEZNb3ZlKGZ1bmN0
aW9uKSgpOworCisgICAgICAgIGhhc01vcmVUb1Byb2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgZm9y
IChhdXRvJiBjb25uZWN0aW9uIDogY29ubmVjdGlvbnMpCisgICAgICAgICAgICBoYXNNb3JlVG9Q
cm9jZXNzIHw9IGNvbm5lY3Rpb24tPmRpc3BhdGNoU3RyZWFtTWVzc2FnZXMoZGVmYXVsdE1lc3Nh
Z2VMaW1pdCkgPT0gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6Okhhc01vcmVNZXNzYWdlczsK
KyAgICB9IHdoaWxlIChoYXNNb3JlVG9Qcm9jZXNzKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ1MjZhMzUyNjY1MWRkZmYzOTBhN2RmNzFmYzk1ZGE1YTQxZGNjNWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRl
IDx3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNw
YWNlIElQQyB7CisKK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUgZmluYWwgOiBwdWJs
aWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlKGNvbnN0IGNoYXIqKTsKKyAgICB+U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSgpID0g
ZGVmYXVsdDsKKyAgICB2b2lkIGFkZFN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2UmKTsKKyAgICB2b2lkIHJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2UmKTsKKworICAgIHZvaWQgZGlzcGF0Y2goV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpOworCisgICAgdm9pZCB3YWtlVXAoKTsKKwor
ICAgIFNlbWFwaG9yZSYgd2FrZVVwU2VtYXBob3JlKCk7Citwcml2YXRlOgorICAgIHZvaWQgd2Fr
ZVVwUHJvY2Vzc2luZ1RocmVhZCgpOworICAgIHZvaWQgcHJvY2Vzc1N0cmVhbXMoKTsKKworICAg
IGNvbnN0IGNoYXIqIGNvbnN0IG1fbmFtZTsKKyAgICBTZW1hcGhvcmUgbV93YWtlVXBTZW1hcGhv
cmU7CisgICAgUmVmUHRyPFRocmVhZD4gbV9wcm9jZXNzaW5nVGhyZWFkOworCisgICAgc3RkOjph
dG9taWM8Ym9vbD4gbV9zaG91bGRRdWl0IHsgZmFsc2UgfTsKKworICAgIExvY2sgbV9sb2NrOwor
ICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fZnVuY3Rpb25zOworICAgIEhhc2hTZXQ8UmVm
PFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPj4gbV9jb25uZWN0aW9uczsKK307CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGUxNGI1ZDUxN2YwNjc2MzM4MmY1MTNmZTU1Mzc1MWI2YzFiMzMy
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNl
cnZlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1
ZXVlKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3dvcmtRdWV1ZSh3
b3JrUXVldWUpCisgICAgLCBtX2J1ZmZlcihXVEZNb3ZlKHN0cmVhbSkpCit7Cit9CisKK3ZvaWQg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJl
Y2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAg
bV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0aGlzLCByZWNlaXZlck5hbWUs
IGRlc3RpbmF0aW9uSUQpOworICAgIG1fd29ya1F1ZXVlLmFkZFN0cmVhbUNvbm5lY3Rpb24oKnRo
aXMpOworfQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdG9wUmVjZWl2aW5n
TWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQpCit7CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKHJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgbV93b3JrUXVldWUucmVtb3ZlU3RyZWFt
Q29ubmVjdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6
OmVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJiBt
ZXNzYWdlKQoreworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX291dE9m
U3RyZWFtTWVzc2FnZXNMb2NrKTsKKyAgICAgICAgbV9vdXRPZlN0cmVhbU1lc3NhZ2VzLmFwcGVu
ZChXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICB9CisgICAgbV93b3JrUXVldWUud2FrZVVwKCk7Cit9
CisKK09wdGlvbmFsPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKCkKK3sKKyAgICBzaXplX3QgcmVjZWl2ZXJMaW1p
dCA9IHNoYXJlZFNlbmRlck9mZnNldCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7
CisgICAgaWYgKHJlY2VpdmVyTGltaXQgPT0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVy
T2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9yZWNlaXZlck9mZnNldCwgcmVjZWl2
ZXJMaW1pdCk7CisgICAgaWYgKHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplKSB7Cisg
ICAgICAgIHJlY2VpdmVyTGltaXQgPSBzaGFyZWRTZW5kZXJPZmZzZXQoKS5jb21wYXJlRXhjaGFu
Z2VTdHJvbmcocmVjZWl2ZXJMaW1pdCwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zm
c2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6
Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAgICAgQVNTRVJUKCEocmVjZWl2ZXJMaW1pdCAm
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1Rh
ZykpOworICAgICAgICByZWNlaXZlckxpbWl0ID0gY2xhbXBlZExpbWl0KHJlY2VpdmVyTGltaXQp
OworICAgICAgICByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZl
ckxpbWl0KTsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VT
aXplKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9
CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRT
aXplKQoreworICAgIEFTU0VSVChyZWFkU2l6ZSk7CisgICAgcmVhZFNpemUgPSBzdGQ6Om1heChy
ZWFkU2l6ZSwgbWluaW11bU1lc3NhZ2VTaXplKTsKKyAgICBzaXplX3QgcmVjZWl2ZXJPZmZzZXQg
PSB3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1fcmVjZWl2ZXJPZmZzZXQpICsgcmVhZFNpemUpOwor
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgc2l6ZV90IG9sZFJlY2VpdmVyT2Zmc2V0ID0gc2hh
cmVkUmVjZWl2ZXJPZmZzZXQoKS5leGNoYW5nZShyZWNlaXZlck9mZnNldCwgc3RkOjptZW1vcnlf
b3JkZXJfYWNxX3JlbCk7CisgICAgLy8gSWYgdGhlIHNlbmRlciB3cm90ZSBvdmVyIHJlY2VpdmVy
T2Zmc2V0LCBpdCBtZWFucyB0aGUgc2VuZGVyIGlzIHdhaXRpbmcuCisgICAgaWYgKG9sZFJlY2Vp
dmVyT2Zmc2V0ICE9IG1fcmVjZWl2ZXJPZmZzZXQpCisgICAgICAgIG1fYnVmZmVyLnNlbmRlcldh
aXRTZW1hcGhvcmUoKS5zaWduYWwoKTsKKyNlbmRpZgorCisgICAgbV9yZWNlaXZlck9mZnNldCA9
IHJlY2VpdmVyT2Zmc2V0OworfQorCitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3BhbiBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxpbWl0KQoreworICAgIEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBBU1NF
UlQobGltaXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBzaXplX3QgYWxpZ25lZCA9IGFsaWduT2Zmc2V0
KG9mZnNldCk7CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSAwOworICAgIGlmIChvZmZzZXQgPCBs
aW1pdCkgeworICAgICAgICBpZiAob2Zmc2V0IDw9IGFsaWduZWQgJiYgYWxpZ25lZCA8IGxpbWl0
KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0g
ZWxzZSBpZiAob2Zmc2V0ID4gbGltaXQpIHsKKyAgICAgICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0
IHx8IGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgIHJlc3VsdFNpemUgPSBzaXplKGFsaWdu
ZWQsIGxpbWl0KTsKKyAgICB9CisgICAgcmV0dXJuIHsgZGF0YSgpICsgYWxpZ25lZCwgcmVzdWx0
U2l6ZSB9OworfQorCitzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNpemUoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQoreworICAgIGlmIChvZmZzZXQgPD0gbGltaXQpCisg
ICAgICAgIHJldHVybiBsaW1pdCAtIG9mZnNldDsKKyAgICByZXR1cm4gZGF0YVNpemUoKSAtIG9m
ZnNldDsKK30KKworc2l6ZV90IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGlt
aXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdAoreworICAgIEFTU0VSVCh1bnRydXN0ZWRM
aW1pdCA8IChkYXRhU2l6ZSgpIC0gMSkpOworICAgIHJldHVybiBzdGQ6Om1pbih1bnRydXN0ZWRM
aW1pdCwgZGF0YVNpemUoKSAtIDEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIwYjkyMTM2
ZmY2YjZhOWI5ZTE5OGRjOTczYjNkM2E2ZWE1NjYyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaApAQCAtMCwwICsx
LDI4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgor
I2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworY2xh
c3MgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTsKKworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U+LCBwcm90ZWN0ZWQgTWVzc2FnZVJlY2VpdmVRdWV1ZSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UpOworcHVibGljOgorICAgIH5T
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSgpIG92ZXJyaWRlID0gZGVmYXVsdDsKKworICAgIENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKworICAgIGVu
dW0gRGlzcGF0Y2hSZXN1bHQgOiBib29sIHsKKyAgICAgICAgSGFzTm9NZXNzYWdlcywKKyAgICAg
ICAgSGFzTW9yZU1lc3NhZ2VzCisgICAgfTsKKyAgICB2aXJ0dWFsIERpc3BhdGNoUmVzdWx0IGRp
c3BhdGNoU3RyZWFtTWVzc2FnZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkgPSAwOworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHZvaWQgc2VuZFN5bmNSZXBseSh1aW50
NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLik7CisKK3Byb3RlY3RlZDoKKyAgICBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShJUEM6OkNvbm5lY3Rpb24mLCBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiYsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmKTsKKworICAgIHZvaWQgc3Rh
cnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKTsKKyAgICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKworICAgIC8vIE1lc3NhZ2VSZWNlaXZlUXVldWUKKyAg
ICB2b2lkIGVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4mJikgZmluYWw7CisKKyAgICBzdHJ1Y3QgU3BhbiB7CisgICAgICAgIHVpbnQ4X3QqIGRhdGE7
CisgICAgICAgIHNpemVfdCBzaXplOworICAgIH07CisgICAgT3B0aW9uYWw8U3Bhbj4gdHJ5QXF1
aXJlKCk7CisKKyAgICB2b2lkIHJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBtaW5pbXVtTWVzc2FnZVNpemUgPSBTdHJlYW1Db25uZWN0aW9uRW5j
b2Rlcjo6bWluaW11bU1lc3NhZ2VTaXplOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1l
c3NhZ2VBbGlnbm1lbnQgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWVzc2FnZUFsaWdubWVu
dDsKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7Cisg
ICAgc2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAgICBzaXplX3Qg
Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7CisgICAgc2l6ZV90IHdy
YXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNl
dChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwg
bWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRTZW5kZXJP
ZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQorICAgIEF0b21pYzxz
aXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnJlY2VpdmVy
T2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
ZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
ZGF0YVNpemUoKTsgfQorCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwor
ICAgIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIG1fd29ya1F1ZXVlOworCisgICAgc2l6ZV90
IG1fcmVjZWl2ZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1
ZmZlcjsKKworICAgIExvY2sgbV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jazsKKyAgICBEZXF1ZTxz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IG1fb3V0T2ZTdHJlYW1NZXNzYWdlczsKKworICAgIGZy
aWVuZCBjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2Vu
ZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLiBhcmd1bWVu
dHMpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kaW5nIHRvIGJ1ZmZlci4KKyAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oSVBDOjpNZXNzYWdlTmFtZTo6
U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CisgICAgKCplbmNvZGVyIDw8IC4uLiA8
PCBhcmd1bWVudHMpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShXVEZNb3ZlKGVu
Y29kZXIpKTsKK30KKworLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbiByZXByZXNlbnRzIHRoZSBj
b25uZWN0aW9uIGJldHdlZW4gc3RyZWFtIHNlbmRlciBhbmQgcmVjZWl2ZXIsIGFzIHVzZWQgYnkg
dGhlIHJlY2VpdmVyLgorLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbjoKKy8vICAqIEhvbGRzIHRo
ZSBtZXNzYWdlcyB0b3dhcmRzIHRoZSByZWNlaXZlci4KKy8vICAqIFNlbmRzIHRoZSByZXBsaWVz
IGJhY2sgdG8gdGhlIHNlbmRlciB2aWEgdGhlIHN0cmVhbSBvciBub3JtYWwgQ29ubmVjdGlvbiBm
YWxsYmFjay4KKy8vCisvLyBSZWNlaXZlciB0ZW1wbGF0ZSBjb250cmFjdDoKKy8vICAgdm9pZCBk
aWRSZWNlaXZlU3RyZWFtTWVzc2FnZShTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIERlY29k
ZXImKTsKKy8vCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK2NsYXNzIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2Ugewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gY3JlYXRlKENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZm
ZXIsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbiwg
V1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpKTsKKyAgICB9CisgICAgflN0cmVhbVNl
cnZlckNvbm5lY3Rpb24oKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHN0YXJ0UmVjZWl2
aW5nTWVzc2FnZXMoUmVjZWl2ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpOworICAgIC8vIFN0b3BzIHRoZSBtZXNzYWdlIHJlY2VpcHQuIE5vdGU6IGFscmVhZHkgcmVj
ZWl2ZWQgbWVzc2FnZXMgbWlnaHQgc3RpbGwgYmUgZGVsaXZlcmVkLgorICAgIHZvaWQgc3RvcFJl
Y2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisK
KyAgICAvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSBvdmVycmlkZXMuCisgICAgRGlzcGF0
Y2hSZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KSBmaW5h
bDsKKworcHJpdmF0ZToKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICAgICAgOiBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZShjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSkK
KyAgICB7CisgICAgfQorICAgIGJvb2wgcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoRGVj
b2RlciYmLCBSZWZQdHI8UmVjZWl2ZXI+JiBjdXJyZW50UmVjZWl2ZXIpOworICAgIGJvb2wgZGlz
cGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiwgUmVjZWl2ZXImKTsKKyAgICBib29sIGRpc3Bh
dGNoT3V0T2ZTdHJlYW1NZXNzYWdlKERlY29kZXImJik7CisgICAgTG9jayBtX3JlY2VpdmVyc0xv
Y2s7CisgICAgdXNpbmcgUmVjZWl2ZXJzTWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8dWludDhfdCwg
dWludDY0X3Q+LCBSZWY8UmVjZWl2ZXI+PjsKKyAgICBSZWNlaXZlcnNNYXAgbV9yZWNlaXZlcnM7
CisKKyAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEID0gMDsKK307CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2Vp
dmVyPjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYgcmVjZWl2ZXIsIFJlY2VpdmVy
TmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgeworICAg
ICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2Vp
dmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9yZWNlaXZlcnMuY29udGFpbnMo
a2V5KSk7CisgICAgICAgIG1fcmVjZWl2ZXJzLmFkZChrZXksIG1ha2VSZWYocmVjZWl2ZXIpKTsK
KyAgICB9CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVz
c2FnZXNJbXBsKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6
c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpCit7CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BS
ZWNlaXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBh
dXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFt
ZSksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZl
cnNMb2NrKTsKKyAgICBBU1NFUlQobV9yZWNlaXZlcnMuY29udGFpbnMoa2V5KSk7CisgICAgbV9y
ZWNlaXZlcnMucmVtb3ZlKGtleSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgor
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OkRpc3BhdGNoUmVzdWx0IFN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNzYWdl
TGltaXQpCit7CisgICAgUmVmUHRyPFJlY2VpdmVyPiBjdXJyZW50UmVjZWl2ZXI7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCBXVEY6OmlzVmFsaWQoUmVjZWl2ZXJOYW1lKS4KKyAgICB1aW50OF90
IGN1cnJlbnRSZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihSZWNlaXZlck5hbWU6
OkludmFsaWQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlTGltaXQ7ICsr
aSkgeworICAgICAgICBhdXRvIHNwYW4gPSB0cnlBcXVpcmUoKTsKKyAgICAgICAgaWYgKCFzcGFu
KQorICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAg
ICAgICBJUEM6OkRlY29kZXIgZGVjb2RlciB7IHNwYW4tPmRhdGEsIHNwYW4tPnNpemUsIG1fY3Vy
cmVudERlc3RpbmF0aW9uSUQgfTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkgewor
ICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVz
dWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICB9CisgICAgICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQpIHsKKyAgICAg
ICAgICAgIGlmICghcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoV1RGTW92ZShkZWNvZGVy
KSwgY3VycmVudFJlY2VpdmVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1
bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0
T2ZTdHJlYW1NZXNzYWdlKSB7CisgICAgICAgICAgICBpZiAoIWRpc3BhdGNoT3V0T2ZTdHJlYW1N
ZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpKQorICAgICAgICAgICAgICAgIHJldHVybiBEaXNwYXRj
aFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIGlmIChjdXJyZW50UmVjZWl2ZXJOYW1lICE9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkgeworICAgICAgICAgICAgY3VycmVudFJl
Y2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpKTsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKCFjdXJyZW50UmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIGF1dG8ga2V5
ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4oY3VycmVudFJlY2VpdmVyTmFt
ZSksIG1fY3VycmVudERlc3RpbmF0aW9uSUQpOworICAgICAgICAgICAgaWYgKCFSZWNlaXZlcnNN
YXA6OmlzVmFsaWRLZXkoa2V5KSkgeworICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlz
cGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJz
TG9jayk7CisgICAgICAgICAgICBjdXJyZW50UmVjZWl2ZXIgPSBtX3JlY2VpdmVycy5nZXQoa2V5
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNlaXZlcikgeworICAgICAgICAg
ICAgLy8gVmFsaWQgc2NlbmFyaW8gaXMgd2hlbiByZWNlaXZlciBoYXMgYmVlbiByZW1vdmVkLCBi
dXQgdGhlcmUgYXJlIG1lc3NhZ2VzIGZvciBpdCBpbiB0aGUgYnVmZmVyLgorICAgICAgICAgICAg
Ly8gRklYTUU6IFNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgcmVjZWl2ZXIsIHdlIGRvbid0IGtub3cg
aG93IHRvIGRlY29kZSB0aGUgbWVzc2FnZS4KKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgd2Ug
bXVzdCB0aW1lb3V0IGV2ZXJ5IHJlY2VpdmVyIGluIHRoZSBzdHJlYW0gY29ubmVjdGlvbi4KKyAg
ICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBhc3NlcnQgdGhhdCB0aGUgcmVjZWl2ZXJzIGFyZSBl
bXB0eSwgYXMgd2Ugb25seSBoYXZlIHVwIHRvIG9uZSByZWNlaXZlciBpbgorICAgICAgICAgICAg
Ly8gYSBzdHJlYW0gY29ubmVjdGlvbiB1bnRpbCBwb3NzaWJpbGl0eSBvZiBza2lwcGluZyBpcyBp
bXBsZW1lbnRlZCBwcm9wZXJseS4KKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3JlY2VpdmVycy5pc0VtcHR5
KCkpOworICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOwor
ICAgICAgICB9CisgICAgICAgIGlmICghZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKFdURk1vdmUoZGVj
b2RlciksICpjdXJyZW50UmVjZWl2ZXIpKQorICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVz
dWx0OjpIYXNOb01lc3NhZ2VzOworICAgIH0KKyAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhh
c01vcmVNZXNzYWdlczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29sIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9jZXNzU2V0U3RyZWFtRGVzdGluYXRp
b25JRChEZWNvZGVyJiYgZGVjb2RlciwgUmVmUHRyPFJlY2VpdmVyPiYgY3VycmVudFJlY2VpdmVy
KQoreworICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGVzdGluYXRpb25JRCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChtX2N1cnJlbnREZXN0aW5hdGlvbklEICE9IGRl
c3RpbmF0aW9uSUQpIHsKKyAgICAgICAgbV9jdXJyZW50RGVzdGluYXRpb25JRCA9IGRlc3RpbmF0
aW9uSUQ7CisgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7CisgICAgfQorICAgIHJl
bGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiBkZWNvZGVy
LCBSZWNlaXZlciYgcmVjZWl2ZXIpCit7CisgICAgcmVjZWl2ZXIuZGlkUmVjZWl2ZVN0cmVhbU1l
c3NhZ2UoKnRoaXMsIGRlY29kZXIpOworICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
bGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmIGRl
Y29kZXIpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2U7CisgICAgewor
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2sp
OworICAgICAgICBpZiAobV9vdXRPZlN0cmVhbU1lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbWVzc2FnZSA9IG1fb3V0T2ZTdHJlYW1NZXNzYWdl
cy50YWtlRmlyc3QoKTsKKyAgICB9CisgICAgaWYgKCFtZXNzYWdlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBSZWZQdHI8UmVjZWl2ZXI+IHJlY2VpdmVyOworICAgIHsKKyAgICAgICAg
YXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpOworICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgIHJlY2Vp
dmVyID0gbV9yZWNlaXZlcnMuZ2V0KGtleSk7CisgICAgfQorICAgIGlmIChyZWNlaXZlcikgewor
ICAgICAgICByZWNlaXZlci0+ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKnRoaXMsICptZXNzYWdl
KTsKKyAgICAgICAgaWYgKCFtZXNzYWdlLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1fY29u
bmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZS0+bWVzc2Fn
ZU5hbWUoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgLy8gSWYgcmVjZWl2ZXIgZG9lcyBub3QgZXhpc3QgaWYgaXQgaGFzIGJlZW4gcmVtb3ZlZCBi
dXQgbWVzc2FnZXMgYXJlIHN0aWxsIHBlbmRpbmcgdG8gYmUKKyAgICAvLyBwcm9jZXNzZWQuIEl0
J3Mgb2sgdG8gc2tpcCBzdWNoIG1lc3NhZ2VzLgorICAgIC8vIEZJWE1FOiBOb3RlLCBjb3JyZXNw
b25kaW5nIHNraXAgaXMgbm90IHBvc3NpYmxlIGF0IHRoZSBtb21lbnQgZm9yIHN0cmVhbSBtZXNz
YWdlcy4KKyAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBvc2l0aW9uKCkpOworICAg
IHJldHVybiB0cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9jb2NvYS9NYWNoUG9ydC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2Ev
TWFjaFBvcnQuaAppbmRleCA3ODU0ZmE4ZjE4NjhmYjhlNDU2MjI4OWZkZGY2ZjI3OTVhZjJkOTBk
Li44M2Q5OWYwY2JjOGZlMDQ4MjBiNDc4M2M5YzA3NmFiNTdhM2VhYjJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmgKQEAgLTI1LDkgKzI1LDggQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiQXR0
YWNobWVudC5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCiAK
IG5hbWVzcGFjZSBJUEMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQppbmRleCBlZDA4YzczOTc3MDIyMmZjNWM0YzQ2YzMzNDc4YWMxMDMwMWE5OTg4Li5hYzllNzgy
ZTIxODMxODFiYzk4NTM1ZDVkZTg0ZmU4MDVhZjA3ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTI0LDggKzI0LDkgQEAgaW1wb3J0IGNvbGxlY3Rpb25z
CiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIAorZnJvbSBtb2RlbCBpbXBvcnQgTWVzc2FnZVJlY2Vp
dmVyLCBNZXNzYWdlCiBmcm9tIHdlYmtpdCBpbXBvcnQgcGFyc2VyCi1mcm9tIHdlYmtpdC5tb2Rl
bCBpbXBvcnQgQlVJTFRJTl9BVFRSSUJVVEUsIEFTWU5DX0FUVFJJQlVURSwgU1lOQ0hST05PVVNf
QVRUUklCVVRFLCBNQUlOVEhSRUFEQ0FMTEJBQ0tfQVRUUklCVVRFCitmcm9tIHdlYmtpdC5tb2Rl
bCBpbXBvcnQgQlVJTFRJTl9BVFRSSUJVVEUsIEFTWU5DX0FUVFJJQlVURSwgU1lOQ0hST05PVVNf
QVRUUklCVVRFLCBNQUlOVEhSRUFEQ0FMTEJBQ0tfQVRUUklCVVRFLCBTVFJFQU1fQVRUUklCVVRF
LCBXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURQogCiBfbGljZW5zZV9oZWFkZXIgPSAiIiIvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgpAQCAtNTMsMTMgKzU0LDExIEBAIF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCiAKICIiIgogCi1X
QU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24nCiBXQU5UU19ESVNQ
QVRDSF9NRVNTQUdFX0FUVFJJQlVURSA9ICdXYW50c0Rpc3BhdGNoTWVzc2FnZScKIFdBTlRTX0FT
WU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFID0gJ1dhbnRzQXN5bmNEaXNwYXRjaE1lc3Nh
Z2UnCiBMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFID0gJ0xlZ2FjeVJlY2VpdmVyJwogTk9UX1JF
RkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFID0gJ05vdFJlZkNvdW50ZWQnCiAKLQogZGVmIHJl
Y2VpdmVyX2VudW1lcmF0b3Jfb3JkZXJfa2V5KHJlY2VpdmVyX25hbWUpOgogICAgIGlmIHJlY2Vp
dmVyX25hbWUgPT0gJ0lQQyc6CiAgICAgICAgIHJldHVybiAxCkBAIC0yMTEsNyArMjEwLDcgQEAg
ZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKToKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJh
Y2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6TWFpblRocmVhZDtc
bicpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNh
bGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDtcbicpCi0gICAgICAgIGlmIG1lc3NhZ2UuaGFz
X2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0
ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICBpZiAobWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZ
TkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJ
QlVURSkpIGFuZCBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9pZCBzZW5kKHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYnKQogICAgICAgICAgICAg
aWYgbGVuKHNlbmRfcGFyYW1ldGVycyk6CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
LCAlcycgJSBjb21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycykKQEAgLTI1OSw2ICsyNTgsNyBA
QCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgIHJldHVy
biBmcm96ZW5zZXQoWwogICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNlJywKICAgICAgICAgJ0lQ
Qzo6Rm9udFJlZmVyZW5jZScsCisgICAgICAgICdJUEM6OlNlbWFwaG9yZScsCiAgICAgICAgICdN
YWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAgICAgICdTdHJpbmcnLApA
QCAtNTcxLDEwICs1NzEsMTUgQEAgZGVmIHN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIs
IG1lc3NhZ2UpOgogICAgICAgICBkaXNwYXRjaF9mdW5jdGlvbiArPSAnQXN5bmMnCiAKICAgICB3
YW50c19jb25uZWN0aW9uID0gbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJ
QlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRF
KQorICAgIG1heWJlX3JlcGx5X2VuY29kZXIgPSAiLCAqcmVwbHlFbmNvZGVyIgorICAgIGlmIHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CisgICAgICAgIG1heWJlX3Jl
cGx5X2VuY29kZXIgPSAnJworICAgIGVsaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9O
T1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6
CisgICAgICAgIG1heWJlX3JlcGx5X2VuY29kZXIgPSAnLCByZXBseUVuY29kZXInCiAKICAgICBy
ZXN1bHQgPSBbXQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUoKSkge1xuJyAlIChyZWNlaXZlci5uYW1lLCBt
ZXNzYWdlLm5hbWUpKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdl
czo6JXM6OiVzPiglc2RlY29kZXIsICVzcmVwbHlFbmNvZGVyLCB0aGlzLCAmJXMpO1xuJyAlIChk
aXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnY29ubmVjdGlv
biwgJyBpZiB3YW50c19jb25uZWN0aW9uIGVsc2UgJycsICcnIGlmIG1lc3NhZ2UuaGFzX2F0dHJp
YnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lO
Q19BVFRSSUJVVEUpIGVsc2UgJyonLCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2VpdmVyLCBtZXNzYWdl
KSkpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+
KCVzZGVjb2RlciVzLCB0aGlzLCAmJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2
ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnY29ubmVjdGlvbiwgJyBpZiB3YW50c19jb25uZWN0aW9u
IGVsc2UgJycsIG1heWJlX3JlcGx5X2VuY29kZXIsIGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIs
IG1lc3NhZ2UpKSkKICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVybjtcbicpCiAgICAg
cmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCiAgICAgcmV0dXJuIHN1cnJvdW5kX2luX2NvbmRpdGlv
bignJy5qb2luKHJlc3VsdCksIG1lc3NhZ2UuY29uZGl0aW9uKQpAQCAtODc0LDcgKzg3OSw3IEBA
IGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICBpZiBtZXNz
YWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZSBhbmQgKG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShT
WU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRS
SUJVVEUpKToKICAgICAgICAgICAgIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXMuYXBwZW5kKG1l
c3NhZ2UpCiAKLSAgICBpZiBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzOgorICAgIGlmIGRlbGF5
ZWRfb3JfYXN5bmNfbWVzc2FnZXMgYW5kIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVB
TV9BVFRSSUJVVEUpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCduYW1lc3BhY2UgTWVzc2FnZXMg
e1xuXG5uYW1lc3BhY2UgJXMge1xuXG4nICUgcmVjZWl2ZXIubmFtZSkKIAogICAgICAgICBmb3Ig
bWVzc2FnZSBpbiBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzOgpAQCAtOTIyLDI1ICs5MjcsNDQg
QEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICBhc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkKIAotICAgIGlmIGFz
eW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVT
U0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElT
UEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgotICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVz
OjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykp
CisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykK
LSAgICAgICAgaWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVD
RUlWRVJfQVRUUklCVVRFKToKKyAgICAgICAgYXNzZXJ0KHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUo
Tk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKSkKKyAgICAgICAgYXNzZXJ0KG5vdCBy
ZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSkK
KyAgICAgICAgYXNzZXJ0KG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJ
U1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSkKKworICAgICAgICByZXN1bHQgKz0gW2FzeW5jX21l
c3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3IgbWVzc2FnZSBpbiBhc3luY19t
ZXNzYWdlc10KKyAgICAgICAgcmVzdWx0ICs9IFtzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2Vp
dmVyLCBtZXNzYWdlKSBmb3IgbWVzc2FnZSBpbiBzeW5jX21lc3NhZ2VzXQorCisgICAgICAgIGlm
IChyZWNlaXZlci5zdXBlcmNsYXNzKToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAl
czo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7XG4nICUgKHJl
Y2VpdmVyLnN1cGVyY2xhc3MpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTtcbicpCisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pO1xuJykKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ31cbicpCisgICAgZWxpZiBhc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNf
YXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSBvciByZWNlaXZlci5o
YXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKKyAg
ICAgICAgcmVjZWl2ZV92YXJpYW50ID0gcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0
cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycKKyAgICAgICAgcmVzdWx0
LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVj
ZWl2ZV92YXJpYW50KSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKKyAgICAgICAgaWYg
bm90IChyZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJ
QlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKSk6CiAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyk7XG4nKQogCiAgICAgICAgIHJlc3VsdCArPSBbYXN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQo
cmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIGFzeW5jX21lc3NhZ2VzXQorCiAgICAg
ICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRS
SUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVT
U0FHRV9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChkaXNw
YXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlcikpXG4nKQogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQogICAgICAgICBpZiAocmVjZWl2ZXIuc3VwZXJj
bGFzcyk6Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJXM6OmRpZFJlY2VpdmVNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNsYXNzKSkKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcywgcmVjZWl2ZV92YXJp
YW50KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVT
RURfUEFSQU0oY29ubmVjdGlvbik7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IFVOVVNFRF9QQVJBTShkZWNvZGVyKTtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4n
KQogCi0gICAgaWYgc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRT
X0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKKyAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0
dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKSBhbmQgKHN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIu
aGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkpOgogICAgICAg
ICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRp
ZFJlY2VpdmVTeW5jJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgcmVwbHlFbmNv
ZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19h
dHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJykpCiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJ3tcbicpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlc191bml0dGVzdC5weQppbmRleCA0OGQ4ZTFiNjI3Y2MzMWIxOGZhMWM1MGZhYmVlZWQ5
NzFiZDE1YmU5Li5lODllMTdlMTQwN2I1YjU2NmJjMTkyYzQwYTk5YTI4ZDhiZjhkY2RjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkK
QEAgLTQ2LDYgKzQ2LDggQEAgX3Rlc3RfcmVjZWl2ZXJfbmFtZXMgPSBbCiAgICAgJ1Rlc3RXaXRo
SWZNZXNzYWdlJywKICAgICAnVGVzdFdpdGhTZW1hcGhvcmUnLAogICAgICdUZXN0V2l0aEltYWdl
RGF0YScsCisgICAgJ1Rlc3RXaXRoU3RyZWFtJywKKyAgICAnVGVzdFdpdGhTdHJlYW1CdWZmZXIn
CiBdCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5w
eSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKaW5kZXggNDgwMGZhNGVm
Y2E5Njc4YTg5YWZjN2U0MzRmMjZiMzQ2Y2U4Y2Y2Yy4uNTA3ZTA0MmE1NzdmZjhhMDIzMzcyYzNh
NjA3YWIxMDhhNWZhOTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tb2RlbC5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5CkBA
IC0yOCw2ICsyOCw4IEBAIEJVSUxUSU5fQVRUUklCVVRFID0gIkJ1aWx0aW4iCiBBU1lOQ19BVFRS
SUJVVEUgPSAiQXN5bmMiCiBNQUlOVEhSRUFEQ0FMTEJBQ0tfQVRUUklCVVRFID0gIk1haW5UaHJl
YWRDYWxsYmFjayIKIFNZTkNIUk9OT1VTX0FUVFJJQlVURSA9ICdTeW5jaHJvbm91cycKK1NUUkVB
TV9BVFRSSUJVVEUgPSAiU3RyZWFtIgorV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUgPSAnV2Fu
dHNDb25uZWN0aW9uJwogCiBjbGFzcyBNZXNzYWdlUmVjZWl2ZXIob2JqZWN0KToKICAgICBkZWYg
X19pbml0X18oc2VsZiwgbmFtZSwgc3VwZXJjbGFzcywgYXR0cmlidXRlcywgbWVzc2FnZXMsIGNv
bmRpdGlvbik6CkBAIC03Myw3ICs3NSw5IEBAIGlwY19yZWNlaXZlciA9IE1lc3NhZ2VSZWNlaXZl
cihuYW1lPSJJUEMiLCBzdXBlcmNsYXNzPU5vbmUsIGF0dHJpYnV0ZXM9W0JVSUxUSU5fCiAgICAg
TWVzc2FnZSgnV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcnLCBbXSwgW10sIGF0dHJpYnV0
ZXM9W0JVSUxUSU5fQVRUUklCVVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEVdLCBjb25kaXRpb249
Tm9uZSksCiAgICAgTWVzc2FnZSgnU3luY01lc3NhZ2VSZXBseScsIFtdLCBbXSwgYXR0cmlidXRl
cz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSksCiAgICAgTWVzc2FnZSgnSW5p
dGlhbGl6ZUNvbm5lY3Rpb24nLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRF
XSwgY29uZGl0aW9uPSJQTEFURk9STShDT0NPQSkiKSwKLSAgICBNZXNzYWdlKCdMZWdhY3lTZXNz
aW9uU3RhdGUnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0
aW9uPU5vbmUpCisgICAgTWVzc2FnZSgnTGVnYWN5U2Vzc2lvblN0YXRlJywgW10sIFtdLCBhdHRy
aWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKKyAgICBNZXNzYWdl
KCdTZXRTdHJlYW1EZXN0aW5hdGlvbklEJywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FU
VFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKKyAgICBNZXNzYWdlKCdQcm9jZXNzT3V0T2ZTdHJl
YW1NZXNzYWdlJywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRp
dGlvbj1Ob25lKQogXSwgY29uZGl0aW9uPU5vbmUpCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKaW5kZXggMjFiMzBhZTIwZmExMDMzZmE2NjRlMDNhZGJk
ODgwODZhNmM3MmM0Mi4uZTE5N2JkM2MyNjdhZTQxMWE0NTAwZDBmZjY5Mzk4NjAzYTQ1MDgwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCkBAIC02LDYg
KzYsOCBAQCBURVNUUyA9IFwKICAgICBUZXN0V2l0aElmTWVzc2FnZSBcCiAgICAgVGVzdFdpdGhT
ZW1hcGhvcmUgXAogICAgIFRlc3RXaXRoSW1hZ2VEYXRhIFwKKwlUZXN0V2l0aFN0cmVhbSBcCisJ
VGVzdFdpdGhTdHJlYW1CdWZmZXIgXAogIwogCiBhbGw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKaW5kZXggN2Q1YWZjOTE4ZTVi
MDViOGY3YTVjZDYyMzg1MmI1YzBlMGMxOGEwMy4uMmU3Y2ExNWU3NGViYmRhODZjNzlmOGZjMGI4
ZjM4YjRiNWY3NTg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvTWVzc2FnZU5hbWVzLmNwcApAQCAtMTM0LDYgKzEzNCwxMCBAQCBjb25zdCBjaGFyKiBk
ZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBuYW1lKQogICAgICAgICByZXR1cm4gIkluaXRpYWxpemVD
b25uZWN0aW9uIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGU6CiAg
ICAgICAgIHJldHVybiAiTGVnYWN5U2Vzc2lvblN0YXRlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlOgorICAgICAgICByZXR1cm4gIlByb2Nlc3NPdXRP
ZlN0cmVhbU1lc3NhZ2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0
aW9uSUQ6CisgICAgICAgIHJldHVybiAiU2V0U3RyZWFtRGVzdGluYXRpb25JRCI7CiAgICAgY2Fz
ZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseToKICAgICAgICAgcmV0dXJuICJTeW5jTWVz
c2FnZVJlcGx5IjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVz
dEFzeW5jTWVzc2FnZVJlcGx5OgpAQCAtMjI0LDYgKzIyOCw4IEBAIFJlY2VpdmVyTmFtZSByZWNl
aXZlck5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiAgICAgICAgIHJldHVybiBSZWNlaXZl
ck5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlczsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpJbml0
aWFsaXplQ29ubmVjdGlvbjoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpMZWdhY3lTZXNzaW9uU3Rh
dGU6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZToKKyAg
ICBjYXNlIE1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklEOgogICAgIGNhc2UgTWVz
c2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHk6CiAgICAgICAgIHJldHVybiBSZWNlaXZlck5hbWU6
OklQQzsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5j
TWVzc2FnZVJlcGx5OgpAQCAtNDAxLDYgKzQwNywxMCBAQCBib29sIGlzVmFsaWRNZXNzYWdlTmFt
ZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICNlbmRpZgogICAgIGlmIChtZXNzYWdlTmFtZSA9
PSBJUEM6Ok1lc3NhZ2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGUpCiAgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0
T2ZTdHJlYW1NZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5h
bWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlN5
bmNNZXNzYWdlUmVwbHkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01l
c3NhZ2VOYW1lcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdl
TmFtZXMuaAppbmRleCBlZmVhMjMwMmQ2ODdiZTRmNTIyNjkwZjc4YTNjNjRmNjM2ZTMxZmQ4Li5h
MjJiZDFjZmQ3ZjczYmU5ZWFiMWNiYmMwZmYwYzZlZjA2YTA2NDA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKQEAgLTkzLDYgKzkz
LDggQEAgZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsKICAgICAsIFRlc3RXaXRo
b3V0QXR0cmlidXRlc19Ub3VjaEV2ZW50CiAgICAgLCBJbml0aWFsaXplQ29ubmVjdGlvbgogICAg
ICwgTGVnYWN5U2Vzc2lvblN0YXRlCisgICAgLCBQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlCisg
ICAgLCBTZXRTdHJlYW1EZXN0aW5hdGlvbklECiAgICAgLCBTeW5jTWVzc2FnZVJlcGx5CiAgICAg
LCBUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVJlcGx5CiAgICAgLCBUZXN0V2l0
aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9uUmVwbHkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkMGY1MjhjNjljZGVmZGRhOWM0ODY3OTEzOGM2
MzhiOGFjMGNiMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjcgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUZXN0cyBTdHJlYW0gcmVj
ZWl2ZXIgYXR0cmlidXRlLgorbWVzc2FnZXMgLT4gVGVzdFdpdGhTdHJlYW0gTm90UmVmQ291bnRl
ZCBTdHJlYW0geworICAgIHZvaWQgU2VuZFN0cmluZyhTdHJpbmcgdXJsKQorICAgIHZvaWQgU2Vu
ZFN0cmluZ1N5bmNocm9uaXplZChTdHJpbmcgdXJsKSAtPiAoaW50NjRfdCByZXR1cm4pCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtQnVmZmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTcwYWM4OWEy
NWYwMzkyMTlmZTQxODEwNWIyYzFkMDRhZTBjN2U4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlci5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisj
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyMgVGVzdHMgU3RyZWFtIHJlY2VpdmVyIGF0dHJpYnV0ZS4KK21lc3NhZ2VzIC0+IFRl
c3RXaXRoU3RyZWFtQnVmZmVyICB7CisgICAgdm9pZCBTZW5kU3RyZWFtQnVmZmVyKElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciBzdHJlYW0pCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1C
dWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5YzkyNDBhNGViMWFiNTU3NDA5
NjAyMjkxZGMxMjczMTk4N2YwNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNw
cApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVmZmVyLmgiCisKKyNpbmNsdWRlICJEZWNvZGVy
LmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFRlc3RXaXRoU3RyZWFtQnVmZmVyOjpkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZl
cjo6U2VuZFN0cmVhbUJ1ZmZlcjo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2Fn
ZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI+KGRlY29k
ZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6c2VuZFN0cmVhbUJ1ZmZlcik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIFVO
VVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaCBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZhMjRlYmRkMjAwZjMzOTA0NzdkZmFmN2NkODU3MTkxYmQ1M2IyODcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtQnVmZmVyTWVzc2FnZXMuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICog
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJUZXN0V2l0
aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBJUEMg
eworY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIE1lc3NhZ2Vz
IHsKK25hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbUJ1ZmZlciB7CisKK3N0YXRpYyBpbmxpbmUgSVBD
OjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6
UmVjZWl2ZXJOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjsKK30KKworY2xhc3MgU2VuZFN0cmVh
bUJ1ZmZlciB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25z
dCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImPjsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3Nh
Z2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1
ZmZlcl9TZW5kU3RyZWFtQnVmZmVyOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0g
ZmFsc2U7CisKKyAgICBleHBsaWNpdCBTZW5kU3RyZWFtQnVmZmVyKGNvbnN0IElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciYgc3RyZWFtKQorICAgICAgICA6IG1fYXJndW1lbnRzKHN0cmVhbSkK
KyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0
cmVhbUJ1ZmZlcgorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1Jl
cGxpZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJl
YW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2ZhMmFkN2Q1MDYzMDBmM2Nj
YjM5MGYxOTcyNTlkOTBlNjkzZjMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5o
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
ICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFt
ZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbUJ1ZmZlciB7CisKKwor
fSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIKK30gLy8gbmFtZXNwYWNlIE1lc3Nh
Z2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgz
OTg4NTVhZDU2ZTk1MTk5N2M5ZDJhYjNmODg4MDk0Yzg4OTIzMjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2Fn
ZVJlY2VpdmVyLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtLmgiCisKKyNpbmNsdWRlICJB
cmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVN
ZXNzYWdlLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oIgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBUZXN0
V2l0aFN0cmVhbTo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5k
U3RyaW5nOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZz4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFt
OjpzZW5kU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNo
cm9uaXplZDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6
VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ+KGRlY29kZXIsIHRoaXMsICZU
ZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZ1N5bmNocm9uaXplZCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtTWVzc2FnZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwYmZlYmFiMjM3MmMxZjY2
MDVjNTU4OTQ1OTM4YmYxZTRlN2FhZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaApAQCAtMCwwICsx
LDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAq
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1
bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdl
TmFtZXMuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oIgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKworbmFtZXNwYWNlIE1lc3Nh
Z2VzIHsKK25hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbSB7CisKK3N0YXRpYyBpbmxpbmUgSVBDOjpS
ZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCit7CisgICAgcmV0dXJuIElQQzo6UmVj
ZWl2ZXJOYW1lOjpUZXN0V2l0aFN0cmVhbTsKK30KKworY2xhc3MgU2VuZFN0cmluZyB7CitwdWJs
aWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsKKwor
ICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VO
YW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBTZW5kU3RyaW5nKGNvbnN0IFN0cmluZyYg
dXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29u
c3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7
Cit9OworCitjbGFzcyBTZW5kU3RyaW5nU3luY2hyb25pemVkIHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OworCisgICAgc3RhdGljIElQ
Qzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRo
U3RyZWFtX1NlbmRTdHJpbmdTeW5jaHJvbml6ZWQ7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1cGxlPGludDY0X3QmPjsK
KyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8aW50NjRfdD47CisgICAgZXhw
bGljaXQgU2VuZFN0cmluZ1N5bmNocm9uaXplZChjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAg
OiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYg
YXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0KK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVz
c2FnZXNSZXBsaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJjNWEwNzhkZTAxZWMxNDMw
Zjg5NGYyMGNiOWMyZjkxNTVlN2NhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaApAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisKK25hbWVzcGFj
ZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0geworCisKK30gLy8gbmFtZXNw
YWNlIFRlc3RXaXRoU3RyZWFtCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5k
ZXggZjliYTVkYzc4MjRiMWU1YjAzZTUzZjk4YjdhN2Y4ZTRkZWYyMWM2NC4uNDU4OTI2ZjI1YmQ2
ZDUxNjJhNzU5Y2UwYzczZjhlYTFlYjE3ZDVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNTAsNiArMTUw
LDEwIEBAIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3BwIEBuby11bmlmeQogUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuY3BwIEBuby11bmlmeQorUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rp
b24uY3BwIEBuby11bmlmeQorUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3Bw
IEBuby11bmlmeQorUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwIEBu
by11bmlmeQorUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11bmlm
eQogUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CiAKIFBsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCmluZGV4IGMzMzA3ODI1
YjIwMDg2ZGVkNGM4NmM2NDg4Y2U1ZGQ1N2VjMGMzNTguLjg5NTIwOGMzYmMyMjZkNmZiMTI4NjFk
YTQzN2NkYTM4MWY0OGQ2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggMzAxZDBlZDgz
MGRiZWQ5MDhjYmIyNzg4NmYwNGE4ZmVlYTlmZDg5ZS4uMjNhYjEwZDYzYTRmNGEzZmQyMGNlZDRk
NzMwMTczZjQ3NWRjN2Y1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFQSVdlYnNp
dGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRlICJG
b3JtRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIlVSTFNjaGVt
ZVRhc2tQYXJhbWV0ZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA2MDYxYTYzN2RiOTNiYjBhZmM2ZDljNjUxNmMzZDAzZTIzNWI1
Y2MxLi5mMDA2ZTUxYWIyMzgzMDg0NDJlMTY0MGZmN2U4YzY1NjRlNzNmNDY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMjgsNiAr
MTMyOCwxNiBAQAogCQk3QjQ4M0YyMDI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0
ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLzsgfTsKIAkJ
N0I0ODNGMjEyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUQyNUNE
REE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovOyB9OwogCQk3QjQ4
M0YyMjI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFFMjVDRERBOUIwMDEy
MDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovOyB9OworCQk3QjczMTIzQTI1Q0M4NTI1
MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLzsgfTsKKwkJN0I3MzEyM0IyNUNDODUyNTAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovOyB9OworCQk3QjczMTIzQzI1Q0M4NTI1MDAzQjI3
OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzMyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNs
aWVudENvbm5lY3Rpb24uaCAqLzsgfTsKKwkJN0I3MzEyM0QyNUNDODUyNTAwM0IyNzk2IC8qIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I3MzEyMzQyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuY3BwICovOyB9OworCQk3QjczMTIzRTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I3MzEyMzUyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWUuaCAqLzsgfTsKKwkJN0I3MzEyM0YyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNs
aWVudENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I3MzEyMzYyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rp
b24uY3BwICovOyB9OworCQk3QjczMTI0MDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjczMTIzNzI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5j
cHAgKi87IH07CisJCTdCNzMxMjQxMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjczMTIzODI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oICovOyB9
OworCQk3QjczMTI0MjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM5
MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oICovOyB9OworCQk3
QkFCMTExMDI1REQwMkIzMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JBQjEx
MEYyNUREMDJCMjAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCAq
LzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
ckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVn
aW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzFCQTMz
RTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0MxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQ
SURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTQ1NDAsNiArNDU1MCwxNSBAQAogCQk3QjQ4M0YxRDI1
Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1l
c3NhZ2VSZWNlaXZlUXVldWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
c3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNjRD
MEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzIyNUND
ODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjMzMjVDQzg1MjMwMDNCMjc5NiAv
KiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0I3MzEyMzQyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM1MjVDQzg1MjQw
MDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzYyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNsaWVu
dENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
NzMxMjM3MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzODI1Q0M4NTI0MDAzQjI3
OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCNzMxMjM5MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uRW5j
b2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NTI1NEFGREVBMDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NzI1NEFGRTE3MDA2RUVC
OEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDU0Nyw2ICs0NTY2LDcgQEAKIAkJN0I5MDQxNjkyNTRBRkVBNzAwNkVFQjhD
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5
MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCOTA0MTZEMjU1MDEwOEMwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QkFCMTEwRjI1REQwMkIyMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjU3
MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25z
R2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QkU3MjY2ODI1NzY4MEVGMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUw
IC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk4NSwxMCArNzAwNSwyMCBAQAog
CQkJCTFBM0VFRDBEMTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNzYWdlUmVjZWl2ZXJNYXAuaCAqLywK
IAkJCQkxQUFCMDM3NzE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5jcHAgKi8sCiAJ
CQkJMUFBQjAzNzgxODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuaCAqLywKKwkJCQk3
QkFCMTEwRjI1REQwMkIyMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZS5oICovLAogCQkJCTJEQzE4MDAxRDkwREREMTVGQzY5OTFBOSAvKiBTaGFyZWRCdWZmZXJDb3B5
LmNwcCAqLywKIAkJCQk1Q0M1REI5MTIxNDg4RTE2MDA2Q0I4QTggLyogU2hhcmVkQnVmZmVyQ29w
eS5oICovLAogCQkJCTJEQzE4NTVFREJGQjg1MEJBMEI2RDA2RCAvKiBTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmNwcCAqLywKIAkJCQkyREMxODgxQUNCQ0FCNUQ1N0M1QzZFRjAgLyogU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oICovLAorCQkJCTdCNzMxMjM2MjVDQzg1MjQwMDNCMjc5NiAv
KiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk3QjczMTIzMzI1Q0M4NTIzMDAz
QjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oICovLAorCQkJCTdCNzMxMjM0MjVDQzg1
MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCAqLywKKwkJCQk3QjczMTIz
MTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovLAorCQkJCTdC
NzMxMjM5MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oICovLAor
CQkJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmNwcCAqLywKKwkJCQk3QjczMTIzNTI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oICovLAorCQkJCTdCNzMxMjM3MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk3QjczMTIzODI1Q0M4NTI0MDAzQjI3OTYgLyog
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oICovLAogCQkJCTFBRTAwRDY5MTgzMjdDMTIwMDA4N0RE
NyAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwICovLAogCQkJCTFBRTAwRDZBMTgzMjdDMTIwMDA4N0RE
NyAvKiBTdHJpbmdSZWZlcmVuY2UuaCAqLywKIAkJCSk7CkBAIC0xMjAxOCw2ICsxMjA0OCw3IEBA
CiAJCQkJQkMyRDAyMTcxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25U
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFCNEE4RDEyOTZGMEEyMDAyMzk1MkYgLyogU2Fu
ZGJveEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFNTUyQzUxNkFFMDY1RjAwNEVE
NjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEQ1NEQwNDIxRjFENzJEMDA3RTNDMzYgLyog
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY5MzFDMUMxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMxQzFDMThDNTcxMTkwMERC
QjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEyMDY3LDYgKzEyMDk4LDExIEBACiAJCQkJOTM2QjA1OTgyMzAzOTA5NzAwMkZD
MDZCIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzY4RUVERjIz
MDNBOUVEMDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDY1RjRFMDYyMzBCMkU5NTAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIzQzI1Q0M4NTI1MDAzQjI3OTYgLyog
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyM0EyNUND
ODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTdCNzMxMjQyMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyM0UyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjQxMjVDQzg1MjUw
MDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUUwMEQ2QzE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyOTZCRDg1RDE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NjIyQjM1MTZDMDA4RDBFOEIgLyogU3ViRnJhbWVTT0F1
dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTEzODk0LDYgKzEzOTMwLDEw
IEBACiAJCQkJOTNENkI3ODIyNTRDQ0NGNDAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzM0REVEMTZERThG
ODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5MzY4RUVERTIzMDNBOTAyMDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I3MzEyM0YyNUNDODUyNTAw
M0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
N0I3MzEyM0QyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0I3MzEyM0IyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I3MzEyNDAyNUNDODUyNTAw
M0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkQ5MkE3ODMyMTJCNkE3MTAwRjQ5M0ZEIC8qIFN0cmluZ1JlZmVyZW5jZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRDExQjc1MTIxMjZBMjgyMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTEtbW0u
bW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc1MjIxMjZBMjgyMDA2Rjg4NzggLyogVW5pZmll
ZFNvdXJjZTEuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmNwcAppbmRleCBmMjliZTAwNmViN2I5NzY0Yjc4MmQ5MTYyNWM4MDE2MGZmOGYz
NmYzLi5iMTliYzFlMGEwMTkwN2Y5Y2VkZDYwYTU2NTc1ZmFkZjVjOWQ4ODM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTQ4LDEzICs0OCwxNiBAQCBS
ZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6Y3JlYXRlKGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMpKTsKIH0KIAorc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3QgZGVmYXVsdFN0cmVhbVNpemUgPSAxIDw8IDIxOworCiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9u
JiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiBhdHRycykKICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlKGF0dHJzKQog
ICAgICwgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCisgICAg
LCBtX3N0cmVhbUNvbm5lY3Rpb24oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBk
ZWZhdWx0U3RyZWFtU2l6ZSkKIHsKICAgICBncHVQcm9jZXNzQ29ubmVjdGlvbi5hZGRDbGllbnQo
KnRoaXMpOwogICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJ
bnQ2NCgpLCAqdGhpcyk7Ci0gICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNz
YWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBjb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBtX3N0cmVhbUNvbm5lY3Rp
b24uc3RyZWFtQnVmZmVyKCkpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2
ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkKQEAgLTE2Myw3ICsxNjYsNyBA
QCBHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRFcnJvcigpCiAgICAg
cmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9lcnJvcldoZW5Db250ZXh0SXNMb3N0LCBOT19FUlJPUik7
CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29s
IGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVl
c3RlZEV4dGVuc2lvbnMpCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0Ny
ZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSwgU3RyaW5n
JiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKIHsK
ICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNzIsNiArMTc1
LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wg
ZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZhaWxhYmwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBBU1NFUlQoIW1fZGlkSW5pdGlhbGl6ZSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLnNldFdh
a2VVcFNlbWFwaG9yZShXVEZNb3ZlKHNlbWFwaG9yZSkpOwogICAgIG1fZGlkSW5pdGlhbGl6ZSA9
IHRydWU7CiAgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRlbnNpb25zLCByZXF1ZXN0ZWRFeHRl
bnNpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXgg
ODMxYjRiMGFiMTM3ZTZhYWY4MzU5NmUwYjBhMDc2ZGYxZTA5MTc2MS4uNzg5N2Y2Y2ZlODNjZWM1
NWZmYTJmNjNhOTc0ZmFhN2YwMTNhYTkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmgKQEAgLTI5LDEwICsyOSwxMSBAQAogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKKyNp
bmNsdWRlICJJUENTZW1hcGhvcmUuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNp
bmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIgorI2lu
Y2x1ZGUgIlN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oPgpAQCAtMzM0LDE5
ICszMzUsMTggQEAgcHJvdGVjdGVkOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKICAgICB7Ci0gICAgICAgIGNv
bm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLnRvVUludDY0KCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl
dHVybiBtX3N0cmVhbUNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKICAgICB9CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9u
OjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkm
JiByZXBseSkKICAgICB7Ci0gICAgICAgIHJldHVybiBjb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLnRvVUludDY0KCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIHJldHVybiBtX3N0
cmVhbUNvbm5lY3Rpb24uc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwogICAg
IH0KICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2dw
dVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCk7IH0KIAogcHJpdmF0ZToKICAgICAvLyBN
ZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIHdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNj
ZWVkLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRl
bnNpb25zKTsKKyAgICB2b2lkIHdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFw
aG9yZSYmLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRF
eHRlbnNpb25zKTsKICAgICB2b2lkIHdhc0xvc3QoKTsKICAgICB2b2lkIHdhc0NoYW5nZWQoKTsK
IApAQCAtMzYwLDggKzM2MCw4IEBAIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24q
IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgYm9vbCBtX2RpZEluaXRpYWxpemUgeyBmYWxz
ZSB9OwogICAgIEdDR0xlbnVtIG1fZXJyb3JXaGVuQ29udGV4dElzTG9zdCA9IE5PX0VSUk9SOwot
CiAgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIHsgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAg
SVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uIG1fc3RyZWFtQ29ubmVjdGlvbjsKIH07CiAKIC8v
IFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxp
c3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhN2M2NDEy
YWM5NDZlMjU4Y2UwMTM4YmM0N2JjMzg2MjE5NTAyMWQ3Li5mNDNlYzBhMmVhYTM4NGU0ZWRlOGRk
NDQwZDllZmUwMjhhY2I3YmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgdm9pZCBXYXNDcmVhdGVkKGJvb2wg
ZGlkU3VjY2VlZCwgU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMpCisgICAgdm9pZCBXYXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpT
ZW1hcGhvcmUgc3RyZWFtV2FrZVVwU2VtYXBob3JlLCBTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9u
cywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKICAgICB2b2lkIFdhc0xvc3QoKQogICAg
IHZvaWQgV2FzQ2hhbmdlZCgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIuaAppbmRleCA3YWFkN2RhMjA3MGRlODNkMTRjNzFkZDk4MjQ3NGFhZjEwNmE3ZGI1Li5m
MTM0MWRjZDI3NmQwYzEwMWU0NGJkZGExN2NlNDBiOGEzY2IzNjE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVz
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNw
ZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oCmluZGV4IGJi
ZTdmYzI2Y2YzMjM0NjY5NWU2MWZkMDFkNmEwYjIzMmRlMGQxODguLmE2MTFkYWJmNGViYjU2ZTdh
NDI1OTRkZDdiZDNiYjBjODFhNWM4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5j
bHVkZSAiTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYk1ETlNSZWdpc3Rl
ci5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDdhMzQwODhmMGRmZTE4ZmU3YjExNGFjMWIwMzhiZDc4YjI0YzAzMGQuLjQwYjVlODc0ZTEwYWMy
MDI1ZTlmNTUzZGFiZWY2NDU1ZWM4OTZkZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wMi0wNSAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIEdQVSBwcm9j
ZXNzIElQQyBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIGFzeW5jaHJvbm91cyBtZXNzYWdl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NjQx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM0MDY1MT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IG1lc3NhZ2UgcmVjZWl2ZXIgYXMgIlN0cmVhbSIsCisgICAgICAgIGEgbmV3IHZhcmlhbnQgb2Yg
cmVjZWl2ZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIw
MjEtMDItMTYgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVzZSBtYWtlSlNBcnJheSBpbiBib3RoIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMvSU9T
Lm1tLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsIGIvVG9v
bHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCmluZGV4IDU2ODVlOTA3NTM1M2ZkMWQyY2Vh
OTQ2MjA2YjU3ZTQ4YjQyNjYzZmQuLjgzNDYyODIzNDAxYzE2ODMwNzIyYWViMzU0NWVjZmVlZmI2
NGE4ODMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAorKysg
Yi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTg5LDcgKzg5LDcgQEAgY29u
dGV4dF9tZXNzYWdlc190ZW1wbGF0ZSA9ICgKICAgICB0ZW1wbGF0ZV9wcmVhbWJsZQogICAgICsg
IiIiI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAt
PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CittZXNzYWdlcyAtPiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAgIHZvaWQg
UmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxh
eUJ1ZmZlcikgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwNmU3NDc5YTJlNjU5ZTNhNzgzMDZkMzA0YmQy
MTkzYTAyMWY2NTJlLi5hZGE1ZGM4NzI0NDNjNzdhYmE0ZDIzODBjZjYyOGU0YTA2NzVlYjBiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDItMTcgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBHUFUgcHJvY2VzcyBJUEMgc2hvdWxkIHVz
ZSBzaGFyZWQgbWVtb3J5IGZvciBhc3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzIzNDA2NTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFyayBmZXcgdGVzdHMgYXMgbm90IHRpbWluZyBvdXQgbm93IHRoYXQgdGhl
IGltcGxlbWVudGF0aW9uIGlzIG5vdCBzbyBzbG93LgorCisgICAgICAgICogZ3B1LXByb2Nlc3Mv
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMi0xNiAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAg
PHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbc2VsZWN0b3JzXSA6Zm9jdXMtdmlzaWJsZSBw
YXJzaW5nIGFuZCBleHBlcmltZW50YWwgZmxhZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1
LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggM2I5MGMyYWJhYzFhZmUzNWRmODY0YTRhYmI5M2FiYjAwMjkwZmFh
NC4uZjNhZjkzYzU5NmM3ZDNhMDFkZDcyOTFjOTA0YmQyZDAwZWY5ODBkMCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNCw3ICszNCw3IEBAIGZhc3QvY2Fu
dmFzL3dlYmdsL3RleEltYWdlMkQtbXNlLWZsaXBZLXRydWUuaHRtbCBbIEZhaWx1cmUgXQogZmFz
dC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyRC12aWRlby1mbGlwWS1mYWxzZS5odG1sIFsgVGltZW91
dCBdCiBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELXZpZGVvLWZsaXBZLXRydWUuaHRtbCBb
IEZhaWx1cmUgXQogZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1hY3RpdmUtYmluZC5odG1sIFsg
RmFpbHVyZSBdCi1mYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBb
IFRpbWVvdXQgXQorZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwg
WyBTbG93IF0KIGZhc3QvY2FudmFzL3dlYmdsL3dlYmdsY29udGV4dGNoYW5nZWRldmVudC5odG1s
IFsgVGltZW91dCBdCiAKIGZhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC5odG1s
IFsgRmFpbHVyZSBdCkBAIC0yMzAsNyArMjMwLDYgQEAgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZQog
d2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRo
LXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lv
bnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQt
d2l0aC12aWRlby5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9yZW5k
ZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzEuMC4zL2NvbmZv
cm1hbmNlL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbCBbIFRpbWVvdXQgXQogd2ViZ2wv
MS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvZ2wtcGl4ZWxzdG9yZWkuaHRtbCBbIEZhaWx1cmUg
XQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtMmQtd2l0aC1jYW52YXMtcmdiNTY1Lmh0bWwgWyBGYWlsdXJlIF0KQEAgLTI0OSw3ICsyNDgs
NyBAQCB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXgtaW1hZ2Utd2ViZ2wuaHRt
bCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4cGFyYW1l
dGVyLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvdGV4dHVyZS1hY3RpdmUtYmluZC0yLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtYWN0aXZlLWJpbmQuaHRtbCBbIEZhaWx1cmUgXQot
d2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0
bWwgWyBUaW1lb3V0IF0KK3dlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3VuaWZvcm1zL3VuaWZvcm0t
c2FtcGxlcnMtdGVzdC5odG1sIFsgU2xvdyBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9jYW52
YXMvY2FudmFzLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uv
Y2FudmFzL2RyYXctc3RhdGljLXdlYmdsLXRvLW11bHRpcGxlLWNhbnZhcy10ZXN0Lmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2NhbnZhcy9kcmF3LXdlYmdsLXRvLWNh
bnZhcy10ZXN0Lmh0bWwgWyBGYWlsdXJlIF0KQEAgLTI2MSw3ICsyNjAsNiBAQCB3ZWJnbC8yLjAu
MC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtdmlkZW8uaHRt
bCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4
dHVyZS1oYWxmLWZsb2F0LXdpdGgtY2FudmFzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4w
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLXZpZGVv
Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3JlYWRpbmcvcmVhZC1w
aXhlbHMtdGVzdC5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9yZW5k
ZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzIuMC4wL2NvbmZv
cm1hbmNlL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbCBbIFRpbWVvdXQgXQogd2ViZ2wv
Mi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVk
X2J5dGUuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMv
Y2FudmFzL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwgWyBGYWlsdXJl
IF0KQEAgLTI4Nyw3ICsyODUsNyBAQCB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy93
ZWJnbF9jYW52YXMvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82Xwogd2ViZ2wvMi4w
LjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhLXJnYmEtdW5z
aWduZWRfYnl0ZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0
dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80
Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmds
X2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBbIEZh
aWx1cmUgXQotd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVy
cy10ZXN0Lmh0bWwgWyBUaW1lb3V0IF0KK3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3VuaWZvcm1z
L3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgU2xvdyBdCiB3ZWJnbC8yLjAuMC9jb25mb3Jt
YW5jZTIvcmVhZGluZy9yZWFkLXBpeGVscy1wYWNrLXBhcmFtZXRlcnMuaHRtbCBbIEZhaWx1cmUg
XQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRt
bCBbIFRpbWVvdXQgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90
ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420802</attachid>
            <date>2021-02-18 00:11:16 -0800</date>
            <delta_ts>2021-02-18 06:00:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210218101114.patch</filename>
            <type>text/plain</type>
            <size>164129</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjNDg4MWE0MDdiNmI0NjYz
N2U1MzM0MGMyZGEwZmE5ZjQ2MGJiNDEuLmNkNmM5N2RkZjZlNjY1YjU5NTczZjMzY2ZmMWVmNTcz
M2FlMDdiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2Vz
IGFuZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJl
Y2VpdmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNl
aXZlZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAg
cHJvY2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVu
dGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hy
b25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQg
dGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhh
dmluZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAg
IGluIHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0
IGluIGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBv
bmUgMm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJl
IHdpbGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24K
KyAgICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFy
IHRocmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJv
cHRpbWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAg
cHJvY2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2Ug
dG8gaGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGlj
aXBhdGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8g
c2FtZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1p
emF0aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFz
IHBhcnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAg
IEluIEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sg
cXVldWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQg
d2lsbCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24g
cGVyIGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAg
ICBTZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRp
b24gd2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYg
dGhlIG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUg
aXQgdGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91
dCBvZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9u
IGFycml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAg
ICBtZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2ls
bCBzdG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxs
IGNvbnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4g
cHJvY2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0
cmVhbSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1l
c3NhZ2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMg
c2VuZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0g
Y29ubmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9y
ZS4gVGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlz
IHdhaXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6
CisgICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAg
cG9pbnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAg
IC0gV2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2gg
fjYwZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVl
VW5pbml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4g
dGhlIHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0
aW9ucyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1
ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpzZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVl
dWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBtdWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0
aGUgSVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmls
aXR5IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xp
ZW50LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6
CisgICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNv
bnN0cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZm
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAo
SVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNw
ZWNpZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFy
ZSB1bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRo
cm91Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAg
ICAgVGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBp
cyByZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2Fz
ZSB3aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRo
ZSBzdHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAg
ICAgICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2Fr
ZXVwIHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNl
bWFwaG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24u
IEFsbCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2
ZSB0aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhl
eSBoYXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVz
dGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rp
b246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dCBjb25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0
YSB0aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVN
ZW1vcnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAo
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0
aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZl
ci4KKyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90
aCB0aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4K
KyAgICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1
cCwgdGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFs
bCB0aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAi
aG9sZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBv
ZiAiYnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAg
ICAgIGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBj
b250YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAg
ICAgRm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBw
cm9jZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUg
b2YgdGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwg
c2xlZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3
aWxsIHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdp
bGwgd2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9m
ZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXpl
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
cyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9j
ZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1l
c3NhZ2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUg
bWVzc2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRo
ZSBidWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRo
YXQgdGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1h
bCBJUEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3Nh
Z2UgdW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdT
dHJlYW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFz
CisgICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxs
IG1lc3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1l
c3NhZ2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAg
ICAgIGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUg
c3RyZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJ
UEMgbWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNz
ZWQuCisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0
aW9uSUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJl
YW0gbWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAg
ICAgIHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJl
YW1EZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVk
LgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZm
ZXI6OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5
bmNocm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToK
KyAgICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0
IG9mIHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6
On5TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZSk6CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVs
ZCBzaW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0x
NiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgYnVpbGQgZml4IGFmdGVyIHIyNzI5MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkNTc3ZTQzNDk5ZjE4
MTQ3OTFjOGEwZWY3MWNiMzRhMDI0YTFmYWUyLi5kYjc3MjM4MTQ0Y2E4YTMwZmY2ZWFjOWY4MmY1
YzQ5ZGNkMjFiMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2Rl
ckFWRlByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVy
aW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogewogICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0o
KSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdU
Rk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAgICAgIHJldHVybiBJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1h
cGhvcmUpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zMjYsMjEgKzMyNiwxMSBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAotR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RGTW92
ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25uZWN0
KCk7Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7CiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKCp0aGlzLCBX
VEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUo
c3RyZWFtKSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWJiMGQwMDhmM2Q3MTI5MjE3YjhlOTZl
ZmExOWJkNTFmZmFmYTE2Ny4uZDAyZTk3ODc3NTdjZDZmYzQ1YTlmOTg5NmU1YjExODdmOTViN2Jl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNz
aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lcklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCIKIAogI2luY2x1ZGUgPFdl
YkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm93UGxheWlu
Z01hbmFnZXIuaD4KQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwor
ICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApAQCAtMjA2LDIwICsyMDcsMTAg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNhcHR1cmUgeyBmYWxzZSB9Owog
I2VuZGlmCiAKLSAgICBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlciB7Ci0gICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYpOwot
ICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoKTsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAgPSBI
YXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKKyAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+PjsKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcDsKICNp
ZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgPSBI
YXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xN
YXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CiAgICAgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcDsKICNl
bmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDMwZjVjMjk4ODYyMTRmOTEwNGYxYWZhMDgzNWIyMzhhMzZkYzZlZjEuLmY2MzBi
MWJhZmUwZDJjMmVjNDAwMzdkOWE3YTdjNzIzZDI1OTk5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRlUmVuZGVyaW5n
QmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQ
Qzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgIHZvaWQgUmVsZWFz
ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBDcmVh
dGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRl
cywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQogICAgIHZvaWQg
UmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNlbmRpZgogICAgIHZvaWQgQ2xlYXJO
b3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA3OWIzNDU5NmZi
ZjJkMGRmYzk4MTg2NTFiZGNmZWI0YjBhMGM4NzVkLi4xZDJmZWU3ZmUxNTE3ZGY3MTAwNzg5N2Ew
NTc1M2EwZGFmYzMwYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKQEAgLTMxLDU1ICsz
MSw3OSBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0KKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBvbmUgZ2xvYmFsIFdlYkdMIHByb2Nl
c3NpbmcgaW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiBy
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZT4gaW5zdGFuY2UoIlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsKKyAgICByZXR1cm4gaW5zdGFuY2Uu
Z2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQorUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmIHN0cmVhbSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3RhbmNlLT5pbml0aWFsaXplKFdU
Rk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5jZTsKIH0KICNlbmRpZgogCi1S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0
KSkKLSAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKSkKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCisgICAgOiBt
X3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1
ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0gICAg
bV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwotICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9j
b250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOwotICAgIFN0
cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNp
b25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgZXh0ZW5zaW9u
cywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQogewotICAgIGlmIChhdXRvKiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgp
KQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAo
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgIEFTU0VSVCghbV9zdHJlYW1Db25uZWN0aW9uKTsKKyAgICBBU1NFUlQo
IW1fY29udGV4dCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxp
emUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKK3sKKyAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFt
V29ya1F1ZXVlKCkuZGlzcGF0Y2goW2F0dHJpYnV0ZXMgPSBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPndvcmtRdWV1ZUluaXRpYWxpemUoV1RGTW92ZShhdHRyaWJ1dGVzKSk7CisgICAg
fSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2VpdmluZ01lc3NhZ2VzKCp0aGlz
LCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLUdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnN0
b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21D
b25uZWN0aW9uKQogewotICAgIHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuZ2V0
KCk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rp
b24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUo
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24pXSgp
IHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAg
fSk7CiB9CiAKLUlQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OndvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYgYXR0cmlidXRlcykKIHsKLSAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgcmV0dXJuICZn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykp
OworICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRo
aXMpOworICAgICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdy
YXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFC
TEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSwgZXh0ZW5zaW9ucywgcmVxdWVz
dGFibGVFeHRlbnNpb25zKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFsc2UsIElQQzo6U2VtYXBo
b3JlIHsgfSwgIiIsICIiKSk7CiB9CiAKLXVpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjp3b3JrUXVldWVVbmluaXRpYWxpemUoKQogewotICAgIHJldHVybiBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIG1fY29udGV4dCA9IG51bGxw
dHI7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKQEAgLTg4LDcgKzExMiw3IEBAIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Oldhc0xvc3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OnJlY3ljbGVDb250ZXh0KCkKQEAgLTk4LDcgKzEyMiw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKaW5kZXggMDAxNTlhYzhiNTg2YThiNjJhM2RkYTNhNTcwMDRlODgzZTE1
NmQwOC4uNTJlNDc2OTEwYTRlYWQwMDM5Y2UwYzFhYTU1ZTRmNDQ2YTA0OTU2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKLQorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CkBAIC00OSwzMSArNDgsMjEgQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0KIC8vIEdQVSBwcm9j
ZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBH
cmFwaGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4
dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KIC8vIFRoZSBpbXBsZW1l
bnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbC4KLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCi0gICAgOiBw
dWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2Vp
dmVyCi0gICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgewor
Y2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMQXR0cmlidXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBv
dmVycmlkZTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKIAotICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKKyAgICAvLyBJUEM6
OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IHRlbXBsYXRl
IGNvbnRyYWN0IGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3Nh
Z2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMPik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgotICAgIElQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKLSAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwotCi0g
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgotICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgdm9pZCBpbml0
aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKIAogICAgIC8v
IEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkQ29tcG9z
aXRlKCkgZmluYWw7CkBAIC05NSw4ICs4NCwxNCBAQCBwcm90ZWN0ZWQ6CiAKICNpbmNsdWRlICJS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKIAot
ICAgIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwotICAg
IFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOworICAgIHZvaWQgd29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtV29ya1F1ZXVl
SW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJikgeyB9Owor
ICAgIHZvaWQgd29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2UpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZWFtQ29u
bmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOyB9CisKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj4gbV9zdHJlYW1Db25uZWN0aW9uOworICAg
IFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwogICAg
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCA3
YTE5MjVkYmIyN2FiZjNkMzAzNGNiN2ZjYjM4YTNmMzkzZTNkY2ZhLi40NzAyYzY0Zjc1ZTQ3NmNm
ZjFhMTAwMDUwNzU1MDk2YmRjZTc4OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9y
RGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggOGUyZDFmYzY1MTg2MjgzOTVl
OTc0MWM0NGU3YWM4NTFiMDhlZjYyNy4uYzRlNDExMjYxOTViMzUyOThhZWFmMmZjYWVmMjBhZGZi
NDMxZDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtMzksMTAg
KzM5LDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wsIHByaXZhdGUgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gewogcHVibGljOgotICAgIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EoKSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBv
dmVycmlkZXMuCisgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOwogICAgIHZvaWQgcHJlcGFyZUZv
ckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYp
IGZpbmFsOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4gb3Zl
cnJpZGVzLgpAQCAtNTYsMTYgKzU3LDIzIEBAIHByaXZhdGU6CiAKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRl
cywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikK
K1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNy
ZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNv
bm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2Eo
YXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKSk7CisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYShncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3RhbmNlLT5pbml0
aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAot
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2Nv
YShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMs
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0
cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykpCitSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV1RGTW92
ZShzdHJlYW0pKQogewogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBs
YXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmJiBhdHRyaWJ1dGVzKQoreworICAgIG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKFdURk1vdmUoYXR0cmlidXRlcyksIHRoaXMpOwor
fQorCiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbjo6QnVmZmVyIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQogewogICAgIHJldHVybiBXVEZN
b3ZlKG1fZGlzcGxheUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggMmM3NjI1
MTg2YWVlMTVkNzcyYjc2NGJkZDU1OWYwYTFjMjcwYmQ0MS4uNjIxMmVhMDRlOWQ4ZThlMGMxODZl
MTEyYTBiMzgwNzRjNWIxNDgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtODMsNyAr
ODMsNyBAQCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgp
CiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtyZW1vdGVSZXNvdXJjZUNhY2hlID0gV1RGTW92
ZShtX3JlbW90ZVJlc291cmNlQ2FjaGUpXSB7IH0pOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmRpc2Nvbm5lY3QoKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdG9w
TGlzdGVuaW5nRm9ySVBDKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaAppbmRleCBiN2FlZTI2Mjc3MDViYjlhY2MxMDE5ZDcxNTVlZjI3ZTE1
M2QyYjI4Li5hNGFhN2I0Nzg3NTVhOWJiNWUyOTNmZDFiYzgyOGNjZGZlMjQ5NDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJl
ZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURp
c3BsYXlMaXN0U2VtYXBob3JlKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
KCk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAKICAgICBSZW1vdGVSZXNvdXJj
ZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNh
Y2hlOyB9CiAKQEAgLTc4LDggKzc5LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXROZXh0SXRl
bUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbik7CiAKLSAg
ICB2b2lkIGRpc2Nvbm5lY3QoKTsKLQogcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciwgSVBDOjpTZW1hcGhvcmUmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggNDk3MTcxYjU2NDI2
ODkyODk1MjEwNmJkN2VlYTU0YmVlOTNiZWUyMy4uYjBjZjcwZjA2ZTExOGUwMjFkODY0ZGViOThk
NDE0ZWZiYTllN2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBV
U0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJOZXR3b3JrUlRDTW9uaXRvci5oIgogI2luY2x1ZGUgIlJUQ05ldHdvcmsuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAppbmRleCAzMjA3NmFmZDAy
YTg5OGExZTM5ZGUyODNlMTAyYjg1OTQ3ZjhlZGM3Li41MzM1MGY5ZjdjOGMxMmJlNjI3NTk5OWM3
ZWJmYzNjN2UwOTFiY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9B
cmd1bWVudENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2Rlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNzUsNiArNzYsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBBcmd1bWVudENvZGVyIHsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSksIHNpemVvZihUKSwgYWxp
Z25vZihUKSk7CkBAIC05MSw2ICs5Myw3IEBAIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIFQgdmFsdWUp
CiAgICAgewogICAgICAgICBBU1NFUlQoV1RGOjppc1ZhbGlkRW51bTxUPihXVEY6OmVudW1Ub1Vu
ZGVybHlpbmdUeXBlPFQ+KHZhbHVlKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGIwYTQzZGU5ZDdhMTM3MjE2YTE5YmY3ZDBiZDVlMTkx
MTNiNWRhNjguLmFlZTg5ZTYyNjk2YzU2MGYwYTE4YmZiMWQ2NzY5MTY1MGU3ZmYyYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC0xMTEsNyArMTEyLDcgQEAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2Rl
cjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENTdHJpbmcKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBBcmd1bWVudENv
ZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKICAgICAvLyBTcGVjaWFsIGNhc2UgdGhlIG51bGwgc3RyaW5nLgpAQCAtMTMwLDYgKzEz
MSwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVsc2UKICAgICAgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5n
LmNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgYWxpZ25vZihVQ2hhcikp
OwogfQordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGU8RW5jb2Rl
cj4oRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwordGVtcGxhdGUKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxTdHJpbmc+OjplbmNvZGU8U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI+KFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgogc3RhdGljIGlubGluZSBPcHRpb25hbDxTdHJpbmc+IGRlY29kZVN0cmluZ1RleHQo
RGVjb2RlciYgZGVjb2RlciwgdWludDMyX3QgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjBlYjE3YTBmZDgyNjBkNDBiZWM3ZmNkYWFl
YTIzYmM1ZTg2NWUwOS4uZjg1Njk4MDczZGQwNDViMjgxNmUxNjEwY2E0OTk2YTVkNGVlNmMyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC01NSw2
ICs1NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTaW1wbGVBcmd1bWVudENvZGVy
IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50Pj4gewogICAgIHVzaW5nIEFycmF5UmVmZXJl
bmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD47CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBhcnJheVJlZmVyZW5jZSkKICAgICB7CiAgICAgICAgIGlm
ICghRXh0ZW50KQpAQCAtNzQsNiArNzUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
RXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBFeHRlbgogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxU
LCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJyYXlSZWZlcmVu
Y2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNl
KQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlS
ZWZlcmVuY2Uuc2l6ZSgpKTsKQEAgLTI2Niw2ICsyNjgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnBhaXI8VCwgVT4+IHsKIAog
dGVtcGxhdGU8c2l6ZV90IGluZGV4LCB0eXBlbmFtZS4uLiBFbGVtZW50cz4KIHN0cnVjdCBUdXBs
ZUVuY29kZXIgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+
JiB0dXBsZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8c2l6ZW9mLi4uKEVs
ZW1lbnRzKSAtIGluZGV4Pih0dXBsZSk7CkBAIC0yNzUsNiArMjc4LDcgQEAgc3RydWN0IFR1cGxl
RW5jb2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1cGxl
RW5jb2RlcjwwLCBFbGVtZW50cy4uLj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBzdGQ6OnR1cGxlPEVsZW1l
bnRzLi4uPiYpCiAgICAgewogICAgIH0KQEAgLTMzOCw2ICszNDIsNyBAQCBzdHJ1Y3QgVHVwbGVE
ZWNvZGVyPDA+IHsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEVsZW1lbnRzPiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPj4geworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JiB0dXBsZSkKICAgICB7CiAgICAgICAgIFR1
cGxlRW5jb2RlcjxzaXplb2YuLi4oRWxlbWVudHMpLCBFbGVtZW50cy4uLj46OmVuY29kZShlbmNv
ZGVyLCB0dXBsZSk7CkBAIC0zNzQsNiArMzc5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlw
ZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6OktleVZhbHUK
IHRlbXBsYXRlPGJvb2wgZml4ZWRTaXplRWxlbWVudHMsIHR5cGVuYW1lIFQsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+
IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNh
cGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2RlcjxmYWxzZSwgVCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+
JiB2ZWN0b3IpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih2ZWN0b3Iuc2l6ZSgpKTsKQEAgLTQxMSw2ICs0MTcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90
IG1pbgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4gc3RydWN0IFZlY3Rv
ckFyZ3VtZW50Q29kZXI8dHJ1ZSwgVCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwg
bWluQ2FwYWNpdHk+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+JiB2ZWN0b3IpCiAgICAgewogICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2ZWN0b3Iuc2l6ZSgpKTsKQEAg
LTc1Myw2ICs3NjAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPENTdHJpbmc+
IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3RyaW5nPiB7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFN0cmluZyYpOwogICAgIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGRl
Y29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IDhiNzQzMTRhYzA0YTU1YTQ4YmQwOTM2MjljMzYyMjA3MWUwZjJjNTAuLjFkMmVhNDg1
YTk5OGFlMjY0NDZhM2FlNjAwZTA0ZjMwY2E4ZTFkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRmxhZ3MuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIgpAQCAtOTMwLDggKzkzMSwxMyBAQCB2b2lkIENv
bm5lY3Rpb246OmRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYgZGVjb2RlcikKIAogdm9pZCBD
b25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSBt
ZXNzYWdlTmFtZSkKIHsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCisgICAgaWYg
KCFSdW5Mb29wOjppc01haW4oKSkgeworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZU5hbWVdKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPmlzVmFsaWQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2NsaWVudC5kaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UocHJvdGVjdGVkVGhpcywgbWVzc2FnZU5hbWUpOworICAgICAgICB9
KTsKKyAgICB9CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDQ4NTUyMDEyNDdjMjVkZjg1NTJj
NWE1NGEwNDY3N2I4ZDcyYjgyY2EuLmZlOWNhMzE4NjA2ZmRlZGM2MWQyMWQwN2RmMGY4YWIxYmZl
OTNiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTMwLDEw
ICszMCw5IEBACiAKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgot
I2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSA8YXRvbWljPgor
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Db25kaXRp
b24uaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpA
QCAtMzEyLDYgKzMxMSw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBkaXNwYXRjaE1l
c3NhZ2VSZWNlaXZlck1lc3NhZ2UoTWVzc2FnZVJlY2VpdmVyJiwgc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+JiYpOworICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgorICAgIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUpOwogcHJpdmF0
ZToKICAgICBDb25uZWN0aW9uKElkZW50aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCYpOwog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIpOwpAQCAtMzM5LDcgKzM0MCw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShEZWNvZGVyJik7CiAgICAgdm9pZCBk
aXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lKTsKICAgICB2b2lkIGRpZEZhaWxUb1NlbmRTeW5j
TWVzc2FnZSgpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAppbmRleCA4MGEwZjc1YzcwNTcyYmY0YzI0ODUy
NmZlZDJmZWZiMDk3Y2RjOGY5Li40ZGUwNTA5OGM0NjMyYWQ0NWY0ZTg1M2Y2N2U5ZWUzZTc3MTM2
ZDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcApAQCAtOTAsNiArOTAs
MTcgQEAgRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJTaXplLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGUKICAgICAgICAgbWFya0ludmFsaWQoKTsKIH0K
IAorRGVjb2Rlcjo6RGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1T
aXplLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQorICAgIDogbV9idWZmZXIgeyBzdHJlYW0gfQor
ICAgICwgbV9idWZmZXJQb3MgeyBtX2J1ZmZlciB9CisgICAgLCBtX2J1ZmZlckVuZCB7IG1fYnVm
ZmVyICsgc3RyZWFtU2l6ZSB9CisgICAgLCBtX2J1ZmZlckRlYWxsb2NhdG9yKFtdIChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSB7IH0pCisgICAgLCBtX2Rlc3RpbmF0aW9uSUQoZGVzdGluYXRpb25J
RCkKK3sKKyAgICBpZiAoIWRlY29kZShtX21lc3NhZ2VOYW1lKSkKKyAgICAgICAgcmV0dXJuOwor
fQorCiBEZWNvZGVyOjp+RGVjb2RlcigpCiB7CiAgICAgQVNTRVJUKG1fYnVmZmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA2Njk4NWJjMzg3ZDc0MzkxMzcwMWIxMTdi
OTE4MDBiOWEyNzcxYWI4Li5iM2M2YWM4YTJkNWFjYmEyYzIxNTI4ZGZlYjE4YzY0MTVjZWRkMjJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCkBAIC01MSw2ICs1MSw3IEBAIGNs
YXNzIERlY29kZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQg
KCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhfdCosIHNpemVfdCksIFZlY3RvcjxBdHRh
Y2htZW50PiYmKTsKICAgICBleHBsaWNpdCBEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlclNpemUsIHZvaWQgKCpidWZmZXJEZWFsbG9jYXRvcikoY29uc3QgdWludDhf
dCosIHNpemVfdCksIFZlY3RvcjxBdHRhY2htZW50PiYmKTsKKyAgICBEZWNvZGVyKGNvbnN0IHVp
bnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
OwogICAgIH5EZWNvZGVyKCk7CiAKICAgICBEZWNvZGVyKGNvbnN0IERlY29kZXImKSA9IGRlbGV0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCBlYThh
ZDQ1YzA5ZWI2ODJlMGU4NjIzYjkzNGQ1ZTBlOWM3MDI2MjJhLi45Mjk2M2UyMWUxZDcxN2Y2NGE4
MjE5YzUyODliYWYwNTNmMDk5NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFu
ZGxlTWVzc2FnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0xNjQsNiArMTY1LDI4IEBAIHZvaWQgaGFuZGxl
TWVzc2FnZVN5bmNocm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IERlY29kZXImIGRlCiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUo
KmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9u
KTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+Cit2
b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYg
Y29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3sK
KyAgICB1aW50NjRfdCBzeW5jUmVxdWVzdElEID0gMDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHN5bmNSZXF1ZXN0SUQpIHx8ICFzeW5jUmVxdWVzdElEKSB7CisgICAgICAgIGRlY29kZXIubWFy
a0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE9wdGlvbmFsPHR5cGVu
YW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOwor
ICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAg
IGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHR5
cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtzeW5jUmVxdWVzdElE
LCBjb25uZWN0aW9uID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRh
YmxlIHsKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShzeW5jUmVxdWVzdElELCBh
cmdzLi4uKTsKKyAgICB9OworICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVu
dHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5k
bGVNZXNzYWdlQXN5bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2Rlciwg
Qyogb2JqZWN0LCBNRiBmdW5jdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lM2EwNTZhMDIwMWMyYWQwZTc0OTBlYzdkN2ZlYmJkZDc3MTA5N2IxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZS5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKKworLy8g
U2NvcGVkIGhvbGRlciBmb3Igb2JqZWN0cyB0aGF0IGhhdmUgYWN0aXZlIG1lc3NhZ2UgcmVjZWl2
ZSBxdWV1ZXMuIEVuZm9yY2VzIHRoYXQKKy8vIG9uY2UgaG9sZGVyIHN0b3BzIGhvbGRpbmcgdGhl
IG9iamVjdCwgdGhlIG1lc3NhZ2UgcXVldWUgc2hvdWxkIGJlIHJlbW92ZWQuCisvLyBUaGUgY29u
dmVudGlvbiBpcyB0byBjYWxsIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKSBmb3IgdGhlIG9iamVjdC4K
Ky8vIE9wdGlvbmFsbHkgdGhlIG9iamVjdCBjYW4gb2J0YWluIHRoZSBvd25pbmcgcmVmZXJlbmNl
IHRoYXQgd2FzIHVzZWQgdG8gaG9sZCB0aGUgb2JqZWN0CisvLyBpbiBvcmRlciB0byBhdHRlbXB0
IHRvIGF2b2lkIG5lZWRsZXNzIGRlc3RydWN0aW9uIG9mIHRoZSBvYmplY3QgaW4gaG9sZGVyIHRo
cmVhZC4KKy8vIFRoaXMgdXNlZnVsIGluIHRoZSBjYXNlIHRoZSBzdG9wIGludm9rZXMgYSBjbGVh
bnVwIHRhc2sgaW4gdGhlIG1lc3NhZ2UgaGFuZGxlcgorLy8gdGhyZWFkLgordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEhvbGRlclR5cGUgPSBSZWZQdHI8VD4+CitjbGFzcyBTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlKCkgPSBkZWZhdWx0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgor
ICAgIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoVSYmIG9iamVjdCkKKyAgICAgICAg
OiBtX29iamVjdChXVEZNb3ZlKG9iamVjdCkpCisgICAgeworICAgIH0KKyAgICBTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUmJiBv
dGhlcikKKyAgICAgICAgOiBtX29iamVjdChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCBu
dWxscHRyKSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUmIG9wZXJhdG9yPShTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlJiYgb3RoZXIpCisg
ICAgeworICAgICAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgICAgIHJlc2V0KCk7
CisgICAgICAgICAgICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIG51
bGxwdHIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgflNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsK
KyAgICB9CisgICAgdm9pZCByZXNldCgpCisgICAgeworICAgICAgICBpZiAoIW1fb2JqZWN0KQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZShtX29iamVjdCk7CisgICAgfQorICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0
LmdldCgpOyB9Citwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgc3RhdGlj
IGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0KSAtPiBkZWNsdHlw
ZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpLCB2
b2lkKCkpCisgICAgeworICAgICAgICBvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0
LnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAg
IHN0YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9iamVjdCkgLT4g
ZGVjbHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKFdURk1vdmUob2JqZWN0KSksIHZv
aWQoKSkKKyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhXVEZNb3Zl
KG9iamVjdCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBh
dXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9iamVjdCkgLT4gZGVjbHR5cGUo
b2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKCksIHZvaWQoKSkKKyAgICB7CisgICAgICAgIG9i
amVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQygpOworICAgICAgICBvYmplY3QgPSBudWxscHRyOwor
ICAgIH0KKyAgICBIb2xkZXJUeXBlIG1fb2JqZWN0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoc3RkOjp1bmlxdWVfcHRyPFQ+JiYp
IC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwgc3RkOjp1bmlxdWVfcHRyPFQ+
PjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUoUmVmPFQ+JiYpIC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwgUmVmUHRy
PFQ+PjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGY1Y2RmMDA4ZTVhN2YyZDJmMTAyYTIz
NWMzYzIyNTE3MzM3NmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0
aW9uLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJl
YW1DbGllbnRDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBzaXplKQor
ICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2J1ZmZlcihzaXplKQorewor
ICAgIC8vIFJlYWQgc3RhcnRzIGZyb20gMCB3aXRoIGxpbWl0IG9mIDAgYW5kIHJlYWRlciBzbGVl
cGluZy4KKyAgICBzaGFyZWRTZW5kZXJPZmZzZXQoKS5zdG9yZShTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVy
X3JlbGF4ZWQpOworICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAgd2l0aCBhIGxpbWl0IG9mIHRo
ZSB3aG9sZSBidWZmZXIuCisgICAgc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5zdG9yZSgwLCBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKK30KKwordm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUgPSBXVEZNb3ZlKHNlbWFwaG9y
ZSk7CisjZW5kaWYKKyAgICB3YWtlVXBSZWNlaXZlcigpOworfQorCit2b2lkIFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246Ondha2VVcFJlY2VpdmVyKCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBpZiAobV93YWtlVXBTZW1hcGhvcmUpCisgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLT5zaWdu
YWwoKTsKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWNjZjlhNjhmODYzNWY4YWQ5
ZThmYWEyZTI2NDcxNWE4NmU2YTk0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDI0MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUg
IklQQ1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ci5oIgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgorbmFtZXNwYWNlIElQQyB7CisKKy8vIEEgbWVzc2FnZSBzdHJlYW0gaXMgYSBoYWxm
LWR1cGxleCB0d28td2F5IHN0cmVhbSBvZiBtZXNzYWdlcyB0byBhIGJldHdlZW4gYSBzZW5kZXIg
YW5kIHRoZQorLy8gZGVzdGluYXRpb24gcmVjZWl2ZXIuCisvLworLy8gU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbiBjYW4gc2VuZCBtZXNzYWdlcyBhbmQgcmVjZWl2ZSBzeW5jaHJvbm91cyByZXBsaWVz
CisvLyB0aHJvdWdoIHRoaXMgbWVzc2FnZSBzdHJlYW0gb3IgdGhyb3VnaCBJUEM6OkNvbm5lY3Rp
b24uCisvLworLy8gVGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdpbGwgcmVjZWl2ZSBtZXNzYWdl
cyBpbiBvcmRlciBfZm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdlc18uCisvLyBUaGUgd2hvbGUg
SVBDOjpDb25uZWN0aW9uIG1lc3NhZ2Ugb3JkZXIgaXMgbm90IHByZXNlcnZlZC4KKworY2xhc3Mg
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBmaW5hbCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbik7CitwdWJsaWM6CisgICAgU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbihDb25uZWN0aW9uJiwgc2l6ZV90IGJ1ZmZlclNpemUpOworCisgICAgU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYgc3RyZWFtQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICB2b2lk
IHNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmKTsKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRp
ZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpOworCisgICAgdXNpbmcgU2Vu
ZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIFNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBt
ZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFNwYW4gewor
ICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXplX3Qgc2l6ZTsKKyAgICB9OworICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IFN0cmVhbUNvbm5l
Y3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdl
QWxpZ25tZW50OworICAgIGJvb2wgdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIHRpbWVvdXQpOworICAgIHZvaWQgc2VuZFBy
b2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmKTsKKworICAgIE9wdGlvbmFsPFNwYW4+IHRy
eUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KTsKKyAgICBlbnVtIGNsYXNzIFdha2VVcFJl
Y2VpdmVyIDogYm9vbCB7CisgICAgICAgIE5vLAorICAgICAgICBZZXMKKyAgICB9OworICAgIFdh
a2VVcFJlY2VpdmVyIHJlbGVhc2Uoc2l6ZV90IHdyaXRlU2l6ZSk7CisgICAgdm9pZCB3YWtlVXBS
ZWNlaXZlcigpOworCisgICAgU3BhbiBhbGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGltaXQpOworICAgIHNpemVfdCBzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7Cisg
ICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0OworCisg
ICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIud3JhcE9mZnNldChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBv
ZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1l
bnQ+KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBz
aGFyZWRTZW5kZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQor
ICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVm
ZmVyLnJlY2VpdmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQorCisgICAgQ29ubmVjdGlvbiYgbV9jb25uZWN0aW9u
OworICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgeyAwIH07CisKKyAgICBzaXpl
X3QgbV9zZW5kZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1
ZmZlcjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBPcHRpb25hbDxTZW1hcGhvcmU+IG1fd2Fr
ZVVwU2VtYXBob3JlOworI2VuZGlmCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPgorYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kKFQmJiBtZXNzYWdlLCBPYmpl
Y3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBz
dGF0aWNfYXNzZXJ0KCFUOjppc1N5bmMsICJNZXNzYWdlIGlzIHN5bmMhIik7CisgICAgTW9ub3Rv
bmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7
CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKGRlc3RpbmF0aW9uSUQudG9V
SW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1
dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4pCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB7CisgICAgICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNv
ZGVyIG1lc3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBzcGFuLT5kYXRhLCBzcGFuLT5zaXplIH07
CisgICAgICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBtZXNzYWdlLmFyZ3VtZW50cygpKSB7Cisg
ICAgICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2UobWVzc2FnZUVuY29kZXIuc2l6
ZSgpKTsKKyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAgICAgICAgICAgICB3YWtlVXBSZWNlaXZl
cigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgc2Vu
ZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZSgqc3BhbikpOworICAgIGlmICghbV9j
b25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRCwgSVBDOjpTZW5k
T3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3Vs
dCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNv
bmRzIHRpbWVvdXQpCit7CisgICAgc3RhdGljX2Fzc2VydChUOjppc1N5bmMsICJNZXNzYWdlIGlz
IG5vdCBzeW5jISIpOworICAgIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0ID0gTW9ub3Rv
bmljVGltZTo6bm93KCkgKyB0aW1lb3V0OworICAgIGlmICghdHJ5U2VuZERlc3RpbmF0aW9uSURJ
Zk5lZWRlZChkZXN0aW5hdGlvbklELnRvVUludDY0KCksIGFic29sdXRlVGltZW91dCkpCisgICAg
ICAgIHJldHVybiB7IH07CisgICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZShhYnNvbHV0ZVRpbWVv
dXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50IHNlbmQgdGhyb3VnaCBzdHJlYW0uCisgICAgLy8gRklYTUU6IGltcGxlbWVudCBy
ZWNlaXZlIHRocm91Z2ggc3RyZWFtLgorICAgIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdl
KFdURk1vdmUoKnNwYW4pKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fY29ubmVjdGlvbi5zZW5kU3lu
YyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpLCB0aW1lb3V0KTsKKyAgICBBU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitpbmxpbmUgYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVzdGluYXRp
b25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1vbm90b25pY1RpbWUgYWJzb2x1
dGVUaW1lb3V0KQoreworICAgIGlmIChkZXN0aW5hdGlvbklEID09IG1fY3VycmVudERlc3RpbmF0
aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUo
YWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNvZGVyIHsgTWVzc2FnZU5hbWU6OlNldFN0
cmVhbURlc3RpbmF0aW9uSUQsIHNwYW4tPmRhdGEsIHNwYW4tPnNpemUgfTsKKyAgICBpZiAoIShl
bmNvZGVyIDw8IGRlc3RpbmF0aW9uSUQpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyAvLyBTaXplIG9mIHRoZSBtaW5pbXVtIGFsbG9jYXRpb24gaXMgaW5jb3JyZWN0LiBMaWtlbHkg
YW4gYWxpZ25tZW50IGlzc3VlLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGF1
dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShlbmNvZGVyLnNpemUoKSk7CisgICAgaWYgKHdha2V1
cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBSZWNlaXZlcjo6WWVzKQor
ICAgICAgICB3YWtlVXBSZWNlaXZlcigpOworICAgIG1fY3VycmVudERlc3RpbmF0aW9uSUQgPSBk
ZXN0aW5hdGlvbklEOworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgdm9pZCBTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShTcGFuJiYgc3Bh
bikKK3sKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNvZGVyIHsgTWVzc2FnZU5hbWU6
OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UsIHNwYW4uZGF0YSwgc3Bhbi5zaXplIH07CisgICAg
Ly8gTm90IG5vdGlmeWluZyBvbiB3YWtlIHVwIHNpbmNlIHRoZSBvdXQtb2Ytc3RyZWFtIG1lc3Nh
Z2Ugd2lsbCBkbyB0aGF0LgorICAgICh2b2lkKSByZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKK30K
K2lubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKE1vbm90b25pY1RpbWUgdGltZW91dCkKK3sKKyAgICBm
b3IgKDs7KSB7CisgICAgICAgIHNpemVfdCBzZW5kZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChzaGFy
ZWRSZWNlaXZlck9mZnNldCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fc2VuZGVyT2Zmc2V0LCBzZW5kZXJMaW1p
dCk7CisgICAgICAgIGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkgeworICAg
ICAgICAgICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAgICAgICAgICAgIGlm
IChub3cgPj0gdGltZW91dCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAgICAgICAgIHNpemVfdCBvbGRTZW5kZXJMaW1pdCA9IHNoYXJlZFJlY2VpdmVy
T2Zmc2V0KCkuY29tcGFyZUV4Y2hhbmdlU3Ryb25nKHNlbmRlckxpbWl0LCBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyOjpyZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGluZ1RhZywgc3RkOjptZW1vcnlf
b3JkZXJfYWNxX3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgICAgICAgICBp
ZiAoc2VuZGVyTGltaXQgPT0gb2xkU2VuZGVyTGltaXQpCisgICAgICAgICAgICAgICAgbV9idWZm
ZXIuc2VuZGVyV2FpdFNlbWFwaG9yZSgpLndhaXRGb3IodGltZW91dCAtIG5vdyk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzZW5kZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChv
bGRTZW5kZXJMaW1pdCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9z
ZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKKyAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAg
ICAgICBUaHJlYWQ6OnlpZWxkKCk7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBpZiAocmVz
dWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXplKQorICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworaW5saW5lIFN0cmVhbUNs
aWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVyIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnJl
bGVhc2Uoc2l6ZV90IHNpemUpCit7CisgICAgc2l6ZSA9IHN0ZDo6bWF4KHNpemUsIG1pbmltdW1N
ZXNzYWdlU2l6ZSk7CisgICAgc2l6ZV90IGV4cGVjdGVkUmVjZWl2ZXJMaW1pdCA9IG1fc2VuZGVy
T2Zmc2V0OworICAgIG1fc2VuZGVyT2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9mZnNldChtX3Nl
bmRlck9mZnNldCkgKyBzaXplKTsKKyAgICBBU1NFUlQobV9zZW5kZXJPZmZzZXQgPCBkYXRhU2l6
ZSgpKTsKKyAgICAvLyBJZiB0aGUgcmVjZWl2ZXIgd3JvdGUgb3ZlciB0aGUgc2VuZGVyT2Zmc2V0
IHdpdGggc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCB3ZSBrbm93IGl0IGlzIHNs
ZWVwaW5nLgorICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCku
ZXhjaGFuZ2UobV9zZW5kZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAg
IGlmIChyZWNlaXZlckxpbWl0ICE9IGV4cGVjdGVkUmVjZWl2ZXJMaW1pdCkKKyAgICAgICAgcmV0
dXJuIFdha2VVcFJlY2VpdmVyOjpZZXM7CisgICAgcmV0dXJuIFdha2VVcFJlY2VpdmVyOjpObzsK
K30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4gU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6YWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQoreworICAg
IEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBBU1NFUlQobGltaXQgPCBkYXRhU2l6
ZSgpKTsKKyAgICBzaXplX3QgYWxpZ25lZCA9IGFsaWduT2Zmc2V0KG9mZnNldCk7CisgICAgc2l6
ZV90IHJlc3VsdFNpemUgPSAwOworICAgIGlmIChvZmZzZXQgPCBsaW1pdCkgeworICAgICAgICBp
ZiAoYWxpZ25lZCA+PSBvZmZzZXQgJiYgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVz
dWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlm
IChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAgICByZXN1
bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfQorICAgIHJldHVybiB7IGRhdGEo
KSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30KKworaW5saW5lIHNpemVfdCBTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAgICBp
ZiAoIWxpbWl0KQorICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAtIDEgLSBvZmZzZXQ7CisgICAg
aWYgKGxpbWl0IDw9IG9mZnNldCkKKyAgICAgICAgcmV0dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7
CisgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0IC0gMTsKK30KKworaW5saW5lIHNpemVfdCBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBj
b25zdAoreworICAgIEFTU0VSVCh1bnRydXN0ZWRMaW1pdCA8IChkYXRhU2l6ZSgpIC0gMSkpOwor
ICAgIHJldHVybiBzdGQ6Om1pbih1bnRydXN0ZWRMaW1pdCwgZGF0YVNpemUoKSAtIDEpOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NzlkYWJlNjg5YWQ0NjI4ZTUyZGJkMWJhZTBmNjFm
ZTZkZTE2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IEZmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgi
CisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNlIElQQyB7
CisKK3N0YXRpYyBSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IGNyZWF0ZU1lbW9yeShzaXplX3Qg
c2l6ZSkKK3sKKyAgICBhdXRvIG1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0
ZShzaXplKTsKKyAgICBpZiAoIW1lbW9yeSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4g
bWVtb3J5LnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIoc2l6ZV90IG1lbW9yeVNpemUpCisgICAgOiBtX2RhdGFTaXpl
KG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisgICAgLCBtX3NoYXJlZE1lbW9yeShjcmVhdGVN
ZW1vcnkobWVtb3J5U2l6ZSkpCit7Cit9CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVh
bUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYmIG1lbW9yeSwgc2l6
ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNlbmRlcldhaXRTZW1hcGhvcmUpCisgICAgOiBt
X2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisgICAgLCBtX3NoYXJlZE1lbW9y
eShXVEZNb3ZlKG1lbW9yeSkpCisgICAgLCBtX3NlbmRlcldhaXRTZW1hcGhvcmUoV1RGTW92ZShz
ZW5kZXJXYWl0U2VtYXBob3JlKSkKK3sKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3RoZXIpID0gZGVm
YXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6flN0cmVhbUNvbm5lY3Rpb25CdWZmZXIo
KSA9IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXImIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3RoZXIpCit7CisgICAg
aWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgIG1fZGF0YVNpemUgPSBvdGhlci5tX2RhdGFT
aXplOworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9IFdURk1vdmUob3RoZXIubV9zaGFyZWRNZW1v
cnkpOworICAgICAgICBtX3NlbmRlcldhaXRTZW1hcGhvcmUgPSBXVEZNb3ZlKG90aGVyLm1fc2Vu
ZGVyV2FpdFNlbWFwaG9yZSk7CisgICAgfQorICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoIW1fc2hh
cmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICBXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgbV9zaGFyZWRN
ZW1vcnktPnNpemUoKSB9OworICAgIGVuY29kZXIgPDwgaXBjSGFuZGxlOworICAgIGVuY29kZXIg
PDwgbV9zZW5kZXJXYWl0U2VtYXBob3JlOworfQorCitPcHRpb25hbDxTdHJlYW1Db25uZWN0aW9u
QnVmZmVyPiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBPcHRpb25hbDxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBpcGNIYW5k
bGU7CisgICAgZGVjb2RlciA+PiBpcGNIYW5kbGU7CisgICAgaWYgKCFpcGNIYW5kbGUpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8U2VtYXBob3JlPiBzZW1hcGhv
cmU7CisgICAgZGVjb2RlciA+PiBzZW1hcGhvcmU7CisgICAgaWYgKCFzZW1hcGhvcmUpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgc2l6ZV90IGRhdGFTaXplID0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihpcGNIYW5kbGUtPmRhdGFTaXplKTsKKyAgICBpZiAoZGF0YVNpemUgPCBoZWFk
ZXJTaXplKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBzaGFyZWRN
ZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS0+aGFuZGxlLCBXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKyAgICBpZiAoc2hhcmVk
TWVtb3J5LT5zaXplKCkgPCBkYXRhU2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7IHNoYXJlZE1lbW9yeS5yZWxlYXNl
Tm9uTnVsbCgpLCBkYXRhU2l6ZSwgIFdURk1vdmUoKnNlbWFwaG9yZSkgfTsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk3N2YyY2IxZWMwNzkzNWZjYzgwYWQ1ZjI0NDRhZGVmZmIwMzk0NDQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmgKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNs
dWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSVBDIHsKKworLy8gU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciBpcyBhIHNoYXJlZCAiYmktcGFydGl0ZSIgY2lyY3VsYXIgYnVmZmVyIHN1cHBvcnRp
bmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdlcywgc3BlY2lmaWMgZGF0YSBhbGlnbm1lbnQg
d2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUuCisvLyBTdHJlYW1DbGllbnRDb25uZWN0aW9uIGFu
ZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHVzZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHRvIGNv
bW11bmljYXRlLgorLy8KKy8vIFRoZSAiYmktcGFydGl0ZSIgaXMgaGVyZSB0byBtZWFuIHRoYXQg
d3JpdGVzIGFuZCByZWFkcyB0byB0aGUgYnVmZmVyIG11c3QgYmUKKy8vIGNvbnRpbnVvdXMuCisv
LworLy8gVGhlIGNsaWVudCAoc2VuZGVyIG9yIHJlY2VpdmVyKSAiYWNxdWlyZXMiIHNvbWUgYW1v
dW50IG9mIGJ1ZmZlciBkYXRhLiBJZiBidWZmZXIgaGFzIG5vCisvLyBjYXBhY2l0eSwgYWNxdWly
ZSByZXR1cm5zIHdpdGggemVybyBjYXBhY2l0eS4gSWYgYnVmZmVyIGhhcyBhdCBsZWFzdCBhY3F1
aXJlZAorLy8gY2FwYWNpdHksIGFsbCB0aGUgYXZhaWxhYmxlIGNhcGFjaXR5IGlzIHJldHVybmVk
LgorLy8KKy8vIFRoZSBjbGllbnQgInJlbGVhc2VzIiB0aGUgc29tZSBhbW91bnQgb2YgZGF0YSwg
YXQgbGVhc3QgdGhlIGFtb3VudCBhY3F1aXJlZCBidXQgcG90ZW50aWFsbHkKKy8vIG1vcmUuCisv
LworLy8gQm90aCBzZW5kZXIgYW5kIHJlY2VpdmVyIG11c3QgYWNxdWlyZSBzYW1lIGFtb3VudCBv
ZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhlIGFjcXVpcmUgc2VxdWVuY2UuCisvLyBJZiBz
ZW5kZXIgYWNxdWlyZXMgWCBhbmQgdGhlbiBZIGFtb3VudCwgcmVjZWl2ZXIgbXVzdCBkbyB0aGUg
c2FtZS4KKy8vCisvLyBUaGUgY2lyY3VsYXIgYnVmZmVyIGhhcyBmb2xsb3dpbmcgaW1wbGVtZW50
YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRoZSBkYXRhIGJldHdlZW4gW3NlbmRlck9mZnNldCwg
cmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9mZnNldCA9PQorLy8gcmVjZWl2ZXJPZmZzZXQs
IHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4KKy8vICogUmVjZWl2ZXIgb3ducyB0aGUgZGF0YSBi
ZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVyT2Zmc2V0Wy4KKy8vICogVGhlIGJ1ZmZlciBj
YW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhlIGxhc3QgdmFsdWUgaXMgcmVz
ZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZlciBpcyBmdWxsLiBGSVhNRTog
TWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBpZgorLy8gaXQgd291bGQgdXNl
IHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9mIHRoZSBob2xlIGFzIHRoZSBpbmRpY2F0b3IuIFRo
aXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWduZWRTcGFuIGltcGxlbWVudGF0aW9uIHRvIHRoZSBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyLgorLy8gKiBBbGwgYXRvbWljIHZhcmlhYmxlIGxvYWRzIGFy
ZSB1bnRydXN0ZWQsIHNvIHRoZXkncmUgY2xhbXBlZC4gVmlvbGF0aW9ucyBhcmUgbm90IHJlcG9y
dGVkLAorLy8gdGhvdWdoLgorLy8gU2VlIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlLgorY2xhc3Mg
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6ZSk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOworICAgIH5TdHJlYW1Db25uZWN0aW9uQnVm
ZmVyKCk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgb3BlcmF0b3I9KFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXImJik7CisKKyAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8PSBkYXRhU2l6ZSgpKTsKKyAgICAg
ICAgaWYgKG9mZnNldCA9PSBkYXRhU2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90IG1lc3NhZ2VB
bGlnbm1lbnQ+CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQsIHNpemVfdCBh
Y3F1aXJlU2l6ZSkgY29uc3QKKyAgICB7CisgICAgICAgIG9mZnNldCA9IHJvdW5kVXBUb011bHRp
cGxlT2Y8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0KTsKKyAgICAgICAgaWYgKG9mZnNldCArIGFj
cXVpcmVTaXplID49IGRhdGFTaXplKCkpCisgICAgICAgICAgICBvZmZzZXQgPSAwOworICAgICAg
ICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAgIEF0b21pYzxzaXplX3Q+JiBzZW5kZXJPZmZz
ZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZW5kZXJPZmZzZXQ7IH0KKyAgICBBdG9taWM8c2l6ZV90
PiYgcmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5yZWNlaXZlck9mZnNldDsgfQor
ICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
bV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBoZWFkZXJTaXplKCk7IH0KKyAgICBzaXplX3QgZGF0
YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTaXplOyB9CisgICAgU2VtYXBob3JlJiBzZW5k
ZXJXYWl0U2VtYXBob3JlKCkgeyByZXR1cm4gbV9zZW5kZXJXYWl0U2VtYXBob3JlOyB9CisKKyAg
ICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6c2VuZGVyT2Zmc2V0IHdoZW4gcmVjZWl2
ZXIgaXMgc2xlZXBpbmcsIGUuZy4gbm90IHJ1bm5pbmcuCisgICAgc3RhdGljIGNvbnN0ZXhwciBz
aXplX3Qgc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnID0gMSA8PCAzMTsKKyAgICAv
LyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6cmVjZWl2ZXJPZmZzZXQgd2hlbiBzZW5kZXIg
aXMgd2FpdGluZywgZS5nLiB3YWl0aW5nIG9uCisgICAgLy8gYSBzZW1hcGhvcmUuCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgcmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcgPSAx
IDw8IDMxOworCisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBP
cHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2
YXRlOgorICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5
PiYmLCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgc2VuZGVyV2FpdFNlbWFwaG9yZSk7
CisKKyAgICBzdHJ1Y3QgSGVhZGVyIHsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gcmVjZWl2ZXJP
ZmZzZXQ7CisgICAgICAgIC8vIFBhZGRpbmcgc28gdGhhdCB0aGUgdmFyaWFibGVzIG1vc3RseSBh
Y2Nlc3NlZCBieSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGRvIG5vdCBzaGFyZSBhIGNhY2hlIGxpbmUu
CisgICAgICAgIC8vIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBhdm9pZCBjYWNoZS1saW5lIGluZHVj
ZWQgcmVkdWN0aW9uIG9mIHBhcmFsbGVsIGFjY2Vzcy4KKyAgICAgICAgdWludDY0X3QgY2FjaGVM
aW5lUGFkZGluZ1syXTsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gc2VuZGVyT2Zmc2V0OworICAg
IH07CisgICAgSGVhZGVyJiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2Fz
dDxIZWFkZXIqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKTsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IGhlYWRlclNpemUoKSB7IHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVv
ZihzdGQ6Om1heF9hbGlnbl90KT4oc2l6ZW9mKEhlYWRlcikpOyB9CisKKyAgICBzaXplX3QgbV9k
YXRhU2l6ZSB7IDAgfTsKKyAgICBSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVt
b3J5OworICAgIFNlbWFwaG9yZSBtX3NlbmRlcldhaXRTZW1hcGhvcmU7Cit9OworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iOTIzMmRlY2Y2Yzc5M2E0NTc3MTY4ZTk3ZWZiNTFhYWZiMzJmZGVlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVj
dGlvbkVuY29kZXIuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5h
bWVzLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSVBDIHsK
KwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjsKKwor
Ly8gSVBDIGVuY29kZXIgd2hpY2g6CisvLyAgLSBFbmNvZGVzIHRvIGEgY2FsbGVyIGJ1ZmZlciB3
aXRoIGZpeGVkIHNpemUsIGRvZXMgbm90IHJlc2l6ZSwgc3RvcHMgd2hlbiBzaXplIHJ1bnMgb3V0
CisvLyAgLSBEb2VzIG5vdCBpbml0aWFsaXplIGFsaWdubWVudCBnYXBzCisvLworY2xhc3MgU3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXIgZmluYWwgeworcHVibGljOgorICAgIC8vIFN0cmVhbSBtZXNz
YWdlIG5lZWRzIHRvIGJlIGF0IGxlYXN0IHNpemUgb2YgU3RyZWFtU2V0RGVzdGluYXRpb25JRCBt
ZXNzYWdlLgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9
IHNpemVvZihNZXNzYWdlTmFtZSkgKyBzaXplb2YodWludDY0X3QpOworICAgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBhbGlnbm9mKE1lc3NhZ2VOYW1lKTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJUENFbmNvZGVyID0gdHJ1ZTsKKworICAgIFN0cmVh
bUNvbm5lY3Rpb25FbmNvZGVyKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50OF90KiBzdHJl
YW0sIHNpemVfdCBzdHJlYW1DYXBhY2l0eSkKKyAgICAgICAgOiBtX2J1ZmZlcihzdHJlYW0pCisg
ICAgICAgICwgbV9idWZmZXJDYXBhY2l0eShzdHJlYW1DYXBhY2l0eSkKKyAgICB7CisgICAgICAg
ICp0aGlzIDw8IG1lc3NhZ2VOYW1lOworICAgIH0KKworICAgIH5TdHJlYW1Db25uZWN0aW9uRW5j
b2RlcigpID0gZGVmYXVsdDsKKworICAgIGJvb2wgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQorICAgIHsKKyAg
ICAgICAgc2l6ZV90IGJ1ZmZlclBvaW50ZXIgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KG1fYnVmZmVyICsgbV9lbmNvZGVkU2l6ZSkpOworICAgICAgICBz
aXplX3QgbmV3QnVmZmVyUG9pbnRlciA9IHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25tZW50LCBi
dWZmZXJQb2ludGVyKTsKKyAgICAgICAgaWYgKG5ld0J1ZmZlclBvaW50ZXIgPCBidWZmZXJQb2lu
dGVyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpbnRwdHJfdCBhbGlnbmVk
U2l6ZSA9IG1fZW5jb2RlZFNpemUgKyAobmV3QnVmZmVyUG9pbnRlciAtIGJ1ZmZlclBvaW50ZXIp
OworICAgICAgICBpZiAoIXJlc2VydmUoYWxpZ25lZFNpemUsIHNpemUpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB1aW50OF90KiBidWZmZXIgPSBtX2J1ZmZlciArIGFsaWdu
ZWRTaXplOworICAgICAgICBtZW1jcHkoYnVmZmVyLCBkYXRhLCBzaXplKTsKKyAgICAgICAgbV9l
bmNvZGVkU2l6ZSA9IGFsaWduZWRTaXplICsgc2l6ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBTdHJlYW1Db25uZWN0aW9uRW5j
b2RlciYgb3BlcmF0b3I8PChUJiYgdCkKKyAgICB7CisgICAgICAgIEFyZ3VtZW50Q29kZXI8c3Rk
OjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxUPj4sIHZvaWQ+OjplbmNv
ZGUoKnRoaXMsIHN0ZDo6Zm9yd2FyZDxUPih0KSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgQVNTRVJUKGlzVmFsaWQoKSk7IHJldHVy
biBtX2VuY29kZWRTaXplOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXJDYXBhY2l0eTsgfQorICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1Zh
bGlkKCk7IH0KK3ByaXZhdGU6CisgICAgYm9vbCByZXNlcnZlKHNpemVfdCBhbGlnbmVkU2l6ZSwg
c2l6ZV90IGFkZGl0aW9uYWxTaXplKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBhbGln
bmVkU2l6ZSArIGFkZGl0aW9uYWxTaXplOworICAgICAgICBpZiAoc2l6ZSA8IGFsaWduZWRTaXpl
IHx8IHNpemUgPiBtX2J1ZmZlckNhcGFjaXR5KSB7CisgICAgICAgICAgICBtX2J1ZmZlckNhcGFj
aXR5ID0gMDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgdWludDhfdCogbV9idWZmZXI7CisgICAgc2l6ZV90IG1f
YnVmZmVyQ2FwYWNpdHk7CisgICAgc2l6ZV90IG1fZW5jb2RlZFNpemUgeyAwIH07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTViNDQ5NGI3NGZk
OTI4NTgwM2U0ZWEyZWY0OGMxMTczNjU5ZDcxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCkBAIC0wLDAg
KzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUoY29uc3QgY2hhciog
bmFtZSkKKyAgICA6IG1fbmFtZShuYW1lKQoreworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OmRpc3BhdGNoKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQorewor
ICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX2Z1bmN0aW9u
cy5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkUXVp
dCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVkLgorICAgIH0K
KyAgICB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7CisKK30KK3ZvaWQgU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZSYgY29ubmVjdGlvbikKK3sKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsK
KyAgICAgICAgbV9jb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbik7CisgICAgICAgIEFTU0VSVCgh
bV9zaG91bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5vdCBzdXBwb3J0
ZWQuCisgICAgfQorICAgIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQoKTsKK30KKwordm9pZCBTdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlOjpyZW1vdmVTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChtX3Byb2Nlc3NpbmdU
aHJlYWQpOworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBt
X2Nvbm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFtX3Nob3Vs
ZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBvcnRlZC4KKyAg
ICB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7
CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKCkKK3sK
KyAgICBtX3Nob3VsZFF1aXQgPSB0cnVlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmICgh
bV9wcm9jZXNzaW5nVGhyZWFkKQorICAgICAgICByZXR1cm47CisgICAgbV93YWtlVXBTZW1hcGhv
cmUuc2lnbmFsKCk7CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigp
OworICAgIG1fcHJvY2Vzc2luZ1RocmVhZCA9IG51bGxwdHI7CisjZW5kaWYKK30KKwordm9pZCBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXAoKQoreworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25hbCgpOworI2VuZGlmCit9CisKK0lQQzo6U2Vt
YXBob3JlJiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXBTZW1hcGhvcmUoKQorewor
ICAgIHJldHVybiBtX3dha2VVcFNlbWFwaG9yZTsKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9u
V29ya1F1ZXVlOjp3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCkKK3sKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBpZiAobV9wcm9jZXNzaW5nVGhyZWFkKSB7CisgICAgICAgIG1fd2FrZVVwU2VtYXBo
b3JlLnNpZ25hbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byB0YXNrID0g
W3RoaXNdKCkgbXV0YWJsZSB7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIHByb2Nl
c3NTdHJlYW1zKCk7CisgICAgICAgICAgICBpZiAobV9zaG91bGRRdWl0KSB7CisgICAgICAgICAg
ICAgICAgcHJvY2Vzc1N0cmVhbXMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBtX3dha2VVcFNlbWFwaG9yZS53YWl0KCk7CisgICAgICAgIH0K
KyAgICB9OworICAgIG1fcHJvY2Vzc2luZ1RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKG1fbmFtZSwg
V1RGTW92ZSh0YXNrKSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MsIFRocmVhZDo6UU9TOjpVc2VySW50
ZXJhY3RpdmUpOworI2VuZGlmCit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6
cHJvY2Vzc1N0cmVhbXMoKQoreworICAgIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdE1lc3NhZ2VM
aW1pdCA9IDEwMDA7CisgICAgYm9vbCBoYXNNb3JlVG9Qcm9jZXNzID0gZmFsc2U7CisgICAgZG8g
eworICAgICAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IGZ1bmN0aW9uczsKKyAgICAg
ICAgSGFzaFNldDxSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+PiBjb25uZWN0aW9uczsK
KyAgICAgICAgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwor
ICAgICAgICAgICAgZnVuY3Rpb25zLnN3YXAobV9mdW5jdGlvbnMpOworICAgICAgICAgICAgY29u
bmVjdGlvbnMgPSBtX2Nvbm5lY3Rpb25zOworICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byYg
ZnVuY3Rpb24gOiBmdW5jdGlvbnMpCisgICAgICAgICAgICBXVEZNb3ZlKGZ1bmN0aW9uKSgpOwor
CisgICAgICAgIGhhc01vcmVUb1Byb2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgZm9yIChhdXRvJiBj
b25uZWN0aW9uIDogY29ubmVjdGlvbnMpCisgICAgICAgICAgICBoYXNNb3JlVG9Qcm9jZXNzIHw9
IGNvbm5lY3Rpb24tPmRpc3BhdGNoU3RyZWFtTWVzc2FnZXMoZGVmYXVsdE1lc3NhZ2VMaW1pdCkg
PT0gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6Okhhc01vcmVNZXNzYWdlczsKKyAgICB9IHdo
aWxlIChoYXNNb3JlVG9Qcm9jZXNzKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1
MjZhMzUyNjY1MWRkZmYzOTBhN2RmNzFmYzk1ZGE1YTQxZGNjNWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgK
QEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb25EaXNwYXRjaGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3
dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7
CisKK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rp
b25EaXNwYXRjaGVyIHsKK3B1YmxpYzoKKyAgICBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlKGNv
bnN0IGNoYXIqKTsKKyAgICB+U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSgpID0gZGVmYXVsdDsK
KyAgICB2b2lkIGFkZFN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2Um
KTsKKyAgICB2b2lkIHJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2UmKTsKKworICAgIHZvaWQgZGlzcGF0Y2goV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZp
bmFsOworICAgIHZvaWQgc3RvcCgpOworCisgICAgdm9pZCB3YWtlVXAoKTsKKworICAgIFNlbWFw
aG9yZSYgd2FrZVVwU2VtYXBob3JlKCk7Citwcml2YXRlOgorICAgIHZvaWQgd2FrZVVwUHJvY2Vz
c2luZ1RocmVhZCgpOworICAgIHZvaWQgcHJvY2Vzc1N0cmVhbXMoKTsKKworICAgIGNvbnN0IGNo
YXIqIGNvbnN0IG1fbmFtZTsKKyAgICBTZW1hcGhvcmUgbV93YWtlVXBTZW1hcGhvcmU7CisgICAg
UmVmUHRyPFRocmVhZD4gbV9wcm9jZXNzaW5nVGhyZWFkOworCisgICAgc3RkOjphdG9taWM8Ym9v
bD4gbV9zaG91bGRRdWl0IHsgZmFsc2UgfTsKKworICAgIExvY2sgbV9sb2NrOworICAgIERlcXVl
PEZ1bmN0aW9uPHZvaWQoKT4+IG1fZnVuY3Rpb25zOworICAgIEhhc2hTZXQ8UmVmPFN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlPj4gbV9jb25uZWN0aW9uczsKK307CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGUxNGI1ZDUxN2YwNjc2MzM4MmY1MTNmZTU1Mzc1MWI2YzFiMzMyYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uY3BwCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCisKK25h
bWVzcGFjZSBJUEMgeworCitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmIHN0cmVhbSwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQorICAg
IDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX3dvcmtRdWV1ZSh3b3JrUXVldWUp
CisgICAgLCBtX2J1ZmZlcihXVEZNb3ZlKHN0cmVhbSkpCit7Cit9CisKK3ZvaWQgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFt
ZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgbV9jb25uZWN0
aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1ZXVlKCp0aGlzLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0
aW9uSUQpOworICAgIG1fd29ya1F1ZXVlLmFkZFN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOworfQor
Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdG9wUmVjZWl2aW5nTWVzc2FnZXNJ
bXBsKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7
CisgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKHJlY2VpdmVyTmFt
ZSwgZGVzdGluYXRpb25JRCk7CisgICAgbV93b3JrUXVldWUucmVtb3ZlU3RyZWFtQ29ubmVjdGlv
bigqdGhpcyk7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmVucXVldWVN
ZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJiBtZXNzYWdlKQor
eworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX291dE9mU3RyZWFtTWVz
c2FnZXNMb2NrKTsKKyAgICAgICAgbV9vdXRPZlN0cmVhbU1lc3NhZ2VzLmFwcGVuZChXVEZNb3Zl
KG1lc3NhZ2UpKTsKKyAgICB9CisgICAgbV93b3JrUXVldWUud2FrZVVwKCk7Cit9CisKK09wdGlv
bmFsPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uQmFzZTo6dHJ5QXF1aXJlKCkKK3sKKyAgICBzaXplX3QgcmVjZWl2ZXJMaW1pdCA9IHNoYXJl
ZFNlbmRlck9mZnNldCgpLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CisgICAgaWYg
KHJlY2VpdmVyTGltaXQgPT0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVj
ZWl2ZXJJc1NsZWVwaW5nVGFnKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1
dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9yZWNlaXZlck9mZnNldCwgcmVjZWl2ZXJMaW1pdCk7
CisgICAgaWYgKHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplKSB7CisgICAgICAgIHJl
Y2VpdmVyTGltaXQgPSBzaGFyZWRTZW5kZXJPZmZzZXQoKS5jb21wYXJlRXhjaGFuZ2VTdHJvbmco
cmVjZWl2ZXJMaW1pdCwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2
ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9v
cmRlcl9hY3FfcmVsKTsKKyAgICAgICAgQVNTRVJUKCEocmVjZWl2ZXJMaW1pdCAmIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZykpOworICAg
ICAgICByZWNlaXZlckxpbWl0ID0gY2xhbXBlZExpbWl0KHJlY2VpdmVyTGltaXQpOworICAgICAg
ICByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0KTsK
KyAgICB9CisKKyAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXplKQorICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3ZvaWQg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKQorewor
ICAgIEFTU0VSVChyZWFkU2l6ZSk7CisgICAgcmVhZFNpemUgPSBzdGQ6Om1heChyZWFkU2l6ZSwg
bWluaW11bU1lc3NhZ2VTaXplKTsKKyAgICBzaXplX3QgcmVjZWl2ZXJPZmZzZXQgPSB3cmFwT2Zm
c2V0KGFsaWduT2Zmc2V0KG1fcmVjZWl2ZXJPZmZzZXQpICsgcmVhZFNpemUpOworCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgc2l6ZV90IG9sZFJlY2VpdmVyT2Zmc2V0ID0gc2hhcmVkUmVjZWl2
ZXJPZmZzZXQoKS5leGNoYW5nZShyZWNlaXZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNx
X3JlbCk7CisgICAgLy8gSWYgdGhlIHNlbmRlciB3cm90ZSBvdmVyIHJlY2VpdmVyT2Zmc2V0LCBp
dCBtZWFucyB0aGUgc2VuZGVyIGlzIHdhaXRpbmcuCisgICAgaWYgKG9sZFJlY2VpdmVyT2Zmc2V0
ICE9IG1fcmVjZWl2ZXJPZmZzZXQpCisgICAgICAgIG1fYnVmZmVyLnNlbmRlcldhaXRTZW1hcGhv
cmUoKS5zaWduYWwoKTsKKyNlbmRpZgorCisgICAgbV9yZWNlaXZlck9mZnNldCA9IHJlY2VpdmVy
T2Zmc2V0OworfQorCitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3BhbiBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0
KQoreworICAgIEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBBU1NFUlQobGltaXQg
PCBkYXRhU2l6ZSgpKTsKKyAgICBzaXplX3QgYWxpZ25lZCA9IGFsaWduT2Zmc2V0KG9mZnNldCk7
CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSAwOworICAgIGlmIChvZmZzZXQgPCBsaW1pdCkgewor
ICAgICAgICBpZiAob2Zmc2V0IDw9IGFsaWduZWQgJiYgYWxpZ25lZCA8IGxpbWl0KQorICAgICAg
ICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0gZWxzZSBpZiAo
b2Zmc2V0ID4gbGltaXQpIHsKKyAgICAgICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0IHx8IGFsaWdu
ZWQgPCBsaW1pdCkKKyAgICAgICAgICAgIHJlc3VsdFNpemUgPSBzaXplKGFsaWduZWQsIGxpbWl0
KTsKKyAgICB9CisgICAgcmV0dXJuIHsgZGF0YSgpICsgYWxpZ25lZCwgcmVzdWx0U2l6ZSB9Owor
fQorCitzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNpemUoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxpbWl0KQoreworICAgIGlmIChvZmZzZXQgPD0gbGltaXQpCisgICAgICAgIHJl
dHVybiBsaW1pdCAtIG9mZnNldDsKKyAgICByZXR1cm4gZGF0YVNpemUoKSAtIG9mZnNldDsKK30K
Kworc2l6ZV90IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQoc2l6ZV90
IHVudHJ1c3RlZExpbWl0KSBjb25zdAoreworICAgIEFTU0VSVCh1bnRydXN0ZWRMaW1pdCA8IChk
YXRhU2l6ZSgpIC0gMSkpOworICAgIHJldHVybiBzdGQ6Om1pbih1bnRydXN0ZWRMaW1pdCwgZGF0
YVNpemUoKSAtIDEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIwYjkyMTM2ZmY2YjZhOWI5
ZTE5OGRjOTczYjNkM2E2ZWE1NjYyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDI4MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZU5hbWVzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUg
IlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworY2xhc3MgU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZTsKKworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2Ug
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+
LCBwcm90ZWN0ZWQgTWVzc2FnZVJlY2VpdmVRdWV1ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UpOworcHVibGljOgorICAgIH5TdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZSgpIG92ZXJyaWRlID0gZGVmYXVsdDsKKworICAgIENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKworICAgIGVudW0gRGlzcGF0
Y2hSZXN1bHQgOiBib29sIHsKKyAgICAgICAgSGFzTm9NZXNzYWdlcywKKyAgICAgICAgSGFzTW9y
ZU1lc3NhZ2VzCisgICAgfTsKKyAgICB2aXJ0dWFsIERpc3BhdGNoUmVzdWx0IGRpc3BhdGNoU3Ry
ZWFtTWVzc2FnZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkgPSAwOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHZvaWQgc2VuZFN5bmNSZXBseSh1aW50NjRfdCBzeW5j
UmVxdWVzdElELCBBcmd1bWVudHMmJi4uLik7CisKK3Byb3RlY3RlZDoKKyAgICBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZShJUEM6OkNvbm5lY3Rpb24mLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
JiYsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmKTsKKworICAgIHZvaWQgc3RhcnRSZWNlaXZp
bmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAg
ICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKTsKKworICAgIC8vIE1lc3NhZ2VSZWNlaXZlUXVldWUKKyAgICB2b2lkIGVu
cXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJikgZmlu
YWw7CisKKyAgICBzdHJ1Y3QgU3BhbiB7CisgICAgICAgIHVpbnQ4X3QqIGRhdGE7CisgICAgICAg
IHNpemVfdCBzaXplOworICAgIH07CisgICAgT3B0aW9uYWw8U3Bhbj4gdHJ5QXF1aXJlKCk7CisK
KyAgICB2b2lkIHJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBtaW5pbXVtTWVzc2FnZVNpemUgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWlu
aW11bU1lc3NhZ2VTaXplOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGln
bm1lbnQgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWVzc2FnZUFsaWdubWVudDsKKyAgICBT
cGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90
IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAgICBzaXplX3QgY2xhbXBlZExp
bWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7CisgICAgc2l6ZV90IHdyYXBPZmZzZXQo
c2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNldChvZmZzZXQp
OyB9CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwgbWluaW11bU1l
c3NhZ2VTaXplKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRTZW5kZXJPZmZzZXQoKSB7
IHJldHVybiBtX2J1ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBz
aGFyZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnJlY2VpdmVyT2Zmc2V0KCk7
IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9
CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUo
KTsgfQorCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUmIG1fd29ya1F1ZXVlOworCisgICAgc2l6ZV90IG1fcmVjZWl2
ZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKKwor
ICAgIExvY2sgbV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jazsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1
ZV9wdHI8RGVjb2Rlcj4+IG1fb3V0T2ZTdHJlYW1NZXNzYWdlczsKKworICAgIGZyaWVuZCBjbGFz
cyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJndW1lbnRzPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2VuZFN5bmNSZXBs
eSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kaW5nIHRvIGJ1ZmZlci4KKyAgICBhdXRvIGVuY29k
ZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3Nh
Z2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CisgICAgKCplbmNvZGVyIDw8IC4uLiA8PCBhcmd1bWVu
dHMpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShXVEZNb3ZlKGVuY29kZXIpKTsK
K30KKworLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbiByZXByZXNlbnRzIHRoZSBjb25uZWN0aW9u
IGJldHdlZW4gc3RyZWFtIHNlbmRlciBhbmQgcmVjZWl2ZXIsIGFzIHVzZWQgYnkgdGhlIHJlY2Vp
dmVyLgorLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbjoKKy8vICAqIEhvbGRzIHRoZSBtZXNzYWdl
cyB0b3dhcmRzIHRoZSByZWNlaXZlci4KKy8vICAqIFNlbmRzIHRoZSByZXBsaWVzIGJhY2sgdG8g
dGhlIHNlbmRlciB2aWEgdGhlIHN0cmVhbSBvciBub3JtYWwgQ29ubmVjdGlvbiBmYWxsYmFjay4K
Ky8vCisvLyBSZWNlaXZlciB0ZW1wbGF0ZSBjb250cmFjdDoKKy8vICAgdm9pZCBkaWRSZWNlaXZl
U3RyZWFtTWVzc2FnZShTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIERlY29kZXImKTsKKy8v
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b24gZmluYWwgOiBwdWJsaWMgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UgeworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gY3JlYXRlKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZShz
dHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpKTsKKyAgICB9CisgICAgflN0cmVhbVNlcnZlckNvbm5l
Y3Rpb24oKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2Fn
ZXMoUmVjZWl2ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAg
IC8vIFN0b3BzIHRoZSBtZXNzYWdlIHJlY2VpcHQuIE5vdGU6IGFscmVhZHkgcmVjZWl2ZWQgbWVz
c2FnZXMgbWlnaHQgc3RpbGwgYmUgZGVsaXZlcmVkLgorICAgIHZvaWQgc3RvcFJlY2VpdmluZ01l
c3NhZ2VzKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisKKyAgICAvLyBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSBvdmVycmlkZXMuCisgICAgRGlzcGF0Y2hSZXN1bHQg
ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KSBmaW5hbDsKKworcHJp
dmF0ZToKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICAgICAgOiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZShjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSkKKyAgICB7Cisg
ICAgfQorICAgIGJvb2wgcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoRGVjb2RlciYmLCBS
ZWZQdHI8UmVjZWl2ZXI+JiBjdXJyZW50UmVjZWl2ZXIpOworICAgIGJvb2wgZGlzcGF0Y2hTdHJl
YW1NZXNzYWdlKERlY29kZXImJiwgUmVjZWl2ZXImKTsKKyAgICBib29sIGRpc3BhdGNoT3V0T2ZT
dHJlYW1NZXNzYWdlKERlY29kZXImJik7CisgICAgTG9jayBtX3JlY2VpdmVyc0xvY2s7CisgICAg
dXNpbmcgUmVjZWl2ZXJzTWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8dWludDhfdCwgdWludDY0X3Q+
LCBSZWY8UmVjZWl2ZXI+PjsKKyAgICBSZWNlaXZlcnNNYXAgbV9yZWNlaXZlcnM7CisKKyAgICB1
aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEID0gMDsKK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6c3Rh
cnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYgcmVjZWl2ZXIsIFJlY2VpdmVyTmFtZSByZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgeworICAgICAgICBhdXRv
IGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSks
IGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2
ZXJzTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9yZWNlaXZlcnMuY29udGFpbnMoa2V5KSk7Cisg
ICAgICAgIG1fcmVjZWl2ZXJzLmFkZChrZXksIG1ha2VSZWYocmVjZWl2ZXIpKTsKKyAgICB9Cisg
ICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBs
KHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJl
Y2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6c3RvcFJlY2Vp
dmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQpCit7CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdN
ZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRvIGtleSA9
IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3Rp
bmF0aW9uSUQpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsK
KyAgICBBU1NFUlQobV9yZWNlaXZlcnMuY29udGFpbnMoa2V5KSk7CisgICAgbV9yZWNlaXZlcnMu
cmVtb3ZlKGtleSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2U6OkRpc3BhdGNoUmVzdWx0IFN0cmVhbVNlcnZlckNvbm5lY3Rpb248
UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNzYWdlTGltaXQpCit7
CisgICAgUmVmUHRyPFJlY2VpdmVyPiBjdXJyZW50UmVjZWl2ZXI7CisgICAgLy8gRklYTUU6IElt
cGxlbWVudCBXVEY6OmlzVmFsaWQoUmVjZWl2ZXJOYW1lKS4KKyAgICB1aW50OF90IGN1cnJlbnRS
ZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihSZWNlaXZlck5hbWU6OkludmFsaWQp
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlTGltaXQ7ICsraSkgeworICAg
ICAgICBhdXRvIHNwYW4gPSB0cnlBcXVpcmUoKTsKKyAgICAgICAgaWYgKCFzcGFuKQorICAgICAg
ICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICBJUEM6
OkRlY29kZXIgZGVjb2RlciB7IHNwYW4tPmRhdGEsIHNwYW4tPnNpemUsIG1fY3VycmVudERlc3Rp
bmF0aW9uSUQgfTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkgeworICAgICAgICAg
ICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNO
b01lc3NhZ2VzOworICAgICAgICB9CisgICAgICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQpIHsKKyAgICAgICAgICAgIGlm
ICghcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoV1RGTW92ZShkZWNvZGVyKSwgY3VycmVu
dFJlY2VpdmVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05v
TWVzc2FnZXM7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1N
ZXNzYWdlKSB7CisgICAgICAgICAgICBpZiAoIWRpc3BhdGNoT3V0T2ZTdHJlYW1NZXNzYWdlKFdU
Rk1vdmUoZGVjb2RlcikpKQorICAgICAgICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6
SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IGlmIChjdXJyZW50UmVjZWl2ZXJOYW1lICE9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkgeworICAgICAgICAgICAgY3VycmVudFJlY2VpdmVyTmFt
ZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsK
KyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFjdXJyZW50UmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIGF1dG8ga2V5ID0gc3RkOjpt
YWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4oY3VycmVudFJlY2VpdmVyTmFtZSksIG1fY3Vy
cmVudERlc3RpbmF0aW9uSUQpOworICAgICAgICAgICAgaWYgKCFSZWNlaXZlcnNNYXA6OmlzVmFs
aWRLZXkoa2V5KSkgeworICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7Cisg
ICAgICAgICAgICBjdXJyZW50UmVjZWl2ZXIgPSBtX3JlY2VpdmVycy5nZXQoa2V5KTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNlaXZlcikgeworICAgICAgICAgICAgLy8gVmFs
aWQgc2NlbmFyaW8gaXMgd2hlbiByZWNlaXZlciBoYXMgYmVlbiByZW1vdmVkLCBidXQgdGhlcmUg
YXJlIG1lc3NhZ2VzIGZvciBpdCBpbiB0aGUgYnVmZmVyLgorICAgICAgICAgICAgLy8gRklYTUU6
IFNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgcmVjZWl2ZXIsIHdlIGRvbid0IGtub3cgaG93IHRvIGRl
Y29kZSB0aGUgbWVzc2FnZS4KKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgbXVzdCB0aW1l
b3V0IGV2ZXJ5IHJlY2VpdmVyIGluIHRoZSBzdHJlYW0gY29ubmVjdGlvbi4KKyAgICAgICAgICAg
IC8vIEN1cnJlbnRseSB3ZSBhc3NlcnQgdGhhdCB0aGUgcmVjZWl2ZXJzIGFyZSBlbXB0eSwgYXMg
d2Ugb25seSBoYXZlIHVwIHRvIG9uZSByZWNlaXZlciBpbgorICAgICAgICAgICAgLy8gYSBzdHJl
YW0gY29ubmVjdGlvbiB1bnRpbCBwb3NzaWJpbGl0eSBvZiBza2lwcGluZyBpcyBpbXBsZW1lbnRl
ZCBwcm9wZXJseS4KKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZl
cnNMb2NrKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3JlY2VpdmVycy5pc0VtcHR5KCkpOworICAg
ICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICB9
CisgICAgICAgIGlmICghZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKFdURk1vdmUoZGVjb2RlciksICpj
dXJyZW50UmVjZWl2ZXIpKQorICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNO
b01lc3NhZ2VzOworICAgIH0KKyAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc01vcmVNZXNz
YWdlczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29sIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9jZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRChEZWNv
ZGVyJiYgZGVjb2RlciwgUmVmUHRyPFJlY2VpdmVyPiYgY3VycmVudFJlY2VpdmVyKQoreworICAg
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVz
dGluYXRpb25JRCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIGlmIChtX2N1cnJlbnREZXN0aW5hdGlvbklEICE9IGRlc3RpbmF0aW9u
SUQpIHsKKyAgICAgICAgbV9jdXJyZW50RGVzdGluYXRpb25JRCA9IGRlc3RpbmF0aW9uSUQ7Cisg
ICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7CisgICAgfQorICAgIHJlbGVhc2UoZGVj
b2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJl
Y2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiBkZWNvZGVyLCBSZWNlaXZl
ciYgcmVjZWl2ZXIpCit7CisgICAgcmVjZWl2ZXIuZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKnRo
aXMsIGRlY29kZXIpOworICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJlbGVhc2UoZGVj
b2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJl
Y2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmIGRlY29kZXIpCit7
CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2U7CisgICAgeworICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOworICAgICAg
ICBpZiAobV9vdXRPZlN0cmVhbU1lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgbWVzc2FnZSA9IG1fb3V0T2ZTdHJlYW1NZXNzYWdlcy50YWtlRmly
c3QoKTsKKyAgICB9CisgICAgaWYgKCFtZXNzYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBSZWZQdHI8UmVjZWl2ZXI+IHJlY2VpdmVyOworICAgIHsKKyAgICAgICAgYXV0byBrZXkg
PSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpLCBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpOworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgIHJlY2VpdmVyID0gbV9y
ZWNlaXZlcnMuZ2V0KGtleSk7CisgICAgfQorICAgIGlmIChyZWNlaXZlcikgeworICAgICAgICBy
ZWNlaXZlci0+ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKnRoaXMsICptZXNzYWdlKTsKKyAgICAg
ICAgaWYgKCFtZXNzYWdlLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+
ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZS0+bWVzc2FnZU5hbWUoKSk7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gSWYg
cmVjZWl2ZXIgZG9lcyBub3QgZXhpc3QgaWYgaXQgaGFzIGJlZW4gcmVtb3ZlZCBidXQgbWVzc2Fn
ZXMgYXJlIHN0aWxsIHBlbmRpbmcgdG8gYmUKKyAgICAvLyBwcm9jZXNzZWQuIEl0J3Mgb2sgdG8g
c2tpcCBzdWNoIG1lc3NhZ2VzLgorICAgIC8vIEZJWE1FOiBOb3RlLCBjb3JyZXNwb25kaW5nIHNr
aXAgaXMgbm90IHBvc3NpYmxlIGF0IHRoZSBtb21lbnQgZm9yIHN0cmVhbSBtZXNzYWdlcy4KKyAg
ICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBvc2l0aW9uKCkpOworICAgIHJldHVybiB0
cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2Nv
YS9NYWNoUG9ydC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQu
aAppbmRleCA3ODU0ZmE4ZjE4NjhmYjhlNDU2MjI4OWZkZGY2ZjI3OTVhZjJkOTBkLi44M2Q5OWYw
Y2JjOGZlMDQ4MjBiNDc4M2M5YzA3NmFiNTdhM2VhYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmgKQEAgLTI1LDkgKzI1LDggQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiQXR0YWNobWVudC5o
IgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCiAKIG5hbWVzcGFj
ZSBJUEMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29u
bmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlv
bldpbi5jcHAKaW5kZXggNWFkZmQ4MmJlY2E0NmRiMDI0NDdlOGJjYjZkMzg0YzJjMDE1NmE2MC4u
OTBiODAyYzgwOTZkNzZjMzJiNGI5N2ZiODEyZWFmOTFmZjEzM2U4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAorI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGVkMDhjNzM5NzcwMjIy
ZmM1YzRjNDZjMzM0NzhhYzEwMzAxYTk5ODguLmFjOWU3ODJlMjE4MzE4MWJjOTg1MzVkNWRlODRm
ZTgwNWFmMDdlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtMjQsOCArMjQsOSBAQCBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCByZQogaW1wb3J0IHN5
cwogCitmcm9tIG1vZGVsIGltcG9ydCBNZXNzYWdlUmVjZWl2ZXIsIE1lc3NhZ2UKIGZyb20gd2Vi
a2l0IGltcG9ydCBwYXJzZXIKLWZyb20gd2Via2l0Lm1vZGVsIGltcG9ydCBCVUlMVElOX0FUVFJJ
QlVURSwgQVNZTkNfQVRUUklCVVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEUsIE1BSU5USFJFQURD
QUxMQkFDS19BVFRSSUJVVEUKK2Zyb20gd2Via2l0Lm1vZGVsIGltcG9ydCBCVUlMVElOX0FUVFJJ
QlVURSwgQVNZTkNfQVRUUklCVVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEUsIE1BSU5USFJFQURD
QUxMQkFDS19BVFRSSUJVVEUsIFNUUkVBTV9BVFRSSUJVVEUsIFdBTlRTX0NPTk5FQ1RJT05fQVRU
UklCVVRFCiAKIF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01MywxMyArNTQsMTEgQEAg
X2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKIAogIiIiCiAKLVdBTlRTX0NPTk5FQ1RJT05fQVRUUklC
VVRFID0gJ1dhbnRzQ29ubmVjdGlvbicKIFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRF
ID0gJ1dhbnRzRGlzcGF0Y2hNZXNzYWdlJwogV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9B
VFRSSUJVVEUgPSAnV2FudHNBc3luY0Rpc3BhdGNoTWVzc2FnZScKIExFR0FDWV9SRUNFSVZFUl9B
VFRSSUJVVEUgPSAnTGVnYWN5UmVjZWl2ZXInCiBOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRS
SUJVVEUgPSAnTm90UmVmQ291bnRlZCcKIAotCiBkZWYgcmVjZWl2ZXJfZW51bWVyYXRvcl9vcmRl
cl9rZXkocmVjZWl2ZXJfbmFtZSk6CiAgICAgaWYgcmVjZWl2ZXJfbmFtZSA9PSAnSVBDJzoKICAg
ICAgICAgcmV0dXJuIDEKQEAgLTIxMSw3ICsyMTAsNyBAQCBkZWYgbWVzc2FnZV90b19zdHJ1Y3Rf
ZGVjbGFyYXRpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxl
dGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpNYWluVGhyZWFkO1xuJykKICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gY2FsbGJh
Y2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29uc3RydWN0aW9u
VGhyZWFkO1xuJykKLSAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VT
X0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSk6Cisg
ICAgICAgIGlmIChtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBv
ciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSkgYW5kIG5vdCByZWNlaXZl
ci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
JiwgSVBDOjpDb25uZWN0aW9uJicpCiAgICAgICAgICAgICBpZiBsZW4oc2VuZF9wYXJhbWV0ZXJz
KToKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlIGNvbXBsZXRpb25faGFu
ZGxlcl9wYXJhbWV0ZXJzKQpAQCAtMjU5LDYgKzI1OCw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5v
dF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgcmV0dXJuIGZyb3plbnNldChbCiAgICAgICAg
ICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAnSVBDOjpGb250UmVmZXJlbmNlJywKKyAg
ICAgICAgJ0lQQzo6U2VtYXBob3JlJywKICAgICAgICAgJ01hY2hTZW5kUmlnaHQnLAogICAgICAg
ICAnTWVkaWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCkBAIC01NzEsMTAgKzU3MSwxNSBAQCBk
ZWYgc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgIGRp
c3BhdGNoX2Z1bmN0aW9uICs9ICdBc3luYycKIAogICAgIHdhbnRzX2Nvbm5lY3Rpb24gPSBtZXNz
YWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19h
dHRyaWJ1dGUoV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUpCisgICAgbWF5YmVfcmVwbHlfZW5j
b2RlciA9ICIsICpyZXBseUVuY29kZXIiCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShT
VFJFQU1fQVRUUklCVVRFKToKKyAgICAgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9ICcnCisgICAg
ZWxpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNz
YWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgbWF5YmVfcmVwbHlf
ZW5jb2RlciA9ICcsIHJlcGx5RW5jb2RlcicKIAogICAgIHJlc3VsdCA9IFtdCiAgICAgcmVzdWx0
LmFwcGVuZCgnICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OiVzOjol
czo6bmFtZSgpKSB7XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkpCi0gICAgcmVz
dWx0LmFwcGVuZCgnICAgICAgICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVzZGVjb2Rlciwg
JXNyZXBseUVuY29kZXIsIHRoaXMsICYlcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNl
aXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICdjb25uZWN0aW9uLCAnIGlmIHdhbnRzX2Nvbm5lY3Rp
b24gZWxzZSAnJywgJycgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJ
QlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSkgZWxzZSAnKics
IGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpKSkKKyAgICByZXN1bHQuYXBwZW5k
KCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXNkZWNvZGVyJXMsIHRoaXMsICYl
cyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUs
ICdjb25uZWN0aW9uLCAnIGlmIHdhbnRzX2Nvbm5lY3Rpb24gZWxzZSAnJywgbWF5YmVfcmVwbHlf
ZW5jb2RlciwgaGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQogICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAgICAgcmV0dXJuO1xuJykKICAgICByZXN1bHQuYXBwZW5kKCcgICAgfVxu
JykKICAgICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9uKCcnLmpvaW4ocmVzdWx0KSwgbWVz
c2FnZS5jb25kaXRpb24pCkBAIC04NzQsNyArODc5LDcgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2Vf
aGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgIGlmIG1lc3NhZ2UucmVwbHlfcGFyYW1ldGVycyAh
PSBOb25lIGFuZCAobWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkg
b3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSkpOgogICAgICAgICAgICAg
ZGVsYXllZF9vcl9hc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkKIAotICAgIGlmIGRlbGF5
ZWRfb3JfYXN5bmNfbWVzc2FnZXM6CisgICAgaWYgZGVsYXllZF9vcl9hc3luY19tZXNzYWdlcyBh
bmQgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBNZXNzYWdlcyB7XG5cbm5hbWVzcGFjZSAlcyB7XG5c
bicgJSByZWNlaXZlci5uYW1lKQogCiAgICAgICAgIGZvciBtZXNzYWdlIGluIGRlbGF5ZWRfb3Jf
YXN5bmNfbWVzc2FnZXM6CkBAIC05MjIsMjUgKzkyNyw0NCBAQCBkZWYgZ2VuZXJhdGVfbWVzc2Fn
ZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFzeW5jX21l
c3NhZ2VzLmFwcGVuZChtZXNzYWdlKQogCi0gICAgaWYgYXN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2
ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVj
ZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVU
RSk6Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUg
KHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShM
RUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkKKyAgICBpZiByZWNlaXZlci5oYXNf
YXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lk
ICVzOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5h
bWUpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQotICAgICAgICBpZiBub3QgcmVjZWl2
ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpOgorICAg
ICAgICBhc3NlcnQocmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZF
Ul9BVFRSSUJVVEUpKQorICAgICAgICBhc3NlcnQobm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUo
V0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKQorICAgICAgICBhc3NlcnQobm90IHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJV
VEUpKQorCisgICAgICAgIHJlc3VsdCArPSBbYXN5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2
ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIGFzeW5jX21lc3NhZ2VzXQorICAgICAgICByZXN1
bHQgKz0gW3N5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNz
YWdlIGluIHN5bmNfbWVzc2FnZXNdCisKKyAgICAgICAgaWYgKHJlY2VpdmVyLnN1cGVyY2xhc3Mp
OgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZlU3RyZWFtTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcykpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFN
KGRlY29kZXIpO1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFS
QU0oY29ubmVjdGlvbik7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpO1xuJykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKKyAgICBl
bGlmIGFzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFU
Q0hfTUVTU0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZ
TkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgorICAgICAgICByZWNlaXZlX3ZhcmlhbnQg
PSByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVS
X0FUVFJJQlVURSkgZWxzZSAnJworICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRS
ZWNlaXZlJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlX3ZhcmlhbnQpKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgICAgICBpZiBub3QgKHJlY2VpdmVyLmhhc19hdHRy
aWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNf
YXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTtcbicpCiAKICAgICAgICAg
cmVzdWx0ICs9IFthc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9y
IG1lc3NhZ2UgaW4gYXN5bmNfbWVzc2FnZXNdCisKICAgICAgICAgaWYgcmVjZWl2ZXIuaGFzX2F0
dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFz
X2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CiAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKSlcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVy
bjtcbicpCiAgICAgICAgIGlmIChyZWNlaXZlci5zdXBlcmNsYXNzKToKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xhc3MpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAl
IChyZWNlaXZlci5zdXBlcmNsYXNzLCByZWNlaXZlX3ZhcmlhbnQpKQogICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTtc
bicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIp
O1xuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTtcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCiAKLSAgICBpZiBzeW5jX21lc3Nh
Z2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRS
SUJVVEUpOgorICAgIGlmIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJV
VEUpIGFuZCAoc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJ
U1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSk6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJykK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN5bmMlc01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpXG4nICUgKHJlY2VpdmVyLm5h
bWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlW
RVJfQVRUUklCVVRFKSBlbHNlICcnKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xuJykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3Qu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDQ4ZDhlMWI2MjdjYzMxYjE4ZmExYzUwZmFiZWVlZDk3MWJkMTViZTkuLmU4OWUxN2UxNDA3
YjViNTY2YmMxOTJjNDBhOTlhMjhkOGJmOGRjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQpAQCAtNDYsNiArNDYsOCBAQCBfdGVz
dF9yZWNlaXZlcl9uYW1lcyA9IFsKICAgICAnVGVzdFdpdGhJZk1lc3NhZ2UnLAogICAgICdUZXN0
V2l0aFNlbWFwaG9yZScsCiAgICAgJ1Rlc3RXaXRoSW1hZ2VEYXRhJywKKyAgICAnVGVzdFdpdGhT
dHJlYW0nLAorICAgICdUZXN0V2l0aFN0cmVhbUJ1ZmZlcicKIF0KIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tb2RlbC5weQppbmRleCA0ODAwZmE0ZWZjYTk2NzhhODlhZmM3ZTQzNGYyNmIz
NDZjZThjZjZjLi41MDdlMDQyYTU3N2ZmOGEwMjMzNzJjM2E2MDdhYjEwOGE1ZmE5Njc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKQEAgLTI4LDYgKzI4LDggQEAgQlVJTFRJ
Tl9BVFRSSUJVVEUgPSAiQnVpbHRpbiIKIEFTWU5DX0FUVFJJQlVURSA9ICJBc3luYyIKIE1BSU5U
SFJFQURDQUxMQkFDS19BVFRSSUJVVEUgPSAiTWFpblRocmVhZENhbGxiYWNrIgogU1lOQ0hST05P
VVNfQVRUUklCVVRFID0gJ1N5bmNocm9ub3VzJworU1RSRUFNX0FUVFJJQlVURSA9ICJTdHJlYW0i
CitXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24nCiAKIGNsYXNz
IE1lc3NhZ2VSZWNlaXZlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBz
dXBlcmNsYXNzLCBhdHRyaWJ1dGVzLCBtZXNzYWdlcywgY29uZGl0aW9uKToKQEAgLTczLDcgKzc1
LDkgQEAgaXBjX3JlY2VpdmVyID0gTWVzc2FnZVJlY2VpdmVyKG5hbWU9IklQQyIsIHN1cGVyY2xh
c3M9Tm9uZSwgYXR0cmlidXRlcz1bQlVJTFRJTl8KICAgICBNZXNzYWdlKCdXcmFwcGVkQXN5bmNN
ZXNzYWdlRm9yVGVzdGluZycsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEUs
IFNZTkNIUk9OT1VTX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdT
eW5jTWVzc2FnZVJlcGx5JywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0s
IGNvbmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdJbml0aWFsaXplQ29ubmVjdGlvbicsIFtd
LCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249IlBMQVRGT1JN
KENPQ09BKSIpLAotICAgIE1lc3NhZ2UoJ0xlZ2FjeVNlc3Npb25TdGF0ZScsIFtdLCBbXSwgYXR0
cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSkKKyAgICBNZXNzYWdl
KCdMZWdhY3lTZXNzaW9uU3RhdGUnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklC
VVRFXSwgY29uZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2UoJ1NldFN0cmVhbURlc3RpbmF0aW9u
SUQnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5v
bmUpLAorICAgIE1lc3NhZ2UoJ1Byb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UnLCBbXSwgW10sIGF0
dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpCiBdLCBjb25kaXRp
b249Tm9uZSkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL01ha2VmaWxlIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmls
ZQppbmRleCAyMWIzMGFlMjBmYTEwMzNmYTY2NGUwM2FkYmQ4ODA4NmE2YzcyYzQyLi5lMTk3YmQz
YzI2N2FlNDExYTQ1MDBkMGZmNjkzOTg2MDNhNDUwODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKQEAgLTYsNiArNiw4IEBAIFRFU1RTID0gXAogICAg
IFRlc3RXaXRoSWZNZXNzYWdlIFwKICAgICBUZXN0V2l0aFNlbWFwaG9yZSBcCiAgICAgVGVzdFdp
dGhJbWFnZURhdGEgXAorCVRlc3RXaXRoU3RyZWFtIFwKKwlUZXN0V2l0aFN0cmVhbUJ1ZmZlciBc
CiAjCiAKIGFsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvTWVzc2FnZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWVzc2FnZU5hbWVzLmNwcAppbmRleCA3ZDVhZmM5MThlNWIwNWI4ZjdhNWNkNjIzODUyYjVjMGUw
YzE4YTAzLi4yZTdjYTE1ZTc0ZWJiZGE4NmM3OWY4ZmMwYjhmMzhiNGI1Zjc1ODk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3Bw
CkBAIC0xMzQsNiArMTM0LDEwIEBAIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1lc3NhZ2VOYW1l
IG5hbWUpCiAgICAgICAgIHJldHVybiAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iOwogICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZToKICAgICAgICAgcmV0dXJuICJMZWdhY3lT
ZXNzaW9uU3RhdGUiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1l
c3NhZ2U6CisgICAgICAgIHJldHVybiAiUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSI7CisgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRDoKKyAgICAgICAgcmV0dXJu
ICJTZXRTdHJlYW1EZXN0aW5hdGlvbklEIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVz
c2FnZVJlcGx5OgogICAgICAgICByZXR1cm4gIlN5bmNNZXNzYWdlUmVwbHkiOwogICAgIGNhc2Ug
TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CkBA
IC0yMjQsNiArMjI4LDggQEAgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNzYWdlTmFtZSBt
ZXNzYWdlTmFtZSkKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVzdFdpdGhvdXRBdHRy
aWJ1dGVzOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0aW9uOgogICAg
IGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZToKKyAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlNl
dFN0cmVhbURlc3RpbmF0aW9uSUQ6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VS
ZXBseToKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SVBDOwogICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk6CkBAIC00MDEs
NiArNDA3LDEwIEBAIGJvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VO
YW1lKQogI2VuZGlmCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6Okxl
Z2FjeVNlc3Npb25TdGF0ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VO
YW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1l
OjpTZXRTdHJlYW1EZXN0aW5hdGlvbklEKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAo
bWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmluZGV4IGVmZWEyMzAy
ZDY4N2JlNGY1MjI2OTBmNzhhM2M2NGY2MzZlMzFmZDguLmEyMmJkMWNmZDdmNzNiZTllYWIxY2Ji
YzBmZjBjNmVmMDZhMDY0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9NZXNzYWdlTmFtZXMuaApAQCAtOTMsNiArOTMsOCBAQCBlbnVtIGNsYXNzIE1lc3Nh
Z2VOYW1lIDogdWludDE2X3QgewogICAgICwgVGVzdFdpdGhvdXRBdHRyaWJ1dGVzX1RvdWNoRXZl
bnQKICAgICAsIEluaXRpYWxpemVDb25uZWN0aW9uCiAgICAgLCBMZWdhY3lTZXNzaW9uU3RhdGUK
KyAgICAsIFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UKKyAgICAsIFNldFN0cmVhbURlc3RpbmF0
aW9uSUQKICAgICAsIFN5bmNNZXNzYWdlUmVwbHkKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19U
ZXN0QXN5bmNNZXNzYWdlUmVwbHkKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNN
ZXNzYWdlV2l0aENvbm5lY3Rpb25SZXBseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmQwZjUyOGM2OWNkZWZkZGE5YzQ4Njc5MTM4YzYzOGI4YWMwY2IzMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJl
YW0ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjIFRlc3RzIFN0cmVhbSByZWNlaXZlciBhdHRyaWJ1dGUuCittZXNz
YWdlcyAtPiBUZXN0V2l0aFN0cmVhbSBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CisgICAgdm9pZCBT
ZW5kU3RyaW5nKFN0cmluZyB1cmwpCisgICAgdm9pZCBTZW5kU3RyaW5nU3luY2hyb25pemVkKFN0
cmluZyB1cmwpIC0+IChpbnQ2NF90IHJldHVybikKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExNzBhYzg5YTI1ZjAzOTIxOWZlNDE4MTA1YjJjMWQw
NGFlMGM3ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjYgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUZXN0cyBTdHJlYW0g
cmVjZWl2ZXIgYXR0cmlidXRlLgorbWVzc2FnZXMgLT4gVGVzdFdpdGhTdHJlYW1CdWZmZXIgIHsK
KyAgICB2b2lkIFNlbmRTdHJlYW1CdWZmZXIoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0
cmVhbSkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzljOTI0MGE0ZWIxYWI1NTc0MDk2MDIyOTFkYzEyNzMxOTg3ZjA1NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhT
dHJlYW1CdWZmZXIuaCIKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJIYW5kbGVN
ZXNzYWdlLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUg
IlRlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3ZvaWQgVGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjpu
YW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0
cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcj4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3Ry
ZWFtQnVmZmVyOjpzZW5kU3RyZWFtQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJl
YW1CdWZmZXJNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEyNGViZGQyMDBmMzM5
MDQ3N2RmYWY3Y2Q4NTcxOTFiZDUzYjI4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oCkBA
IC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNS
ZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyOworfQorCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRo
U3RyZWFtQnVmZmVyIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRlc3RXaXRo
U3RyZWFtQnVmZmVyOworfQorCitjbGFzcyBTZW5kU3RyZWFtQnVmZmVyIHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6U3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJu
IElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJlYW1CdWZmZXI7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0
IFNlbmRTdHJlYW1CdWZmZXIoY29uc3QgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBzdHJl
YW0pCisgICAgICAgIDogbV9hcmd1bWVudHMoc3RyZWFtKQorICAgIHsKKyAgICB9CisKKyAgICBj
b25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyCit9IC8vIG5hbWVz
cGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGll
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg3ZmEyYWQ3ZDUwNjMwMGYzY2NiMzkwZjE5NzI1OWQ5MGU2OTNmMzMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
ICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgi
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFt
ZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyIHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0
aFN0cmVhbUJ1ZmZlcgorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVh
bU1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM5ODg1NWFkNTZlOTUxOTk3YzlkMmFi
M2Y4ODgwOTRjODg5MjMyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGVzdFdpdGhTdHJlYW0uaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJU
ZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZl
U3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUoKSkgeworICAg
ICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3Ry
aW5nPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmcpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpuYW1lKCkpIHsKKyAg
ICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0
cmluZ1N5bmNocm9uaXplZD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtOjpzZW5kU3Ry
aW5nU3luY2hyb25pemVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVTRURfUEFS
QU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5o
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3Nh
Z2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTBiZmViYWIyMzcyYzFmNjYwNWM1NTg5NDU5MzhiZjFlNGU3YWFm
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRl
c3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RX
aXRoU3RyZWFtIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRlc3RXaXRoU3Ry
ZWFtOworfQorCitjbGFzcyBTZW5kU3RyaW5nIHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVu
dHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2Fn
ZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1Nl
bmRTdHJpbmc7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAg
IGV4cGxpY2l0IFNlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1
bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitw
cml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNzIFNlbmRTdHJp
bmdTeW5jaHJvbml6ZWQgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVw
bGU8Y29uc3QgU3RyaW5nJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkg
eyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZ1N5bmNo
cm9uaXplZDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7CisKKyAgICB1
c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8aW50NjRfdCY+OworICAgIHVzaW5nIFJlcGx5QXJndW1l
bnRzID0gc3RkOjp0dXBsZTxpbnQ2NF90PjsKKyAgICBleHBsaWNpdCBTZW5kU3RyaW5nU3luY2hy
b25pemVkKGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAg
ICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBB
cmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVh
bQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxp
ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMmM1YTA3OGRlMDFlYzE0MzBmODk0ZjIwY2I5YzJmOTE1NWU3Y2Fi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFj
ZSBUZXN0V2l0aFN0cmVhbSB7CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0KK30g
Ly8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBmOWJhNWRjNzgyNGIxZTViMDNl
NTNmOThiN2E3ZjhlNGRlZjIxYzY0Li40NTg5MjZmMjViZDZkNTE2MmE3NTljZTBjNzNmOGVhMWVi
MTdkNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE1MCw2ICsxNTAsMTAgQEAgUGxhdGZvcm0vSVBDL01l
c3NhZ2VSZWNlaXZlck1hcC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgQG5vLXVu
aWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgQG5vLXVuaWZ5
CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CitQbGF0
Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMv
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU3RyaW5n
UmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkKIAogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggYzMzMDc4MjViMjAwODZkZWQ0Yzg2YzY0ODhjZTVk
ZDU3ZWMwYzM1OC4uODk1MjA4YzNiYzIyNmQ2ZmIxMjg2MWRhNDM3Y2RhMzgxZjQ4ZDYzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkSUQuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCAzMDFkMGVkODMwZGJlZDkwOGNiYjI3ODg2ZjA0YThm
ZWVhOWZkODllLi4yM2FiMTBkNjNhNGY0YTNmZDIwY2VkNGQ3MzAxNzNmNDc1ZGM3ZjVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVk
ZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCisj
aW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYw
NjFhNjM3ZGI5M2JiMGFmYzZkOWM2NTE2YzNkMDNlMjM1YjVjYzEuLmYwMDZlNTFhYjIzODMwODQ0
MmUxNjQwZmY3ZThjNjU2NGU3M2Y0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMyOCw2ICsxMzI4LDE2IEBACiAJCTdCNDgzRjIw
MjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYg
LyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OwogCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0
ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi87IH07CiAJCTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAv
KiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZl
UXVldWVzLmggKi87IH07CisJCTdCNzMxMjNBMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5o
ICovOyB9OworCQk3QjczMTIzQjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5j
cHAgKi87IH07CisJCTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjczMTIzMzI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9
OworCQk3QjczMTIzRDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIz
NDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi87IH07CisJ
CTdCNzMxMjNFMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNTI1
Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oICovOyB9OworCQk3
QjczMTIzRjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNjI1Q0M4
NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi87IH07CisJCTdCNzMx
MjQwMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM3MjVDQzg1MjQw
MDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJN0I3MzEyNDEy
NUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5
NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CisJCTdCNzMxMjQyMjVDQzg1MjUw
MDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0
cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi87IH07CisJCTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3
OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkFCMTEwRjI1REQwMkIyMDA4RkM0NzkgLyog
U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OwogCQk3QzA2NUYyQzFDOENE
OTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVG
MDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJ
CTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNB
MDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBB
UElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpA
QCAtNDU0MCw2ICs0NTUwLDE1IEBACiAJCTdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNz
YWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8q
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEy
MzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I3MzEyMzMyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNDI1Q0M4NTI0MDAz
QjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzUyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qjcz
MTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzcyNUNDODUyNDAwM0IyNzk2
IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzkyNUNDODUy
NTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2NjI1
NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTQ3LDYgKzQ1
NjYsNyBAQAogCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNkQyNTUw
MTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVk
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJh
dGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQUIxMTBGMjVERDAyQjIwMDhG
QzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRl
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcyNjY4MjU3NjgwRUYwMEU4
NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02OTg1LDEwICs3MDA1LDIwIEBACiAJCQkJMUEzRUVEMEQxNjFBNTM1MzAw
QUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5oICovLAogCQkJCTFBQUIwMzc3MTg1QTdDNkEw
MEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmNwcCAqLywKIAkJCQkxQUFCMDM3ODE4NUE3QzZBMDBF
REY1MDEgLyogTWVzc2FnZVNlbmRlci5oICovLAorCQkJCTdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3
OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8sCiAJCQkJMkRDMTgwMDFE
OTBEREQxNUZDNjk5MUE5IC8qIFNoYXJlZEJ1ZmZlckNvcHkuY3BwICovLAogCQkJCTVDQzVEQjkx
MjE0ODhFMTYwMDZDQjhBOCAvKiBTaGFyZWRCdWZmZXJDb3B5LmggKi8sCiAJCQkJMkRDMTg1NUVE
QkZCODUwQkEwQjZEMDZEIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwICovLAogCQkJ
CTJEQzE4ODFBQ0JDQUI1RDU3QzVDNkVGMCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgg
Ki8sCisJCQkJN0I3MzEyMzYyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rp
b24uY3BwICovLAorCQkJCTdCNzMxMjMzMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRD
b25uZWN0aW9uLmggKi8sCisJCQkJN0I3MzEyMzQyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuY3BwICovLAorCQkJCTdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8sCisJCQkJN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi8sCisJCQkJN0I3MzEyMzIyNUNDODUyMzAw
M0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovLAorCQkJCTdCNzMxMjM1
MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggKi8sCisJCQkJ
N0I3MzEyMzcyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICov
LAorCQkJCTdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
LmggKi8sCiAJCQkJMUFFMDBENjkxODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5j
cHAgKi8sCiAJCQkJMUFFMDBENkExODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5o
ICovLAogCQkJKTsKQEAgLTEyMDE4LDYgKzEyMDQ4LDcgQEAKIAkJCQlCQzJEMDIxNzEyQUM0MUNC
MDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBQUI0QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxp
emF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JBQjExMTAyNUREMDJCMzAw
OEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0RDU0RDA0MjFGMUQ3MkQwMDdFM0MzNiAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlUmVtb3RlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5
MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5MzFDMUMxOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMTIwNjcsNiArMTIw
OTgsMTEgQEAKIAkJCQk5MzZCMDU5ODIzMDM5MDk3MDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJT
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNjhFRURGMjMwM0E5RUQwMEJEQjExQSAvKiBTdG9y
YWdlTWFuYWdlclNldE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjVGNEUwNjIzMEIy
RTk1MDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIzQTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyNDIyNUNDODUyNTAw
M0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
QjczMTIzRTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyNDEyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTAwRDZDMTgzMjdDMTIwMDA4N0RE
NyAvKiBTdHJpbmdSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5NkJEODVEMTUwMTlC
QzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQz
MTg2MjJCMzUxNkMwMDhEMEU4QiAvKiBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBp
biBIZWFkZXJzICovLApAQCAtMTM4OTQsNiArMTM5MzAsMTAgQEAKIAkJCQk5M0Q2Qjc4MjI1NEND
Q0Y0MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzMzRERUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VB
cmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNjhFRURFMjMw
M0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3QjczMTIzRjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIzRDI1Q0M4NTI1MDAzQjI3
OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3Qjcz
MTIzQjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3QjczMTI0MDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4MzIxMkI2QTcxMDBGNDkz
RkQgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUxMjEy
NkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTJEMTFCNzUyMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IGYy
OWJlMDA2ZWI3Yjk3NjRiNzgyZDkxNjI1YzgwMTYwZmY4ZjM2ZjMuLmIxOWJjMWUwYTAxOTA3Zjlj
ZWRkNjBhNTY1NzVmYWRmNWM5ZDg4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmNwcApAQCAtNDgsMTMgKzQ4LDE2IEBAIFJlZlB0cjxSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmli
dXRlcykpOwogfQogCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0U3RyZWFtU2l6ZSA9
IDEgPDwgMjE7CisKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9u
LCBjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJzKQogICAgIDogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCiAgICAgLCBtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uKCZncHVQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihn
cHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGRlZmF1bHRTdHJlYW1TaXplKQogewog
ICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7CiAgICAgZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKLSAgICBj
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3Jl
YXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkpOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIG1fc3RyZWFtQ29ubmVjdGlvbi5zdHJlYW1CdWZmZXIoKSksIDAs
IElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KTsKIH0KIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkoKQpAQCAtMTYzLDcgKzE2Niw3IEBAIEdDR0xlbnVtIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKCkKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZSht
X2Vycm9yV2hlbkNvbnRleHRJc0xvc3QsIE5PX0VSUk9SKTsKIH0KIAotdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYg
YXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3ZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQs
IElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25z
LCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE3Miw2ICsxNzUsNyBAQCB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcmJiBh
dmFpbGFibAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVCghbV9kaWRJbml0aWFs
aXplKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24uc2V0V2FrZVVwU2VtYXBob3JlKFdURk1vdmUo
c2VtYXBob3JlKSk7CiAgICAgbV9kaWRJbml0aWFsaXplID0gdHJ1ZTsKICAgICBpbml0aWFsaXpl
KGF2YWlsYWJsZUV4dGVuc2lvbnMsIHJlcXVlc3RlZEV4dGVuc2lvbnMpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCA4MzFiNGIwYWIxMzdlNmFhZjgzNTk2
ZTBiMGEwNzZkZjFlMDkxNzYxLi43ODk3ZjZjZmU4M2NlYzU1ZmZhMmY2M2E5NzRmYWE3ZjAxM2Fh
OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMjksMTAg
KzI5LDExIEBACiAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAiU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlCYXNlLmg+CkBAIC0zMzQsMTkgKzMzNSwxOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBz
ZW5kKFQmJiBtZXNzYWdlKQogICAgIHsKLSAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoV1RGTW92
ZShtZXNzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlv
bi5zZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAg
IFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRT
eW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGNvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3Zl
KHJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi5zZW5kU3lu
YyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIGRlZmF1bHRTZW5kVGltZW91dCk7CiAgICAgfQogICAgIElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNv
bm5lY3Rpb24oKTsgfQogCiBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVk
LgotICAgIHZvaWQgd2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2YWlsYWJs
ZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOworICAgIHZvaWQgd2Fz
Q3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlJiYsIFN0cmluZyYmIGF2YWls
YWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpOwogICAgIHZvaWQg
d2FzTG9zdCgpOwogICAgIHZvaWQgd2FzQ2hhbmdlZCgpOwogCkBAIC0zNjAsOCArMzYwLDggQEAg
cHJpdmF0ZToKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlv
bjsKICAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CiAgICAgR0NHTGVudW0gbV9l
cnJvcldoZW5Db250ZXh0SXNMb3N0ID0gTk9fRVJST1I7Ci0KICAgICBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgeyBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5l
Y3Rpb24gbV9zdHJlYW1Db25uZWN0aW9uOwogfTsKIAogLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRv
IGZvbGxvd2luZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRl
LWdwdXAtd2ViZ2wgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGE3YzY0MTJhYzk0NmUyNThjZTAxMzhiYzQ3YmMz
ODYyMTk1MDIxZDcuLmY0M2VjMGEyZWFhMzg0ZTRlZGU4ZGQ0NDBkOWVmZTAyOGFjYjdiZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMu
aW4KQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShX
RUJHTCkKIAogbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZD
b3VudGVkIHsKLSAgICB2b2lkIFdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcgYXZh
aWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lk
IFdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSBzdHJlYW1XYWtlVXBT
ZW1hcGhvcmUsIFN0cmluZyBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVF
eHRlbnNpb25zKQogICAgIHZvaWQgV2FzTG9zdCgpCiAgICAgdm9pZCBXYXNDaGFuZ2VkKCkKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCmluZGV4IDdhYWQ3ZGEy
MDcwZGU4M2QxNGM3MWRkOTgyNDc0YWFmMTA2YTdkYjUuLmYxMzQxZGNkMjc2ZDBjMTAxZTQ0YmRk
YTE3Y2U0MGI4YTNjYjM2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0
Y2hlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL0xpYldlYlJUQ05ldHdvcmsuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmgKaW5kZXggYmJlN2ZjMjZjZjMyMzQ2Njk1ZTYxZmQw
MWQ2YTBiMjMyZGUwZDE4OC4uYTYxMWRhYmY0ZWJiNTZlN2E0MjU5NGRkN2JkM2JiMGM4MWE1Yzgw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xp
YldlYlJUQ05ldHdvcmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDTmV0d29yay5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENTb2NrZXRG
YWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViTUROU1JlZ2lzdGVyLmgiCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2EzNDA4OGYwZGZlMThmZTdiMTE0
YWMxYjAzOGJkNzhiMjRjMDMwZC4uNDBiNWU4NzRlMTBhYzIwMjVlOWY1NTNkYWJlZjY0NTVlYzg5
NmRmNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTAyLTA1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nlc3MgSVBDIHNob3VsZCB1c2Ugc2hh
cmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1hcmsgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgbWVzc2FnZSByZWNlaXZlciBhcyAi
U3RyZWFtIiwKKyAgICAgICAgYSBuZXcgdmFyaWFudCBvZiByZWNlaXZlci4KKworICAgICAgICAq
IFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoKKwogMjAyMS0wMi0xNiAgQW5kcmVzIEdvbnph
bGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIG1ha2VKU0FycmF5IGlu
IGJvdGggQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy9JT1MubW0uCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdw
dXAtd2ViZ2wKaW5kZXggNTY4NWU5MDc1MzUzZmQxZDJjZWE5NDYyMDZiNTdlNDhiNDI2NjNmZC4u
ODM0NjI4MjM0MDFjMTY4MzA3MjJhZWIzNTQ1ZWNmZWVmYjY0YTg4MyAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJh
dGUtZ3B1cC13ZWJnbApAQCAtODksNyArODksNyBAQCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRl
ID0gKAogICAgIHRlbXBsYXRlX3ByZWFtYmxlCiAgICAgKyAiIiIjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMIE5vdFJlZkNvdW50ZWQge3sKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgs
IGludDMyX3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZv
ckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDA2ZTc0NzlhMmU2NTllM2E3ODMwNmQzMDRiZDIxOTNhMDIxZjY1MmUuLmFkYTVkYzg3
MjQ0M2M3N2FiYTRkMjM4MGNmNjI4ZTRhMDY3NWViMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMS0wMi0xNyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYkdMIEdQVSBwcm9jZXNzIElQQyBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIGFz
eW5jaHJvbm91cyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5NjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM0MDY1MT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIGZldyB0
ZXN0cyBhcyBub3QgdGltaW5nIG91dCBub3cgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm90
IHNvIHNsb3cuCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDIxLTAyLTE2ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtzZWxlY3RvcnNdIDpmb2N1cy12aXNpYmxlIHBhcnNpbmcgYW5kIGV4cGVyaW1lbnRh
bCBmbGFnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzYjkw
YzJhYmFjMWFmZTM1ZGY4NjRhNGFiYjkzYWJiMDAyOTBmYWE0Li5mM2FmOTNjNTk2YzdkM2EwMWRk
NzI5MWM5MDRiZDJkMDBlZjk4MGQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vz
cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTM0LDcgKzM0LDcgQEAgZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2UyRC1t
c2UtZmxpcFktdHJ1ZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFn
ZTJELXZpZGVvLWZsaXBZLWZhbHNlLmh0bWwgWyBUaW1lb3V0IF0KIGZhc3QvY2FudmFzL3dlYmds
L3RleEltYWdlMkQtdmlkZW8tZmxpcFktdHJ1ZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2NhbnZh
cy93ZWJnbC90ZXh0dXJlLWFjdGl2ZS1iaW5kLmh0bWwgWyBGYWlsdXJlIF0KLWZhc3QvY2FudmFz
L3dlYmdsL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgVGltZW91dCBdCitmYXN0L2NhbnZh
cy93ZWJnbC91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFNsb3cgXQogZmFzdC9jYW52YXMv
d2ViZ2wvd2ViZ2xjb250ZXh0Y2hhbmdlZGV2ZW50Lmh0bWwgWyBUaW1lb3V0IF0KIAogZmFzdC9k
b20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTIzMCw3
ICsyMzAsNiBAQCB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJl
LWZsb2F0LXdpdGgtY2FudmFzLmh0bWwgWyBGYWlsdXJlCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1cmUg
XQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZs
b2F0LXdpdGgtY2FudmFzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWls
dXJlIF0KLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tYW55LWRyYXctY2FsbHMu
aHRtbCBbIFRpbWVvdXQgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtb2JqZWN0
LWdldC1jYWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0
dXJlcy9nbC1waXhlbHN0b3JlaS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3Jt
YW5jZS90ZXh0dXJlcy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1yZ2I1
NjUuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMjQ5LDcgKzI0OCw3IEBAIHdlYmdsLzEuMC4zL2NvbmZv
cm1hbmNlL3RleHR1cmVzL3RleC1pbWFnZS13ZWJnbC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8x
LjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXhwYXJhbWV0ZXItdGVzdC5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLWFjdGl2ZS1iaW5k
LTIuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4
dHVyZS1hY3RpdmUtYmluZC5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5j
ZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFRpbWVvdXQgXQord2ViZ2wv
MS4wLjMvY29uZm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBT
bG93IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2NhbnZhcy9jYW52YXMtdGVzdC5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9jYW52YXMvZHJhdy1zdGF0aWMtd2Vi
Z2wtdG8tbXVsdGlwbGUtY2FudmFzLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAv
Y29uZm9ybWFuY2UvY2FudmFzL2RyYXctd2ViZ2wtdG8tY2FudmFzLXRlc3QuaHRtbCBbIEZhaWx1
cmUgXQpAQCAtMjYxLDcgKzI2MCw2IEBAIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2V4dGVuc2lv
bnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8y
LjAuMC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0aC1j
YW52YXMuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvZXh0ZW5zaW9u
cy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1cmUgXQogd2Vi
Z2wvMi4wLjAvY29uZm9ybWFuY2UvcmVhZGluZy9yZWFkLXBpeGVscy10ZXN0Lmh0bWwgWyBGYWls
dXJlIF0KLXdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tYW55LWRyYXctY2FsbHMu
aHRtbCBbIFRpbWVvdXQgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtb2JqZWN0
LWdldC1jYWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0
dXJlcy9jYW52YXMvdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfYnl0ZS5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXJnYi1yZ2It
dW5zaWduZWRfc2hvcnRfNV82XzUuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMjg3LDcgKzI4NSw3IEBA
IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdi
LXJnYi11bnNpZ25lZF9zaG9ydF81XzZfCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJl
cy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgWyBGYWls
dXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgt
MmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzRfNF80XzQuaHRtbCBbIEZhaWx1cmUgXQogd2Vi
Z2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhLXJn
YmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8yLjAuMC9j
b25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFRpbWVvdXQg
XQord2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0
Lmh0bWwgWyBTbG93IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9yZWFkaW5nL3JlYWQtcGl4
ZWxzLXBhY2stcGFyYW1ldGVycy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3Jt
YW5jZTIvc3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8y
LjAuMC9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yMTFmX2cxMWZfYjEwZi1y
Z2ItZmxvYXQuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420824</attachid>
            <date>2021-02-18 06:00:12 -0800</date>
            <delta_ts>2021-02-19 01:40:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210218160009.patch</filename>
            <type>text/plain</type>
            <size>164697</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMxNzMxMWZjZmI1MjYyMTlh
Y2Y4YTYxMzZlMTAzYzlmMTAzNDlkOTUuLmQ5ZjY4OWIxYTMxMWFhMzA3NWI5MWI2YmViNjQyYTJh
NmRmZTBiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2Vz
IGFuZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJl
Y2VpdmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNl
aXZlZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAg
cHJvY2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVu
dGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hy
b25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQg
dGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhh
dmluZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAg
IGluIHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0
IGluIGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBv
bmUgMm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJl
IHdpbGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24K
KyAgICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFy
IHRocmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJv
cHRpbWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAg
cHJvY2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2Ug
dG8gaGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGlj
aXBhdGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8g
c2FtZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1p
emF0aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFz
IHBhcnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAg
IEluIEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sg
cXVldWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQg
d2lsbCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24g
cGVyIGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAg
ICBTZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRp
b24gd2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYg
dGhlIG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUg
aXQgdGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91
dCBvZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9u
IGFycml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAg
ICBtZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2ls
bCBzdG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxs
IGNvbnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4g
cHJvY2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0
cmVhbSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1l
c3NhZ2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMg
c2VuZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0g
Y29ubmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9y
ZS4gVGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlz
IHdhaXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6
CisgICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAg
cG9pbnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAg
IC0gV2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2gg
fjYwZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVl
VW5pbml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4g
dGhlIHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0
aW9ucyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1
ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpzZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVl
dWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBtdWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0
aGUgSVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmls
aXR5IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xp
ZW50LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6
CisgICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNv
bnN0cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZm
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAo
SVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNw
ZWNpZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFy
ZSB1bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRo
cm91Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAg
ICAgVGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBp
cyByZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2Fz
ZSB3aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRo
ZSBzdHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAg
ICAgICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2Fr
ZXVwIHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNl
bWFwaG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24u
IEFsbCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2
ZSB0aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhl
eSBoYXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVz
dGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rp
b246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dCBjb25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0
YSB0aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVN
ZW1vcnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAo
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0
aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZl
ci4KKyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90
aCB0aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4K
KyAgICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1
cCwgdGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFs
bCB0aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAi
aG9sZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBv
ZiAiYnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAg
ICAgIGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBj
b250YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAg
ICAgRm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBw
cm9jZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUg
b2YgdGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwg
c2xlZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3
aWxsIHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdp
bGwgd2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9m
ZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXpl
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
cyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9j
ZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1l
c3NhZ2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUg
bWVzc2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRo
ZSBidWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRo
YXQgdGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1h
bCBJUEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3Nh
Z2UgdW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdT
dHJlYW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFz
CisgICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxs
IG1lc3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1l
c3NhZ2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAg
ICAgIGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUg
c3RyZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJ
UEMgbWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNz
ZWQuCisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0
aW9uSUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJl
YW0gbWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAg
ICAgIHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJl
YW1EZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVk
LgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZm
ZXI6OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5
bmNocm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToK
KyAgICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0
IG9mIHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6
On5TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZSk6CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVs
ZCBzaW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0x
NyAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dHVybiBjb3JyZWN0IHRhcmdldCBmb3IgQXBwIEhpZ2hsaWdodCBtZW51cy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCBkNTc3ZTQzNDk5ZjE4MTQ3OTFjOGEwZWY3MWNiMzRhMDI0YTFmYWUyLi5kYjc3MjM4MTQ0
Y2E4YTMwZmY2ZWFjOWY4MmY1YzQ5ZGNkMjFiMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMTUsNyAr
MzE1LDcgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmltYWdlRGVjb2RlckFWRlByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQog
ewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3Vy
ZShpZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRXcmFwcGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRo
aXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7Cisg
ICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVz
dW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zMjYsMjEgKzMyNiwxMSBA
QCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5k
KFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5k
KTsKIH0KIAotR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFdyYXBwZXI6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kPiYmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQoV1RGTW92ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLT5kaXNjb25uZWN0KCk7Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXImJiBzdHJlYW0pCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAg
ICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywg
KnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VE
KGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWJiMGQw
MDhmM2Q3MTI5MjE3YjhlOTZlZmExOWJkNTFmZmFmYTE2Ny4uZDAyZTk3ODc3NTdjZDZmYzQ1YTlm
OTg5NmU1YjExODdmOTViN2JlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiUmVtb3RlQXVkaW9TZXNzaW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90
ZUNvbW1hbmRMaXN0ZW5lcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUu
aCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTm93UGxheWluZ01hbmFnZXIuaD4KQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIpOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250
ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZUdy
YXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApA
QCAtMjA2LDIwICsyMDcsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNh
cHR1cmUgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlciB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1Ymxp
YzoKLSAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ+JiYpOwotICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIo
KTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKKyAgICB1c2luZyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciwgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1hcDsKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMPj47CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGlj
c0NvbnRleHRHTE1hcDsKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDMwZjVjMjk4ODYyMTRmOTEwNGYxYWZhMDgzNWIy
MzhhMzZkYzZlZjEuLmY2MzBiMWJhZmUwZDJjMmVjNDAwMzdkOWE3YTdjNzIzZDI1OTk5YzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZv
aWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyIGlkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VC
R0wpCi0gICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIENy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIg
c3RyZWFtKQogICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNlbmRp
ZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNw
cAppbmRleCA3OWIzNDU5NmZiZjJkMGRmYzk4MTg2NTFiZGNmZWI0YjBhMGM4NzVkLi4xZDJmZWU3
ZmUxNTE3ZGY3MTAwNzg5N2EwNTc1M2EwZGFmYzMwYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5jcHAKQEAgLTMxLDU1ICszMSw3OSBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
Ci0KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBvbmUg
Z2xvYmFsIFdlYkdMIHByb2Nlc3NpbmcgaW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlJiByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZT4gaW5zdGFuY2UoIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsKKyAg
ICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKQorUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYo
Km5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3Rh
bmNlLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5j
ZTsKIH0KICNlbmRpZgogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRl
eHQoV1RGTW92ZShjb250ZXh0KSkKLSAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyht
YWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKK1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIm
JiBzdHJlYW0pCisgICAgOiBtX3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgp
KQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2
NCgpLCAqdGhpcyk7Ci0gICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwotICAgIFN0cmlu
ZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVY
VEVOU0lPTlMpOwotICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQt
PmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0
ZWQodHJ1ZSwgZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAK
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQogewot
ICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5t
ZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVCghbV9zdHJlYW1Db25uZWN0
aW9uKTsKKyAgICBBU1NFUlQoIW1fY29udGV4dCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmli
dXRlcykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goW2F0dHJpYnV0ZXMgPSBXVEZN
b3ZlKGF0dHJpYnV0ZXMpLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJs
ZSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtRdWV1ZUluaXRpYWxpemUoV1RGTW92ZShh
dHRyaWJ1dGVzKSk7CisgICAgfSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2Vp
dmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50
NjQoKSk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKQogewotICAgIHJldHVybiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuZ2V0KCk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAg
ICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVm
RnJvbUNvbm5lY3Rpb24pXSgpIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlVW5p
bml0aWFsaXplKCk7CisgICAgfSk7CiB9CiAKLUlQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKLSAgICBpZiAoYXV0byogZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkK
LSAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdU
Rk1vdmUoYXR0cmlidXRlcykpOworICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250
ZXh0LT5hZGRDbGllbnQoKnRoaXMpOworICAgICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29u
dGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICAgICAg
U3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVu
c2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSwg
ZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSk7CisgICAgfSBlbHNlCisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQo
ZmFsc2UsIElQQzo6U2VtYXBob3JlIHsgfSwgIiIsICIiKSk7CiB9CiAKLXVpbnQ2NF90IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVVbmluaXRpYWxpemUoKQogewot
ICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworICAg
IG1fY29udGV4dCA9IG51bGxwdHI7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKQEAgLTg4
LDcgKzExMiw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgp
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3Qo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKQEAgLTk4LDcgKzEyMiw3IEBAIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2Fz
Q2hhbmdlZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMDAxNTlhYzhiNTg2YThiNjJh
M2RkYTNhNTcwMDRlODgzZTE1NmQwOC4uNTJlNDc2OTEwYTRlYWQwMDM5Y2UwYzFhYTU1ZTRmNDQ2
YTA0OTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLQorI2luY2x1ZGUgIlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CkBAIC00OSwzMSArNDgsMjEgQEAgY2xhc3MgTWFjaFNlbmRSaWdo
dDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7Ci0KIC8vIEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZl
cyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyBy
ZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdl
cy4KIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5n
IFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KLWNsYXNzIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMCi0gICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRl
IElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpDbGllbnQgeworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+LCBwcml2YXRlIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0woKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMo
UmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKIAotICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBj
b25zdDsKKyAgICAvLyBJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w+IHRlbXBsYXRlIGNvbnRyYWN0IGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgZGlk
UmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQ
Qzo6RGVjb2RlciYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIg
b3ZlcnJpZGVzLgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdCBmaW5hbDsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0IGZpbmFsOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgot
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsK
KyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIm
Jik7CisgICAgdm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmKTsKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgog
ICAgIHZvaWQgZGlkQ29tcG9zaXRlKCkgZmluYWw7CkBAIC05NSw4ICs4NCwxNCBAQCBwcm90ZWN0
ZWQ6CiAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oIiAvLyBOT0xJTlQKIAotICAgIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TD4gbV9jb250ZXh0OwotICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIHZvaWQgd29ya1F1ZXVlSW5pdGlhbGl6ZShX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmJikgeyB9OworICAgIHZvaWQgd29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2UpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNz
YWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOyB9CisKKyAgICBSZWZQdHI8SVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj4gbV9zdHJl
YW1Db25uZWN0aW9uOworICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TD4gbV9jb250ZXh0OwogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbgppbmRleCA3YTE5MjVkYmIyN2FiZjNkMzAzNGNiN2ZjYjM4YTNmMzkzZTNkY2Zh
Li40NzAyYzY0Zjc1ZTQ3NmNmZjFhMTAwMDUwNzU1MDk2YmRjZTc4OTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAvLyBUaGlz
IGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0Lgog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2VzIC0+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFJlc2hh
cGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZm
ZXIpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXgg
OGUyZDFmYzY1MTg2MjgzOTVlOTc0MWM0NGU3YWM4NTFiMDhlZjYyNy4uYzRlNDExMjYxOTViMzUy
OThhZWFmMmZjYWVmMjBhZGZiNDMxZDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hLmNwcApAQCAtMzksMTAgKzM5LDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4g
ewogcHVibGljOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EoKSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUlu
aXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOwog
ICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1h
Y2hTZW5kUmlnaHQmJik+JiYpIGZpbmFsOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVzLgpAQCAtNTYsMTYgKzU3LDIzIEBAIHByaXZhdGU6CiAK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcikKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1
dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMQ29jb2EoYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSk7CisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0
UmVmKCpuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOwor
ICAgIGluc3RhbmNlLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVy
biBpbnN0YW5jZTsKIH0KIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykp
CitSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgV1RGTW92ZShzdHJlYW0pKQogewogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQoreworICAgIG1fY29udGV4dCA9
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKFdURk1vdmUoYXR0
cmlidXRlcyksIHRoaXMpOworfQorCiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bjo6QnVmZmVyIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQog
ewogICAgIHJldHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKaW5kZXggMmM3NjI1MTg2YWVlMTVkNzcyYjc2NGJkZDU1OWYwYTFjMjcwYmQ0MS4uNjIx
MmVhMDRlOWQ4ZThlMGMxODZlMTEyYTBiMzgwNzRjNWIxNDgwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcApAQCAtODMsNyArODMsNyBAQCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCgpCiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtyZW1vdGVSZXNv
dXJjZUNhY2hlID0gV1RGTW92ZShtX3JlbW90ZVJlc291cmNlQ2FjaGUpXSB7IH0pOwogfQogCi12
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpc2Nvbm5lY3QoKQordm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBiN2FlZTI2Mjc3MDViYjlh
Y2MxMDE5ZDcxNTVlZjI3ZTE1M2QyYjI4Li5hNGFhN2I0Nzg3NTVhOWJiNWUyOTNmZDFiYzgyOGNj
ZGZlMjQ5NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKTsKICAgICB2aXJ0dWFsIH5SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKCk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAK
ICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4g
bV9yZW1vdGVSZXNvdXJjZUNhY2hlOyB9CiAKQEAgLTc4LDggKzc5LDYgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbik7CiAKLSAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKLQogcHJpdmF0ZToKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgK
aW5kZXggYTkxZjliZTFmYjliNTk4MzRkMWE5MmY2MTFkY2I0NjZiYmJlNzFkZC4uNTJjYzVkYTEy
MWEyZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2NTVjMGNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNp
bmNsdWRlICJOZXR3b3JrTG9hZENsaWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAppbmRleCBiN2JjYTdj
NDg2OTU4MDIyOTRiZjk0YWVmMDc0MGNmNzBlM2Y2MmFmLi42MjNhNTJhNDVhNGZhODVkYzEyZDQ4
YTk1ZTU2ZWM2Zjk2MmQ5ZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApAQCAtMjgsNiArMjgsNyBAQAog
I2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIk5ldHdvcmtSVENNb25pdG9yLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29yay5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IDMyMDc2
YWZkMDJhODk4YTFlMzlkZTI4M2UxMDJiODU5NDdmOGVkYzcuLjUzMzUwZjlmN2M4YzEyYmU2Mjc1
OTk5YzdlYmZjM2M3ZTA5MWJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNp
bmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC03NSw2ICs3Niw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBUIHZhbHVlKQogICAgIHsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQp
LCBhbGlnbm9mKFQpKTsKQEAgLTkxLDYgKzkzLDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtX3Y8VD4+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2
YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPFQ+KFdURjo6ZW51
bVRvVW5kZXJseWluZ1R5cGU8VD4odmFsdWUpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVycy5jcHAKaW5kZXggYjBhNDNkZTlkN2ExMzcyMTZhMTliZjdkMGJk
NWUxOTExM2I1ZGE2OC4uYWVlODllNjI2OTZjNTYwZjBhMThiZmIxZDY3NjkxNjUwZTdmZjJhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAKICNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTExMSw3ICsxMTIsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVu
dENvZGVyPENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ1N0cmluZwogICAgIHJl
dHVybiB0cnVlOwogfQogCi0KK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogewogICAgIC8vIFNwZWNpYWwgY2FzZSB0aGUgbnVsbCBzdHJpbmcuCkBAIC0xMzAs
NiArMTMxLDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgZWxzZQogICAgICAgICBlbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
dHJpbmcuY2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBhbGlnbm9mKFVD
aGFyKSk7CiB9Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxF
bmNvZGVyPihFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVu
dENvZGVyPFN0cmluZz46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29u
bmVjdGlvbkVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5n
VGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCAyMGViMTdhMGZkODI2MGQ0MGJlYzdm
Y2RhYWVhMjNiYzVlODY1ZTA5Li5mODU2OTgwNzNkZDA0NWIyODE2ZTE2MTBjYTQ5OTZhNWQ0ZWU2
YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAg
LTU1LDYgKzU1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50
Q29kZXIgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJyYXlS
ZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50PjsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQogICAgIHsKICAgICAg
ICAgaWYgKCFFeHRlbnQpCkBAIC03NCw2ICs3NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVu
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJl
bmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4+IHsKICAgICB1c2luZyBBcnJheVJl
ZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRl
bnQ+OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZl
cmVuY2UpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihh
cnJheVJlZmVyZW5jZS5zaXplKCkpOwpAQCAtMjY2LDYgKzI2OCw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6cGFpcjxULCBVPj4g
ewogCiB0ZW1wbGF0ZTxzaXplX3QgaW5kZXgsIHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0
IFR1cGxlRW5jb2RlciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50
cy4uLj4mIHR1cGxlKQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxzaXplb2Yu
Li4oRWxlbWVudHMpIC0gaW5kZXg+KHR1cGxlKTsKQEAgLTI3NSw2ICsyNzgsNyBAQCBzdHJ1Y3Qg
VHVwbGVFbmNvZGVyIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+CiBzdHJ1Y3Qg
VHVwbGVFbmNvZGVyPDAsIEVsZW1lbnRzLi4uPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IHN0ZDo6dHVwbGU8
RWxlbWVudHMuLi4+JikKICAgICB7CiAgICAgfQpAQCAtMzM4LDYgKzM0Miw3IEBAIHN0cnVjdCBU
dXBsZURlY29kZXI8MD4gewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+IHN0
cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+PiB7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4mIHR1cGxlKQogICAgIHsKICAgICAg
ICAgVHVwbGVFbmNvZGVyPHNpemVvZi4uLihFbGVtZW50cyksIEVsZW1lbnRzLi4uPjo6ZW5jb2Rl
KGVuY29kZXIsIHR1cGxlKTsKQEAgLTM3NCw2ICszNzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6S2V5
VmFsdQogdGVtcGxhdGU8Ym9vbCBmaXhlZFNpemVFbGVtZW50cywgdHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eT4gc3RydWN0IFZlY3RvckFyZ3VtZW50Q29kZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qg
bWluQ2FwYWNpdHk+IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyPGZhbHNlLCBULCBpbmxpbmVD
YXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBh
Y2l0eT4mIHZlY3RvcikKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHZlY3Rvci5zaXplKCkpOwpAQCAtNDExLDYgKzQxNyw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBz
aXplX3QgbWluCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PiBzdHJ1Y3Qg
VmVjdG9yQXJndW1lbnRDb2Rlcjx0cnVlLCBULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mIHZlY3RvcikKICAgICB7
CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZlY3Rvci5zaXplKCkp
OwpAQCAtNzUzLDYgKzc2MCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Q1N0
cmluZz4gewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTdHJpbmc+IHsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShEZWNvZGVyJiwgU3RyaW5nJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFN0cmlu
Zz4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5jcHAKaW5kZXggOGI3NDMxNGFjMDRhNTVhNDhiZDA5MzYyOWMzNjIyMDcxZTBmMmM1MC4uMWQy
ZWE0ODVhOTk4YWUyNjQ0NmEzYWU2MDBlMDRmMzBjYThlMWQ1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENv
ZGVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVzLmgiCkBAIC05MzAsOCArOTMxLDEzIEBAIHZv
aWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogCiB2
b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VO
YW1lIG1lc3NhZ2VOYW1lKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KKyAg
ICBpZiAoIVJ1bkxvb3A6OmlzTWFpbigpKSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlTmFtZV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+aXNWYWxpZCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fY2xpZW50LmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShwcm90ZWN0ZWRUaGlzLCBtZXNzYWdlTmFtZSk7CisgICAg
ICAgIH0pOworICAgIH0KICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggNDg1NTIwMTI0N2MyNWRm
ODU1MmM1YTU0YTA0Njc3YjhkNzJiODJjYS4uZmU5Y2EzMTg2MDZmZGVkYzYxZDIxZDA3ZGYwZjhh
YjFiZmU5M2JkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAt
MzAsMTAgKzMwLDkgQEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVy
LmgiCi0jaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
UXVldWVNYXAuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlIDxhdG9t
aWM+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Nv
bmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CkBAIC0zMTIsNiArMzExLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGRpc3Bh
dGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShNZXNzYWdlUmVjZWl2ZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4mJik7CisgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisg
ICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSk7CiBw
cml2YXRlOgogICAgIENvbm5lY3Rpb24oSWRlbnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50
Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoSWRlbnRpZmllcik7CkBAIC0zMzksNyAr
MzQwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4pOwogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKERlY29kZXImKTsKICAgICB2
b2lkIGRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUpOwogICAgIHZvaWQgZGlkRmFpbFRvU2Vu
ZFN5bmNNZXNzYWdlKCk7CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IDgwYTBmNzVjNzA1NzJiZjRj
MjQ4NTI2ZmVkMmZlZmIwOTdjZGM4ZjkuLjRkZTA1MDk4YzQ2MzJhZDQ1ZjRlODUzZjY3ZTllZTNl
NzcxMzZkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC05MCw2
ICs5MCwxNyBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUsIENvbnN0cnVjdFdpdGhvdXRIZWFkZQogICAgICAgICBtYXJrSW52YWxpZCgp
OwogfQogCitEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0
cmVhbVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCisgICAgOiBtX2J1ZmZlciB7IHN0cmVh
bSB9CisgICAgLCBtX2J1ZmZlclBvcyB7IG1fYnVmZmVyIH0KKyAgICAsIG1fYnVmZmVyRW5kIHsg
bV9idWZmZXIgKyBzdHJlYW1TaXplIH0KKyAgICAsIG1fYnVmZmVyRGVhbGxvY2F0b3IoW10gKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfSkKKyAgICAsIG1fZGVzdGluYXRpb25JRChkZXN0aW5h
dGlvbklEKQoreworICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZU5hbWUpKQorICAgICAgICByZXR1
cm47Cit9CisKIERlY29kZXI6On5EZWNvZGVyKCkKIHsKICAgICBBU1NFUlQobV9idWZmZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IDY2OTg1YmMzODdkNzQzOTEzNzAx
YjExN2I5MTgwMGI5YTI3NzFhYjguLmIzYzZhYzhhMmQ1YWNiYTJjMjE1MjhkZmViMThjNjQxNWNl
ZGQyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAgLTUxLDYgKzUxLDcg
QEAgY2xhc3MgRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwg
dm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9y
PEF0dGFjaG1lbnQ+JiYpOwogICAgIGV4cGxpY2l0IERlY29kZXIoY29uc3QgdWludDhfdCogYnVm
ZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOworICAgIERlY29kZXIoY29u
c3QgdWludDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCk7CiAgICAgfkRlY29kZXIoKTsKIAogICAgIERlY29kZXIoY29uc3QgRGVjb2RlciYpID0g
ZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVz
c2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4
IGVhOGFkNDVjMDllYjY4MmUwZTg2MjNiOTM0ZDVlMGU5YzcwMjYyMmEuLjkyOTYzZTIxZTFkNzE3
ZjY0YTgyMTljNTI4OWJhZjA1M2YwOTk0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9IYW5kbGVNZXNzYWdlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbVNl
cnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTE2NCw2ICsxNjUsMjggQEAgdm9pZCBo
YW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgRGVjb2RlciYgZGUKICAgICBjYWxsTWVtYmVyRnVuY3Rpb24oY29ubmVjdGlvbiwgV1RG
TW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVu
Y3Rpb24pOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBN
Rj4KK3ZvaWQgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9u
KQoreworICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3luY1JlcXVlc3RJRCkgfHwgIXN5bmNSZXF1ZXN0SUQpIHsKKyAgICAgICAgZGVjb2Rl
ci5tYXJrSW52YWxpZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgT3B0aW9uYWw8
dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVu
dHM7CisgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAg
ICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW3N5bmNSZXF1
ZXN0SUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3Mp
IG11dGFibGUgeworICAgICAgICBjb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KHN5bmNSZXF1ZXN0
SUQsIGFyZ3MuLi4pOworICAgIH07CisgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFy
Z3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CiB2b2lk
IGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNv
ZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUzYTA1NmEwMjAxYzJhZDBlNzQ5MGVjN2Q3ZmViYmRkNzcxMDk3YjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBJUEMgewor
CisvLyBTY29wZWQgaG9sZGVyIGZvciBvYmplY3RzIHRoYXQgaGF2ZSBhY3RpdmUgbWVzc2FnZSBy
ZWNlaXZlIHF1ZXVlcy4gRW5mb3JjZXMgdGhhdAorLy8gb25jZSBob2xkZXIgc3RvcHMgaG9sZGlu
ZyB0aGUgb2JqZWN0LCB0aGUgbWVzc2FnZSBxdWV1ZSBzaG91bGQgYmUgcmVtb3ZlZC4KKy8vIFRo
ZSBjb252ZW50aW9uIGlzIHRvIGNhbGwgc3RvcExpc3RlbmluZ0ZvcklQQygpIGZvciB0aGUgb2Jq
ZWN0LgorLy8gT3B0aW9uYWxseSB0aGUgb2JqZWN0IGNhbiBvYnRhaW4gdGhlIG93bmluZyByZWZl
cmVuY2UgdGhhdCB3YXMgdXNlZCB0byBob2xkIHRoZSBvYmplY3QKKy8vIGluIG9yZGVyIHRvIGF0
dGVtcHQgdG8gYXZvaWQgbmVlZGxlc3MgZGVzdHJ1Y3Rpb24gb2YgdGhlIG9iamVjdCBpbiBob2xk
ZXIgdGhyZWFkLgorLy8gVGhpcyB1c2VmdWwgaW4gdGhlIGNhc2UgdGhlIHN0b3AgaW52b2tlcyBh
IGNsZWFudXAgdGFzayBpbiB0aGUgbWVzc2FnZSBoYW5kbGVyCisvLyB0aHJlYWQuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSG9sZGVyVHlwZSA9IFJlZlB0cjxUPj4KK2NsYXNzIFNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeworcHVibGljOgorICAgIFNjb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWUoKSA9IGRlZmF1bHQ7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFU+CisgICAgU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZShVJiYgb2JqZWN0KQorICAg
ICAgICA6IG1fb2JqZWN0KFdURk1vdmUob2JqZWN0KSkKKyAgICB7CisgICAgfQorICAgIFNjb3Bl
ZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZSYmIG90aGVyKQorICAgICAgICA6IG1fb2JqZWN0KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmpl
Y3QsIG51bGxwdHIpKQorICAgIHsKKyAgICB9CisgICAgU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZSYgb3BlcmF0b3I9KFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUmJiBvdGhl
cikKKyAgICB7CisgICAgICAgIGlmICh0aGlzICE9ICZvdGhlcikgeworICAgICAgICAgICAgcmVz
ZXQoKTsKKyAgICAgICAgICAgIG1fb2JqZWN0ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX29iamVj
dCwgbnVsbHB0cik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAg
ICB+U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSgpCisgICAgeworICAgICAgICByZXNl
dCgpOworICAgIH0KKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIGlmICghbV9vYmpl
Y3QpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRS
ZWxlYXNlKG1fb2JqZWN0KTsKKyAgICB9CisgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9v
YmplY3QuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICBz
dGF0aWMgYXV0byBzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZShVJiBvYmplY3QpIC0+IGRl
Y2x0eXBlKG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhvYmplY3QucmVsZWFzZU5vbk51bGwo
KSksIHZvaWQoKSkKKyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhv
YmplY3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
CisgICAgc3RhdGljIGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0
KSAtPiBkZWNsdHlwZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMoV1RGTW92ZShvYmplY3Qp
KSwgdm9pZCgpKQorICAgIHsKKyAgICAgICAgb2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKFdU
Rk1vdmUob2JqZWN0KSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgc3Rh
dGljIGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0KSAtPiBkZWNs
dHlwZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMoKSwgdm9pZCgpKQorICAgIHsKKyAgICAg
ICAgb2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKCk7CisgICAgICAgIG9iamVjdCA9IG51bGxw
dHI7CisgICAgfQorICAgIEhvbGRlclR5cGUgbV9vYmplY3Q7Cit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZShzdGQ6OnVuaXF1ZV9wdHI8
VD4mJikgLT4gU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxULCBzdGQ6OnVuaXF1ZV9w
dHI8VD4+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZShSZWY8VD4mJikgLT4gU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxULCBS
ZWZQdHI8VD4+OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0ZjVjZGYwMDhlNWE3ZjJkMmYx
MDJhMjM1YzNjMjI1MTczMzc2ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNsaWVudENv
bm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbUNsaWVudENvbm5lY3Rpb246
OlN0cmVhbUNsaWVudENvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IHNp
emUpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fYnVmZmVyKHNpemUp
Cit7CisgICAgLy8gUmVhZCBzdGFydHMgZnJvbSAwIHdpdGggbGltaXQgb2YgMCBhbmQgcmVhZGVy
IHNsZWVwaW5nLgorICAgIHNoYXJlZFNlbmRlck9mZnNldCgpLnN0b3JlKFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc3RkOjptZW1vcnlf
b3JkZXJfcmVsYXhlZCk7CisgICAgLy8gV3JpdGUgc3RhcnRzIGZyb20gMCB3aXRoIGEgbGltaXQg
b2YgdGhlIHdob2xlIGJ1ZmZlci4KKyAgICBzaGFyZWRSZWNlaXZlck9mZnNldCgpLnN0b3JlKDAs
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKK3sK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3dha2VVcFNlbWFwaG9yZSA9IFdURk1vdmUoc2Vt
YXBob3JlKTsKKyNlbmRpZgorICAgIHdha2VVcFJlY2VpdmVyKCk7Cit9CisKK3ZvaWQgU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIoKQoreworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIGlmIChtX3dha2VVcFNlbWFwaG9yZSkKKyAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUt
PnNpZ25hbCgpOworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2NmOWE2OGY4NjM1
ZjhhZDllOGZhYTJlMjY0NzE1YTg2ZTZhOTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMjQw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5j
bHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVk
ZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CituYW1lc3BhY2UgSVBDIHsKKworLy8gQSBtZXNzYWdlIHN0cmVhbSBpcyBh
IGhhbGYtZHVwbGV4IHR3by13YXkgc3RyZWFtIG9mIG1lc3NhZ2VzIHRvIGEgYmV0d2VlbiBhIHNl
bmRlciBhbmQgdGhlCisvLyBkZXN0aW5hdGlvbiByZWNlaXZlci4KKy8vCisvLyBTdHJlYW1DbGll
bnRDb25uZWN0aW9uIGNhbiBzZW5kIG1lc3NhZ2VzIGFuZCByZWNlaXZlIHN5bmNocm9ub3VzIHJl
cGxpZXMKKy8vIHRocm91Z2ggdGhpcyBtZXNzYWdlIHN0cmVhbSBvciB0aHJvdWdoIElQQzo6Q29u
bmVjdGlvbi4KKy8vCisvLyBUaGUgZGVzdGluYXRpb24gcmVjZWl2ZXIgd2lsbCByZWNlaXZlIG1l
c3NhZ2VzIGluIG9yZGVyIF9mb3IgdGhlIGRlc3RpbmF0aW9uIG1lc3NhZ2VzXy4KKy8vIFRoZSB3
aG9sZSBJUEM6OkNvbm5lY3Rpb24gbWVzc2FnZSBvcmRlciBpcyBub3QgcHJlc2VydmVkLgorCitj
bGFzcyBTdHJlYW1DbGllbnRDb25uZWN0aW9uIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTdHJlYW1DbGllbnRDb25uZWN0aW9uKTsKK3B1YmxpYzoKKyAgICBTdHJlYW1DbGllbnRD
b25uZWN0aW9uKENvbm5lY3Rpb24mLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisKKyAgICBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiBzdHJlYW1CdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAg
IHZvaWQgc2V0V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJ
ZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKKyAgICB1c2lu
ZyBTZW5kU3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMo
VCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIE9iamVjdElkZW50aWZpZXI8VT4gZGVz
dGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgU3Bh
biB7CisgICAgICAgIHVpbnQ4X3QqIGRhdGE7CisgICAgICAgIHNpemVfdCBzaXplOworICAgIH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VTaXplID0gU3RyZWFt
Q29ubmVjdGlvbkVuY29kZXI6Om1pbmltdW1NZXNzYWdlU2l6ZTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50ID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1l
c3NhZ2VBbGlnbm1lbnQ7CisgICAgYm9vbCB0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIE1vbm90b25pY1RpbWUgdGltZW91dCk7CisgICAgdm9pZCBz
ZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShTcGFuJiYpOworCisgICAgT3B0aW9uYWw8U3Bh
bj4gdHJ5QWNxdWlyZShNb25vdG9uaWNUaW1lIHRpbWVvdXQpOworICAgIGVudW0gY2xhc3MgV2Fr
ZVVwUmVjZWl2ZXIgOiBib29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcworICAgIH07Cisg
ICAgV2FrZVVwUmVjZWl2ZXIgcmVsZWFzZShzaXplX3Qgd3JpdGVTaXplKTsKKyAgICB2b2lkIHdh
a2VVcFJlY2VpdmVyKCk7CisKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsaW1pdCk7CisgICAgc2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0
KTsKKyAgICBzaXplX3QgY2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7
CisKKyAgICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci53cmFwT2Zmc2V0KG9mZnNldCk7IH0KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6
ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFs
aWdubWVudD4ob2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9CisgICAgQXRvbWljPHNpemVf
dD4mIHNoYXJlZFNlbmRlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9mZnNldCgp
OyB9CisgICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4g
bV9idWZmZXIucmVjZWl2ZXJPZmZzZXQoKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CisKKyAgICBDb25uZWN0aW9uJiBtX2Nvbm5l
Y3Rpb247CisgICAgdWludDY0X3QgbV9jdXJyZW50RGVzdGluYXRpb25JRCB7IDAgfTsKKworICAg
IHNpemVfdCBtX3NlbmRlck9mZnNldCB7IDAgfTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
IG1fYnVmZmVyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9wdGlvbmFsPFNlbWFwaG9yZT4g
bV93YWtlVXBTZW1hcGhvcmU7CisjZW5kaWYKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+Citib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2Us
IE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KQorewor
ICAgIHN0YXRpY19hc3NlcnQoIVQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKKyAgICBN
b25vdG9uaWNUaW1lIGFic29sdXRlVGltZW91dCA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGlt
ZW91dDsKKyAgICBpZiAoIXRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQoZGVzdGluYXRpb25J
RC50b1VJbnQ2NCgpLCBhYnNvbHV0ZVRpbWVvdXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGlmICghc3Bh
bikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHsKKyAgICAgICAgU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIgbWVzc2FnZUVuY29kZXIgeyBUOjpuYW1lKCksIHNwYW4tPmRhdGEsIHNwYW4tPnNp
emUgfTsKKyAgICAgICAgaWYgKG1lc3NhZ2VFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCkp
IHsKKyAgICAgICAgICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShtZXNzYWdlRW5jb2Rl
ci5zaXplKCkpOworICAgICAgICAgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpXYWtlVXBSZWNlaXZlcjo6WWVzKQorICAgICAgICAgICAgICAgIHdha2VVcFJl
Y2VpdmVyKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBzZW5kUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpzcGFuKSk7CisgICAgaWYg
KCFtX2Nvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklELCBJUEM6
OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5j
UmVzdWx0IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KFQ6OmlzU3luYywgIk1lc3Nh
Z2UgaXMgbm90IHN5bmMhIik7CisgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBN
b25vdG9uaWNUaW1lOjpub3coKSArIHRpbWVvdXQ7CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRp
b25JRElmTmVlZGVkKGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKGFic29sdXRl
VGltZW91dCk7CisgICAgaWYgKCFzcGFuKQorICAgICAgICByZXR1cm4geyB9OworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgc2VuZCB0aHJvdWdoIHN0cmVhbS4KKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHJlY2VpdmUgdGhyb3VnaCBzdHJlYW0uCisgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1l
c3NhZ2UoV1RGTW92ZSgqc3BhbikpOworICAgIGF1dG8gcmVzdWx0ID0gbV9jb25uZWN0aW9uLnNl
bmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRv
VUludDY0KCksIHRpbWVvdXQpOworICAgIEFTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK2lubGluZSBib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmREZXN0
aW5hdGlvbklESWZOZWVkZWQodWludDY0X3QgZGVzdGluYXRpb25JRCwgTW9ub3RvbmljVGltZSBh
YnNvbHV0ZVRpbWVvdXQpCit7CisgICAgaWYgKGRlc3RpbmF0aW9uSUQgPT0gbV9jdXJyZW50RGVz
dGluYXRpb25JRCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgYXV0byBzcGFuID0gdHJ5QWNx
dWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIGVuY29kZXIgeyBNZXNzYWdlTmFtZTo6
U2V0U3RyZWFtRGVzdGluYXRpb25JRCwgc3Bhbi0+ZGF0YSwgc3Bhbi0+c2l6ZSB9OworICAgIGlm
ICghKGVuY29kZXIgPDwgZGVzdGluYXRpb25JRCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IC8vIFNpemUgb2YgdGhlIG1pbmltdW0gYWxsb2NhdGlvbiBpcyBpbmNvcnJlY3QuIExp
a2VseSBhbiBhbGlnbm1lbnQgaXNzdWUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgYXV0byB3YWtldXBSZXN1bHQgPSByZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKKyAgICBpZiAo
d2FrZXVwUmVzdWx0ID09IFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVyOjpZ
ZXMpCisgICAgICAgIHdha2VVcFJlY2VpdmVyKCk7CisgICAgbV9jdXJyZW50RGVzdGluYXRpb25J
RCA9IGRlc3RpbmF0aW9uSUQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSB2b2lkIFN0
cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFNwYW4m
JiBzcGFuKQoreworICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIGVuY29kZXIgeyBNZXNzYWdl
TmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSwgc3Bhbi5kYXRhLCBzcGFuLnNpemUgfTsK
KyAgICAvLyBOb3Qgbm90aWZ5aW5nIG9uIHdha2UgdXAgc2luY2UgdGhlIG91dC1vZi1zdHJlYW0g
bWVzc2FnZSB3aWxsIGRvIHRoYXQuCisgICAgKHZvaWQpIHJlbGVhc2UoZW5jb2Rlci5zaXplKCkp
OworfQoraW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVh
bUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KQorewor
ICAgIGZvciAoOzspIHsKKyAgICAgICAgc2l6ZV90IHNlbmRlckxpbWl0ID0gY2xhbXBlZExpbWl0
KHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSk7
CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRl
ckxpbWl0KTsKKyAgICAgICAgaWYgKHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplKSB7
CisgICAgICAgICAgICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgICAgICAg
ICAgaWYgKG5vdyA+PSB0aW1lb3V0KQorICAgICAgICAgICAgICAgIGJyZWFrOworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgICAgICAgICAgc2l6ZV90IG9sZFNlbmRlckxpbWl0ID0gc2hhcmVkUmVj
ZWl2ZXJPZmZzZXQoKS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoc2VuZGVyTGltaXQsIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXI6OnJlY2VpdmVyT2Zmc2V0U2VuZGVySXNXYWl0aW5nVGFnLCBzdGQ6Om1l
bW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAgICAg
ICAgIGlmIChzZW5kZXJMaW1pdCA9PSBvbGRTZW5kZXJMaW1pdCkKKyAgICAgICAgICAgICAgICBt
X2J1ZmZlci5zZW5kZXJXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0IC0gbm93KTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHNlbmRlckxpbWl0ID0gY2xhbXBlZExp
bWl0KG9sZFNlbmRlckxpbWl0KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBhbGlnbmVkU3Bh
bihtX3NlbmRlck9mZnNldCwgc2VuZGVyTGltaXQpOworICAgICAgICAgICAgfQorI2Vsc2UKKyAg
ICAgICAgICAgIFRocmVhZDo6eWllbGQoKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGlm
IChyZXN1bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitpbmxpbmUgU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXIgU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6cmVsZWFzZShzaXplX3Qgc2l6ZSkKK3sKKyAgICBzaXplID0gc3RkOjptYXgoc2l6ZSwgbWlu
aW11bU1lc3NhZ2VTaXplKTsKKyAgICBzaXplX3QgZXhwZWN0ZWRSZWNlaXZlckxpbWl0ID0gbV9z
ZW5kZXJPZmZzZXQ7CisgICAgbV9zZW5kZXJPZmZzZXQgPSB3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0
KG1fc2VuZGVyT2Zmc2V0KSArIHNpemUpOworICAgIEFTU0VSVChtX3NlbmRlck9mZnNldCA8IGRh
dGFTaXplKCkpOworICAgIC8vIElmIHRoZSByZWNlaXZlciB3cm90ZSBvdmVyIHRoZSBzZW5kZXJP
ZmZzZXQgd2l0aCBzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHdlIGtub3cgaXQg
aXMgc2xlZXBpbmcuCisgICAgc2l6ZV90IHJlY2VpdmVyTGltaXQgPSBzaGFyZWRTZW5kZXJPZmZz
ZXQoKS5leGNoYW5nZShtX3NlbmRlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7
CisgICAgaWYgKHJlY2VpdmVyTGltaXQgIT0gZXhwZWN0ZWRSZWNlaXZlckxpbWl0KQorICAgICAg
ICByZXR1cm4gV2FrZVVwUmVjZWl2ZXI6OlllczsKKyAgICByZXR1cm4gV2FrZVVwUmVjZWl2ZXI6
Ok5vOworfQorCitpbmxpbmUgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3BhbiBTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjphbGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7
CisgICAgQVNTRVJUKG9mZnNldCA8IGRhdGFTaXplKCkpOworICAgIEFTU0VSVChsaW1pdCA8IGRh
dGFTaXplKCkpOworICAgIHNpemVfdCBhbGlnbmVkID0gYWxpZ25PZmZzZXQob2Zmc2V0KTsKKyAg
ICBzaXplX3QgcmVzdWx0U2l6ZSA9IDA7CisgICAgaWYgKG9mZnNldCA8IGxpbWl0KSB7CisgICAg
ICAgIGlmIChhbGlnbmVkID49IG9mZnNldCAmJiBhbGlnbmVkIDwgbGltaXQpCisgICAgICAgICAg
ICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0IHx8IGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAg
IHJlc3VsdFNpemUgPSBzaXplKGFsaWduZWQsIGxpbWl0KTsKKyAgICB9CisgICAgcmV0dXJuIHsg
ZGF0YSgpICsgYWxpZ25lZCwgcmVzdWx0U2l6ZSB9OworfQorCitpbmxpbmUgc2l6ZV90IFN0cmVh
bUNsaWVudENvbm5lY3Rpb246OnNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQorewor
ICAgIGlmICghbGltaXQpCisgICAgICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gMSAtIG9mZnNldDsK
KyAgICBpZiAobGltaXQgPD0gb2Zmc2V0KQorICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAtIG9m
ZnNldDsKKyAgICByZXR1cm4gbGltaXQgLSBvZmZzZXQgLSAxOworfQorCitpbmxpbmUgc2l6ZV90
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGlt
aXQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHVudHJ1c3RlZExpbWl0IDwgKGRhdGFTaXplKCkgLSAx
KSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHVudHJ1c3RlZExpbWl0LCBkYXRhU2l6ZSgpIC0gMSk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk3OWRhYmU2ODlhZDQ2MjhlNTJkYmQxYmFl
MGY2MWZlNmRlMTZiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgRmZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIuaCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2Ug
SVBDIHsKKworc3RhdGljIFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gY3JlYXRlTWVtb3J5KHNp
emVfdCBzaXplKQoreworICAgIGF1dG8gbWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFs
bG9jYXRlKHNpemUpOworICAgIGlmICghbWVtb3J5KQorICAgICAgICBDUkFTSCgpOworICAgIHJl
dHVybiBtZW1vcnkucmVsZWFzZU5vbk51bGwoKTsKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6ZSkKKyAgICA6IG1fZGF0
YVNpemUobWVtb3J5U2l6ZSAtIGhlYWRlclNpemUoKSkKKyAgICAsIG1fc2hhcmVkTWVtb3J5KGNy
ZWF0ZU1lbW9yeShtZW1vcnlTaXplKSkKK3sKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYgbWVtb3J5
LCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgc2VuZGVyV2FpdFNlbWFwaG9yZSkKKyAg
ICA6IG1fZGF0YVNpemUobWVtb3J5U2l6ZSAtIGhlYWRlclNpemUoKSkKKyAgICAsIG1fc2hhcmVk
TWVtb3J5KFdURk1vdmUobWVtb3J5KSkKKyAgICAsIG1fc2VuZGVyV2FpdFNlbWFwaG9yZShXVEZN
b3ZlKHNlbmRlcldhaXRTZW1hcGhvcmUpKQoreworfQorCitTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyKFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBvdGhlcikg
PSBkZWZhdWx0OworCitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjp+U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcigpID0gZGVmYXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlcjo6b3BlcmF0b3I9KFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBvdGhlcikKK3sK
KyAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgbV9kYXRhU2l6ZSA9IG90aGVyLm1f
ZGF0YVNpemU7CisgICAgICAgIG1fc2hhcmVkTWVtb3J5ID0gV1RGTW92ZShvdGhlci5tX3NoYXJl
ZE1lbW9yeSk7CisgICAgICAgIG1fc2VuZGVyV2FpdFNlbWFwaG9yZSA9IFdURk1vdmUob3RoZXIu
bV9zZW5kZXJXYWl0U2VtYXBob3JlKTsKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQorCit2
b2lkIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIGlmICgh
bV9zaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpKQorICAgICAgICBDUkFTSCgpOworICAgIFdlYktpdDo6
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBtX3No
YXJlZE1lbW9yeS0+c2l6ZSgpIH07CisgICAgZW5jb2RlciA8PCBpcGNIYW5kbGU7CisgICAgZW5j
b2RlciA8PCBtX3NlbmRlcldhaXRTZW1hcGhvcmU7Cit9CisKK09wdGlvbmFsPFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXI+IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIE9wdGlvbmFsPFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IGlw
Y0hhbmRsZTsKKyAgICBkZWNvZGVyID4+IGlwY0hhbmRsZTsKKyAgICBpZiAoIWlwY0hhbmRsZSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxTZW1hcGhvcmU+IHNl
bWFwaG9yZTsKKyAgICBkZWNvZGVyID4+IHNlbWFwaG9yZTsKKyAgICBpZiAoIXNlbWFwaG9yZSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBzaXplX3QgZGF0YVNpemUgPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KGlwY0hhbmRsZS0+ZGF0YVNpemUpOworICAgIGlmIChkYXRhU2l6ZSA8
IGhlYWRlclNpemUoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIHNo
YXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLT5oYW5kbGUs
IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOworICAgIGlmIChz
aGFyZWRNZW1vcnktPnNpemUoKSA8IGRhdGFTaXplKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHsgc2hhcmVkTWVtb3J5LnJl
bGVhc2VOb25OdWxsKCksIGRhdGFTaXplLCAgV1RGTW92ZSgqc2VtYXBob3JlKSB9OworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTc3ZjJjYjFlYzA3OTM1ZmNjODBhZDVmMjQ0NGFkZWZmYjAzOTQ0
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuaApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgor
I2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBJUEMgeworCisvLyBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyIGlzIGEgc2hhcmVkICJiaS1wYXJ0aXRlIiBjaXJjdWxhciBidWZmZXIgc3Vw
cG9ydGluZworLy8gdmFyaWFibGUgbGVuZ3RoIG1lc3NhZ2VzLCBzcGVjaWZpYyBkYXRhIGFsaWdu
bWVudCB3aXRoIG1hbmRhdGVkIG1pbmltdW0gc2l6ZS4KKy8vIFN0cmVhbUNsaWVudENvbm5lY3Rp
b24gYW5kIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gdXNlIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIg
dG8gY29tbXVuaWNhdGUuCisvLworLy8gVGhlICJiaS1wYXJ0aXRlIiBpcyBoZXJlIHRvIG1lYW4g
dGhhdCB3cml0ZXMgYW5kIHJlYWRzIHRvIHRoZSBidWZmZXIgbXVzdCBiZQorLy8gY29udGludW91
cy4KKy8vCisvLyBUaGUgY2xpZW50IChzZW5kZXIgb3IgcmVjZWl2ZXIpICJhY3F1aXJlcyIgc29t
ZSBhbW91bnQgb2YgYnVmZmVyIGRhdGEuIElmIGJ1ZmZlciBoYXMgbm8KKy8vIGNhcGFjaXR5LCBh
Y3F1aXJlIHJldHVybnMgd2l0aCB6ZXJvIGNhcGFjaXR5LiBJZiBidWZmZXIgaGFzIGF0IGxlYXN0
IGFjcXVpcmVkCisvLyBjYXBhY2l0eSwgYWxsIHRoZSBhdmFpbGFibGUgY2FwYWNpdHkgaXMgcmV0
dXJuZWQuCisvLworLy8gVGhlIGNsaWVudCAicmVsZWFzZXMiIHRoZSBzb21lIGFtb3VudCBvZiBk
YXRhLCBhdCBsZWFzdCB0aGUgYW1vdW50IGFjcXVpcmVkIGJ1dCBwb3RlbnRpYWxseQorLy8gbW9y
ZS4KKy8vCisvLyBCb3RoIHNlbmRlciBhbmQgcmVjZWl2ZXIgbXVzdCBhY3F1aXJlIHNhbWUgYW1v
dW50IG9mIGRhdGEgYXQgdGhlIHNhbWUgc3RlcCBvZiB0aGUgYWNxdWlyZSBzZXF1ZW5jZS4KKy8v
IElmIHNlbmRlciBhY3F1aXJlcyBYIGFuZCB0aGVuIFkgYW1vdW50LCByZWNlaXZlciBtdXN0IGRv
IHRoZSBzYW1lLgorLy8KKy8vIFRoZSBjaXJjdWxhciBidWZmZXIgaGFzIGZvbGxvd2luZyBpbXBs
ZW1lbnRhdGlvbjoKKy8vICogU2VuZGVyIG93bnMgdGhlIGRhdGEgYmV0d2VlbiBbc2VuZGVyT2Zm
c2V0LCByZWNlaXZlck9mZnNldFsuIFdoZW4gc2VuZGVyT2Zmc2V0ID09CisvLyByZWNlaXZlck9m
ZnNldCwgc2VuZGVyIG93bnMgYWxsIHRoZSBkYXRhLgorLy8gKiBSZWNlaXZlciBvd25zIHRoZSBk
YXRhIGJldHdlZW4gW3JlY2VpdmVyT2Zmc2V0LCBzZW5kZXJPZmZzZXRbLgorLy8gKiBUaGUgYnVm
ZmVyIGNhbiBob2xkIG1heGltdW0gb2Ygc2l6ZSAtIDEgdmFsdWVzLiBUaGUgbGFzdCB2YWx1ZSBp
cyByZXNlcnZlZCBmb3IKKy8vIGluZGljYXRpbmcgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwuIEZJ
WE1FOiBNYXliZSB3b3VsZCBiZSBzaW1wbGVyIGltcGxlbWVudGF0aW9uIGlmCisvLyBpdCB3b3Vs
ZCB1c2UgdGhlICJ3cmFwIiBmbGFnIGluc3RlYWQgb2YgdGhlIGhvbGUgYXMgdGhlIGluZGljYXRv
ci4gVGhpcyB3b3VsZCBtb3ZlCisvLyB0aGUgYWxpZ25lZFNwYW4gaW1wbGVtZW50YXRpb24gdG8g
dGhlIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisvLyAqIEFsbCBhdG9taWMgdmFyaWFibGUgbG9h
ZHMgYXJlIHVudHJ1c3RlZCwgc28gdGhleSdyZSBjbGFtcGVkLiBWaW9sYXRpb25zIGFyZSBub3Qg
cmVwb3J0ZWQsCisvLyB0aG91Z2guCisvLyBTZWUgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuCitj
bGFzcyBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyKHNpemVfdCBtZW1vcnlTaXplKTsKKyAgICBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyKFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgflN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIoKTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBvcGVyYXRvcj0oU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciYmKTsKKworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZz
ZXQpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IGRhdGFTaXplKCkpOwor
ICAgICAgICBpZiAob2Zmc2V0ID09IGRhdGFTaXplKCkpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgbWVz
c2FnZUFsaWdubWVudD4KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGFjcXVpcmVTaXplKSBjb25zdAorICAgIHsKKyAgICAgICAgb2Zmc2V0ID0gcm91bmRVcFRv
TXVsdGlwbGVPZjxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQpOworICAgICAgICBpZiAob2Zmc2V0
ICsgYWNxdWlyZVNpemUgPj0gZGF0YVNpemUoKSkKKyAgICAgICAgICAgIG9mZnNldCA9IDA7Cisg
ICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgQXRvbWljPHNpemVfdD4mIHNlbmRl
ck9mZnNldCgpIHsgcmV0dXJuIGhlYWRlcigpLnNlbmRlck9mZnNldDsgfQorICAgIEF0b21pYzxz
aXplX3Q+JiByZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIGhlYWRlcigpLnJlY2VpdmVyT2Zmc2V0
OyB9CisgICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4
X3QqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSArIGhlYWRlclNpemUoKTsgfQorICAgIHNpemVf
dCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVNpemU7IH0KKyAgICBTZW1hcGhvcmUm
IHNlbmRlcldhaXRTZW1hcGhvcmUoKSB7IHJldHVybiBtX3NlbmRlcldhaXRTZW1hcGhvcmU7IH0K
KworICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpzZW5kZXJPZmZzZXQgd2hlbiBy
ZWNlaXZlciBpcyBzbGVlcGluZywgZS5nLiBub3QgcnVubmluZy4KKyAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcgPSAxIDw8IDMxOwor
ICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpyZWNlaXZlck9mZnNldCB3aGVuIHNl
bmRlciBpcyB3YWl0aW5nLCBlLmcuIHdhaXRpbmcgb24KKyAgICAvLyBhIHNlbWFwaG9yZS4KKyAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCByZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGluZ1Rh
ZyA9IDEgPDwgMzE7CisKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgc3Rh
dGljIE9wdGlvbmFsPFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CisK
K3ByaXZhdGU6CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk+JiYsIHNpemVfdCBtZW1vcnlTaXplLCBTZW1hcGhvcmUmJiBzZW5kZXJXYWl0U2VtYXBo
b3JlKTsKKworICAgIHN0cnVjdCBIZWFkZXIgeworICAgICAgICBBdG9taWM8c2l6ZV90PiByZWNl
aXZlck9mZnNldDsKKyAgICAgICAgLy8gUGFkZGluZyBzbyB0aGF0IHRoZSB2YXJpYWJsZXMgbW9z
dGx5IGFjY2Vzc2VkIGJ5IGRpZmZlcmVudCBwcm9jZXNzZXMgZG8gbm90IHNoYXJlIGEgY2FjaGUg
bGluZS4KKyAgICAgICAgLy8gVGhpcyBpcyBhbiBhdHRlbXB0IHRvIGF2b2lkIGNhY2hlLWxpbmUg
aW5kdWNlZCByZWR1Y3Rpb24gb2YgcGFyYWxsZWwgYWNjZXNzLgorICAgICAgICB1aW50NjRfdCBj
YWNoZUxpbmVQYWRkaW5nWzJdOworICAgICAgICBBdG9taWM8c2l6ZV90PiBzZW5kZXJPZmZzZXQ7
CisgICAgfTsKKyAgICBIZWFkZXImIGhlYWRlcigpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PEhlYWRlcio+KG1fc2hhcmVkTWVtb3J5LT5kYXRhKCkpOyB9CisgICAgc3RhdGljIGNv
bnN0ZXhwciBzaXplX3QgaGVhZGVyU2l6ZSgpIHsgcmV0dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8
c2l6ZW9mKHN0ZDo6bWF4X2FsaWduX3QpPihzaXplb2YoSGVhZGVyKSk7IH0KKworICAgIHNpemVf
dCBtX2RhdGFTaXplIHsgMCB9OworICAgIFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gbV9zaGFy
ZWRNZW1vcnk7CisgICAgU2VtYXBob3JlIG1fc2VuZGVyV2FpdFNlbWFwaG9yZTsKK307CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uRW5j
b2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI5MjMyZGVjZjZjNzkzYTQ1NzcxNjhlOTdlZmI1MWFhZmIzMmZk
ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
b25uZWN0aW9uRW5jb2Rlci5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJNZXNz
YWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBJ
UEMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IHN0cnVjdCBBcmd1bWVudENvZGVy
OworCisvLyBJUEMgZW5jb2RlciB3aGljaDoKKy8vICAtIEVuY29kZXMgdG8gYSBjYWxsZXIgYnVm
ZmVyIHdpdGggZml4ZWQgc2l6ZSwgZG9lcyBub3QgcmVzaXplLCBzdG9wcyB3aGVuIHNpemUgcnVu
cyBvdXQKKy8vICAtIERvZXMgbm90IGluaXRpYWxpemUgYWxpZ25tZW50IGdhcHMKKy8vCitjbGFz
cyBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBmaW5hbCB7CitwdWJsaWM6CisgICAgLy8gU3RyZWFt
IG1lc3NhZ2UgbmVlZHMgdG8gYmUgYXQgbGVhc3Qgc2l6ZSBvZiBTdHJlYW1TZXREZXN0aW5hdGlv
bklEIG1lc3NhZ2UuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VT
aXplID0gc2l6ZW9mKE1lc3NhZ2VOYW1lKSArIHNpemVvZih1aW50NjRfdCk7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IGFsaWdub2YoTWVzc2FnZU5hbWUp
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lQQ0VuY29kZXIgPSB0cnVlOworCisgICAg
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ4X3Qq
IHN0cmVhbSwgc2l6ZV90IHN0cmVhbUNhcGFjaXR5KQorICAgICAgICA6IG1fYnVmZmVyKHN0cmVh
bSkKKyAgICAgICAgLCBtX2J1ZmZlckNhcGFjaXR5KHN0cmVhbUNhcGFjaXR5KQorICAgIHsKKyAg
ICAgICAgKnRoaXMgPDwgbWVzc2FnZU5hbWU7CisgICAgfQorCisgICAgflN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyKCkgPSBkZWZhdWx0OworCisgICAgYm9vbCBlbmNvZGVGaXhlZExlbmd0aERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCisgICAg
eworICAgICAgICBzaXplX3QgYnVmZmVyUG9pbnRlciA9IHN0YXRpY19jYXN0PHNpemVfdD4ocmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9idWZmZXIgKyBtX2VuY29kZWRTaXplKSk7CisgICAg
ICAgIHNpemVfdCBuZXdCdWZmZXJQb2ludGVyID0gcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm1l
bnQsIGJ1ZmZlclBvaW50ZXIpOworICAgICAgICBpZiAobmV3QnVmZmVyUG9pbnRlciA8IGJ1ZmZl
clBvaW50ZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGludHB0cl90IGFs
aWduZWRTaXplID0gbV9lbmNvZGVkU2l6ZSArIChuZXdCdWZmZXJQb2ludGVyIC0gYnVmZmVyUG9p
bnRlcik7CisgICAgICAgIGlmICghcmVzZXJ2ZShhbGlnbmVkU2l6ZSwgc2l6ZSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IG1fYnVmZmVyICsg
YWxpZ25lZFNpemU7CisgICAgICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOworICAgICAg
ICBtX2VuY29kZWRTaXplID0gYWxpZ25lZFNpemUgKyBzaXplOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyJiBvcGVyYXRvcjw8KFQmJiB0KQorICAgIHsKKyAgICAgICAgQXJndW1lbnRDb2Rl
cjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Piwgdm9pZD46
OmVuY29kZSgqdGhpcywgc3RkOjpmb3J3YXJkPFQ+KHQpKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBBU1NFUlQoaXNWYWxpZCgpKTsg
cmV0dXJuIG1fZW5jb2RlZFNpemU7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlckNhcGFjaXR5OyB9CisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJu
IGlzVmFsaWQoKTsgfQorcHJpdmF0ZToKKyAgICBib29sIHJlc2VydmUoc2l6ZV90IGFsaWduZWRT
aXplLCBzaXplX3QgYWRkaXRpb25hbFNpemUpCisgICAgeworICAgICAgICBzaXplX3Qgc2l6ZSA9
IGFsaWduZWRTaXplICsgYWRkaXRpb25hbFNpemU7CisgICAgICAgIGlmIChzaXplIDwgYWxpZ25l
ZFNpemUgfHwgc2l6ZSA+IG1fYnVmZmVyQ2FwYWNpdHkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVy
Q2FwYWNpdHkgPSAwOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB1aW50OF90KiBtX2J1ZmZlcjsKKyAgICBzaXpl
X3QgbV9idWZmZXJDYXBhY2l0eTsKKyAgICBzaXplX3QgbV9lbmNvZGVkU2l6ZSB7IDAgfTsKK307
CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWI0NDk0
Yjc0ZmQ5Mjg1ODAzZTRlYTJlZjQ4YzExNzM2NTlkNzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKQEAg
LTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgorCituYW1lc3BhY2UgSVBDIHsKKworU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZShjb25zdCBj
aGFyKiBuYW1lKQorICAgIDogbV9uYW1lKG5hbWUpCit7Cit9CisKK3ZvaWQgU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZTo6ZGlzcGF0Y2goV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24p
Cit7CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIG1fZnVu
Y3Rpb25zLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAgICAgIEFTU0VSVCghbV9zaG91
bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5vdCBzdXBwb3J0ZWQuCisg
ICAgfQorICAgIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQoKTsKKworfQordm9pZCBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlOjphZGRTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlJiBjb25uZWN0aW9uKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xv
Y2spOworICAgICAgICBtX2Nvbm5lY3Rpb25zLmFkZChjb25uZWN0aW9uKTsKKyAgICAgICAgQVNT
RVJUKCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1
cHBvcnRlZC4KKyAgICB9CisgICAgd2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpOworfQorCit2b2lk
IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKG1fcHJvY2Vz
c2luZ1RocmVhZCk7CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
ICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24pOworICAgICAgICBBU1NFUlQoIW1f
c2hvdWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVk
LgorICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWdu
YWwoKTsKKyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnN0b3Ao
KQoreworICAgIG1fc2hvdWxkUXVpdCA9IHRydWU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
aWYgKCFtX3Byb2Nlc3NpbmdUaHJlYWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dha2VVcFNl
bWFwaG9yZS5zaWduYWwoKTsKKyAgICBtX3Byb2Nlc3NpbmdUaHJlYWQtPndhaXRGb3JDb21wbGV0
aW9uKCk7CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkID0gbnVsbHB0cjsKKyNlbmRpZgorfQorCit2
b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcCgpCit7CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisjZW5kaWYKK30KKworSVBD
OjpTZW1hcGhvcmUmIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFNlbWFwaG9yZSgp
Cit7CisgICAgcmV0dXJuIG1fd2FrZVVwU2VtYXBob3JlOworfQorCit2b2lkIFN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU6Ondha2VVcFByb2Nlc3NpbmdUaHJlYWQoKQoreworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIGlmIChtX3Byb2Nlc3NpbmdUaHJlYWQpIHsKKyAgICAgICAgbV93YWtlVXBT
ZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHRh
c2sgPSBbdGhpc10oKSBtdXRhYmxlIHsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAg
cHJvY2Vzc1N0cmVhbXMoKTsKKyAgICAgICAgICAgIGlmIChtX3Nob3VsZFF1aXQpIHsKKyAgICAg
ICAgICAgICAgICBwcm9jZXNzU3RyZWFtcygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLndhaXQoKTsKKyAgICAg
ICAgfQorICAgIH07CisgICAgbV9wcm9jZXNzaW5nVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUobV9u
YW1lLCBXVEZNb3ZlKHRhc2spLCBUaHJlYWRUeXBlOjpHcmFwaGljcywgVGhyZWFkOjpRT1M6OlVz
ZXJJbnRlcmFjdGl2ZSk7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlOjpwcm9jZXNzU3RyZWFtcygpCit7CisgICAgY29uc3RleHByIHNpemVfdCBkZWZhdWx0TWVz
c2FnZUxpbWl0ID0gMTAwMDsKKyAgICBib29sIGhhc01vcmVUb1Byb2Nlc3MgPSBmYWxzZTsKKyAg
ICBkbyB7CisgICAgICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gZnVuY3Rpb25zOwor
ICAgICAgICBIYXNoU2V0PFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4+IGNvbm5lY3Rp
b25zOworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayk7CisgICAgICAgICAgICBmdW5jdGlvbnMuc3dhcChtX2Z1bmN0aW9ucyk7CisgICAgICAgICAg
ICBjb25uZWN0aW9ucyA9IG1fY29ubmVjdGlvbnM7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChh
dXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykKKyAgICAgICAgICAgIFdURk1vdmUoZnVuY3Rpb24p
KCk7CisKKyAgICAgICAgaGFzTW9yZVRvUHJvY2VzcyA9IGZhbHNlOworICAgICAgICBmb3IgKGF1
dG8mIGNvbm5lY3Rpb24gOiBjb25uZWN0aW9ucykKKyAgICAgICAgICAgIGhhc01vcmVUb1Byb2Nl
c3MgfD0gY29ubmVjdGlvbi0+ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhkZWZhdWx0TWVzc2FnZUxp
bWl0KSA9PSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6SGFzTW9yZU1lc3NhZ2VzOworICAg
IH0gd2hpbGUgKGhhc01vcmVUb1Byb2Nlc3MpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDUyNmEzNTI2NjUxZGRmZjM5MGE3ZGY3MWZjOTVkYTVhNDFkY2M1ZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2Ug
SVBDIHsKKworY2xhc3MgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBG
dW5jdGlvbkRpc3BhdGNoZXIgeworcHVibGljOgorICAgIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUoY29uc3QgY2hhciopOworICAgIH5TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlKCkgPSBkZWZh
dWx0OworICAgIHZvaWQgYWRkU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZSYpOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZSYpOworCisgICAgdm9pZCBkaXNwYXRjaChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JikgZmluYWw7CisgICAgdm9pZCBzdG9wKCk7CisKKyAgICB2b2lkIHdha2VVcCgpOworCisgICAg
U2VtYXBob3JlJiB3YWtlVXBTZW1hcGhvcmUoKTsKK3ByaXZhdGU6CisgICAgdm9pZCB3YWtlVXBQ
cm9jZXNzaW5nVGhyZWFkKCk7CisgICAgdm9pZCBwcm9jZXNzU3RyZWFtcygpOworCisgICAgY29u
c3QgY2hhciogY29uc3QgbV9uYW1lOworICAgIFNlbWFwaG9yZSBtX3dha2VVcFNlbWFwaG9yZTsK
KyAgICBSZWZQdHI8VGhyZWFkPiBtX3Byb2Nlc3NpbmdUaHJlYWQ7CisKKyAgICBzdGQ6OmF0b21p
Yzxib29sPiBtX3Nob3VsZFF1aXQgeyBmYWxzZSB9OworCisgICAgTG9jayBtX2xvY2s7CisgICAg
RGVxdWU8RnVuY3Rpb248dm9pZCgpPj4gbV9mdW5jdGlvbnM7CisgICAgSGFzaFNldDxSZWY8U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+PiBtX2Nvbm5lY3Rpb25zOworfTsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40ZTE0YjVkNTE3ZjA2NzYzMzgyZjUxM2ZlNTUzNzUxYjZjMWIzMzJjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVy
Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIK
KworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiYgc3RyZWFtLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUp
CisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fd29ya1F1ZXVlKHdvcmtR
dWV1ZSkKKyAgICAsIG1fYnVmZmVyKFdURk1vdmUoc3RyZWFtKSkKK3sKK30KKwordm9pZCBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2
ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX2Nv
bm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVldWUoKnRoaXMsIHJlY2VpdmVyTmFtZSwgZGVz
dGluYXRpb25JRCk7CisgICAgbV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7
Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNz
YWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2
ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBtX3dvcmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25u
ZWN0aW9uKCp0aGlzKTsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5x
dWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmIG1lc3Nh
Z2UpCit7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJl
YW1NZXNzYWdlc0xvY2spOworICAgICAgICBtX291dE9mU3RyZWFtTWVzc2FnZXMuYXBwZW5kKFdU
Rk1vdmUobWVzc2FnZSkpOworICAgIH0KKyAgICBtX3dvcmtRdWV1ZS53YWtlVXAoKTsKK30KKwor
T3B0aW9uYWw8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4+IFN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUoKQoreworICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0g
c2hhcmVkU2VuZGVyT2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAg
ICBpZiAocmVjZWl2ZXJMaW1pdCA9PSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZz
ZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxp
bWl0KTsKKyAgICBpZiAocmVzdWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNpemUpIHsKKyAgICAg
ICAgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNlbmRlck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0
cm9uZyhyZWNlaXZlckxpbWl0LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRS
ZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVt
b3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICBBU1NFUlQoIShyZWNlaXZlckxpbWl0ICYgU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKSk7
CisgICAgICAgIHJlY2VpdmVyTGltaXQgPSBjbGFtcGVkTGltaXQocmVjZWl2ZXJMaW1pdCk7Cisg
ICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fcmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVyTGlt
aXQpOworICAgIH0KKworICAgIGlmIChyZXN1bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUp
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwor
dm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6cmVsZWFzZShzaXplX3QgcmVhZFNpemUp
Cit7CisgICAgQVNTRVJUKHJlYWRTaXplKTsKKyAgICByZWFkU2l6ZSA9IHN0ZDo6bWF4KHJlYWRT
aXplLCBtaW5pbXVtTWVzc2FnZVNpemUpOworICAgIHNpemVfdCByZWNlaXZlck9mZnNldCA9IHdy
YXBPZmZzZXQoYWxpZ25PZmZzZXQobV9yZWNlaXZlck9mZnNldCkgKyByZWFkU2l6ZSk7CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBzaXplX3Qgb2xkUmVjZWl2ZXJPZmZzZXQgPSBzaGFyZWRS
ZWNlaXZlck9mZnNldCgpLmV4Y2hhbmdlKHJlY2VpdmVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRl
cl9hY3FfcmVsKTsKKyAgICAvLyBJZiB0aGUgc2VuZGVyIHdyb3RlIG92ZXIgcmVjZWl2ZXJPZmZz
ZXQsIGl0IG1lYW5zIHRoZSBzZW5kZXIgaXMgd2FpdGluZy4KKyAgICBpZiAob2xkUmVjZWl2ZXJP
ZmZzZXQgIT0gbV9yZWNlaXZlck9mZnNldCkKKyAgICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNl
bWFwaG9yZSgpLnNpZ25hbCgpOworI2VuZGlmCisKKyAgICBtX3JlY2VpdmVyT2Zmc2V0ID0gcmVj
ZWl2ZXJPZmZzZXQ7Cit9CisKK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjphbGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGltaXQpCit7CisgICAgQVNTRVJUKG9mZnNldCA8IGRhdGFTaXplKCkpOworICAgIEFTU0VSVChs
aW1pdCA8IGRhdGFTaXplKCkpOworICAgIHNpemVfdCBhbGlnbmVkID0gYWxpZ25PZmZzZXQob2Zm
c2V0KTsKKyAgICBzaXplX3QgcmVzdWx0U2l6ZSA9IDA7CisgICAgaWYgKG9mZnNldCA8IGxpbWl0
KSB7CisgICAgICAgIGlmIChvZmZzZXQgPD0gYWxpZ25lZCAmJiBhbGlnbmVkIDwgbGltaXQpCisg
ICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfSBlbHNl
IGlmIChvZmZzZXQgPiBsaW1pdCkgeworICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgfHwg
YWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwg
bGltaXQpOworICAgIH0KKyAgICByZXR1cm4geyBkYXRhKCkgKyBhbGlnbmVkLCByZXN1bHRTaXpl
IH07Cit9CisKK3NpemVfdCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZShzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgaWYgKG9mZnNldCA8PSBsaW1pdCkKKyAgICAg
ICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0OworICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gb2Zmc2V0
OworfQorCitzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmNsYW1wZWRMaW1pdChz
aXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHVudHJ1c3RlZExpbWl0
IDwgKGRhdGFTaXplKCkgLSAxKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHVudHJ1c3RlZExpbWl0
LCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMjBiOTIxMzZmZjZi
NmE5YjllMTk4ZGM5NzNiM2QzYTZlYTU2NjI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMjgz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisjaW5j
bHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
KyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOworCitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZT4sIHByb3RlY3RlZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSk7CitwdWJsaWM6CisgICAgflN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworCisgICAgQ29ubmVj
dGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQorCisgICAgZW51bSBE
aXNwYXRjaFJlc3VsdCA6IGJvb2wgeworICAgICAgICBIYXNOb01lc3NhZ2VzLAorICAgICAgICBI
YXNNb3JlTWVzc2FnZXMKKyAgICB9OworICAgIHZpcnR1YWwgRGlzcGF0Y2hSZXN1bHQgZGlzcGF0
Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KSA9IDA7CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgdm9pZCBzZW5kU3luY1JlcGx5KHVpbnQ2NF90
IHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYmLi4uKTsKKworcHJvdGVjdGVkOgorICAgIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlKElQQzo6Q29ubmVjdGlvbiYsIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXImJiwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYpOworCisgICAgdm9pZCBzdGFydFJl
Y2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
OworICAgIHZvaWQgc3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgLy8gTWVzc2FnZVJlY2VpdmVRdWV1ZQorICAgIHZv
aWQgZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYm
KSBmaW5hbDsKKworICAgIHN0cnVjdCBTcGFuIHsKKyAgICAgICAgdWludDhfdCogZGF0YTsKKyAg
ICAgICAgc2l6ZV90IHNpemU7CisgICAgfTsKKyAgICBPcHRpb25hbDxTcGFuPiB0cnlBcXVpcmUo
KTsKKworICAgIHZvaWQgcmVsZWFzZShzaXplX3QgcmVhZFNpemUpOworICAgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVy
OjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2Fn
ZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNzYWdlQWxpZ25tZW50Owor
ICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAgICBz
aXplX3Qgc2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBjbGFt
cGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdDsKKyAgICBzaXplX3Qgd3JhcE9m
ZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci53cmFwT2Zmc2V0KG9m
ZnNldCk7IH0KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0LCBtaW5p
bXVtTWVzc2FnZVNpemUpOyB9CisgICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFNlbmRlck9mZnNl
dCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9mZnNldCgpOyB9CisgICAgQXRvbWljPHNpemVf
dD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIucmVjZWl2ZXJPZmZz
ZXQoKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRh
KCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5kYXRh
U2l6ZSgpOyB9CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAg
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgbV93b3JrUXVldWU7CisKKyAgICBzaXplX3QgbV9y
ZWNlaXZlck9mZnNldCB7IDAgfTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIG1fYnVmZmVy
OworCisgICAgTG9jayBtX291dE9mU3RyZWFtTWVzc2FnZXNMb2NrOworICAgIERlcXVlPHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9vdXRPZlN0cmVhbU1lc3NhZ2VzOworCisgICAgZnJpZW5k
IGNsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzZW5kU3lu
Y1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHNlbmRpbmcgdG8gYnVmZmVyLgorICAgIGF1dG8g
ZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5j
TWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKKyAgICAoKmVuY29kZXIgPDwgLi4uIDw8IGFy
Z3VtZW50cyk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1vdmUoZW5jb2Rl
cikpOworfQorCisvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHJlcHJlc2VudHMgdGhlIGNvbm5l
Y3Rpb24gYmV0d2VlbiBzdHJlYW0gc2VuZGVyIGFuZCByZWNlaXZlciwgYXMgdXNlZCBieSB0aGUg
cmVjZWl2ZXIuCisvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOgorLy8gICogSG9sZHMgdGhlIG1l
c3NhZ2VzIHRvd2FyZHMgdGhlIHJlY2VpdmVyLgorLy8gICogU2VuZHMgdGhlIHJlcGxpZXMgYmFj
ayB0byB0aGUgc2VuZGVyIHZpYSB0aGUgc3RyZWFtIG9yIG5vcm1hbCBDb25uZWN0aW9uIGZhbGxi
YWNrLgorLy8KKy8vIFJlY2VpdmVyIHRlbXBsYXRlIGNvbnRyYWN0OgorLy8gICB2b2lkIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgRGVjb2RlciYp
OworLy8KK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorY2xhc3MgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPiBjcmVhdGUoQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlciwg
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3RyZWFtU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uLCBXVEZN
b3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSkpOworICAgIH0KKyAgICB+U3RyZWFtU2VydmVy
Q29ubmVjdGlvbigpIGZpbmFsID0gZGVmYXVsdDsKKworICAgIHZvaWQgc3RhcnRSZWNlaXZpbmdN
ZXNzYWdlcyhSZWNlaXZlciYsIFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7
CisgICAgLy8gU3RvcHMgdGhlIG1lc3NhZ2UgcmVjZWlwdC4gTm90ZTogYWxyZWFkeSByZWNlaXZl
ZCBtZXNzYWdlcyBtaWdodCBzdGlsbCBiZSBkZWxpdmVyZWQuCisgICAgdm9pZCBzdG9wUmVjZWl2
aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKworICAg
IC8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIG92ZXJyaWRlcy4KKyAgICBEaXNwYXRjaFJl
c3VsdCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNzYWdlTGltaXQpIGZpbmFsOwor
Citwcml2YXRlOgorICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQorICAgICAgICA6IFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlKGNvbm5lY3Rpb24sIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgd29ya1F1ZXVlKQorICAg
IHsKKyAgICB9CisgICAgYm9vbCBwcm9jZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRChEZWNvZGVy
JiYsIFJlZlB0cjxSZWNlaXZlcj4mIGN1cnJlbnRSZWNlaXZlcik7CisgICAgYm9vbCBkaXNwYXRj
aFN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmLCBSZWNlaXZlciYpOworICAgIGJvb2wgZGlzcGF0Y2hP
dXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmKTsKKyAgICBMb2NrIG1fcmVjZWl2ZXJzTG9jazsK
KyAgICB1c2luZyBSZWNlaXZlcnNNYXAgPSBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50
NjRfdD4sIFJlZjxSZWNlaXZlcj4+OworICAgIFJlY2VpdmVyc01hcCBtX3JlY2VpdmVyczsKKwor
ICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgPSAwOworfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgUmVjZWl2ZXI+Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+
OjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyJiByZWNlaXZlciwgUmVjZWl2ZXJOYW1l
IHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICB7CisgICAgICAg
IGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJO
YW1lKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9y
ZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgQVNTRVJUKCFtX3JlY2VpdmVycy5jb250YWlucyhrZXkp
KTsKKyAgICAgICAgbV9yZWNlaXZlcnMuYWRkKGtleSwgbWFrZVJlZihyZWNlaXZlcikpOworICAg
IH0KKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdl
c0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgUmVjZWl2ZXI+Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9w
UmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCkKK3sKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RvcFJlY2Vp
dmluZ01lc3NhZ2VzSW1wbChyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8g
a2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwg
ZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xv
Y2spOworICAgIEFTU0VSVChtX3JlY2VpdmVycy5jb250YWlucyhrZXkpKTsKKyAgICBtX3JlY2Vp
dmVycy5yZW1vdmUoa2V5KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+CitTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6RGlzcGF0Y2hSZXN1bHQgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoU3RyZWFtTWVzc2FnZXMoc2l6ZV90IG1lc3NhZ2VMaW1p
dCkKK3sKKyAgICBSZWZQdHI8UmVjZWl2ZXI+IGN1cnJlbnRSZWNlaXZlcjsKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50IFdURjo6aXNWYWxpZChSZWNlaXZlck5hbWUpLgorICAgIHVpbnQ4X3QgY3Vy
cmVudFJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFJlY2VpdmVyTmFtZTo6SW52
YWxpZCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1lc3NhZ2VMaW1pdDsgKytpKSB7
CisgICAgICAgIGF1dG8gc3BhbiA9IHRyeUFxdWlyZSgpOworICAgICAgICBpZiAoIXNwYW4pCisg
ICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAg
IElQQzo6RGVjb2RlciBkZWNvZGVyIHsgc3Bhbi0+ZGF0YSwgc3Bhbi0+c2l6ZSwgbV9jdXJyZW50
RGVzdGluYXRpb25JRCB9OworICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKSB7CisgICAg
ICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6
Okhhc05vTWVzc2FnZXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRCkgeworICAgICAgICAg
ICAgaWYgKCFwcm9jZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRChXVEZNb3ZlKGRlY29kZXIpLCBj
dXJyZW50UmVjZWl2ZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6
SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0
cmVhbU1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGlmICghZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3Nh
Z2UoV1RGTW92ZShkZWNvZGVyKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVz
dWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGN1cnJlbnRSZWNlaXZlck5hbWUgIT0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB7CisgICAgICAgICAgICBjdXJyZW50UmVjZWl2
ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpOworICAgICAgICAgICAgY3VycmVudFJlY2VpdmVyID0gbnVsbHB0cjsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoIWN1cnJlbnRSZWNlaXZlcikgeworICAgICAgICAgICAgYXV0byBrZXkgPSBz
dGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihjdXJyZW50UmVjZWl2ZXJOYW1lKSwg
bV9jdXJyZW50RGVzdGluYXRpb25JRCk7CisgICAgICAgICAgICBpZiAoIVJlY2VpdmVyc01hcDo6
aXNWYWxpZEtleShrZXkpKSB7CisgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRj
aERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAg
ICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2Nr
KTsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG1fcmVjZWl2ZXJzLmdldChrZXkpOwor
ICAgICAgICB9CisgICAgICAgIGlmICghY3VycmVudFJlY2VpdmVyKSB7CisgICAgICAgICAgICAv
LyBWYWxpZCBzY2VuYXJpbyBpcyB3aGVuIHJlY2VpdmVyIGhhcyBiZWVuIHJlbW92ZWQsIGJ1dCB0
aGVyZSBhcmUgbWVzc2FnZXMgZm9yIGl0IGluIHRoZSBidWZmZXIuCisgICAgICAgICAgICAvLyBG
SVhNRTogU2luY2Ugd2UgZG8gbm90IGhhdmUgYSByZWNlaXZlciwgd2UgZG9uJ3Qga25vdyBob3cg
dG8gZGVjb2RlIHRoZSBtZXNzYWdlLgorICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSBtdXN0
IHRpbWVvdXQgZXZlcnkgcmVjZWl2ZXIgaW4gdGhlIHN0cmVhbSBjb25uZWN0aW9uLgorICAgICAg
ICAgICAgLy8gQ3VycmVudGx5IHdlIGFzc2VydCB0aGF0IHRoZSByZWNlaXZlcnMgYXJlIGVtcHR5
LCBhcyB3ZSBvbmx5IGhhdmUgdXAgdG8gb25lIHJlY2VpdmVyIGluCisgICAgICAgICAgICAvLyBh
IHN0cmVhbSBjb25uZWN0aW9uIHVudGlsIHBvc3NpYmlsaXR5IG9mIHNraXBwaW5nIGlzIGltcGxl
bWVudGVkIHByb3Blcmx5LgorICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Jl
Y2VpdmVyc0xvY2spOworICAgICAgICAgICAgQVNTRVJUKG1fcmVjZWl2ZXJzLmlzRW1wdHkoKSk7
CisgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFkaXNwYXRjaFN0cmVhbU1lc3NhZ2UoV1RGTW92ZShkZWNvZGVy
KSwgKmN1cnJlbnRSZWNlaXZlcikpCisgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6
Okhhc05vTWVzc2FnZXM7CisgICAgfQorICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTW9y
ZU1lc3NhZ2VzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK2Jvb2wgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnByb2Nlc3NTZXRTdHJlYW1EZXN0aW5hdGlvbklE
KERlY29kZXImJiBkZWNvZGVyLCBSZWZQdHI8UmVjZWl2ZXI+JiBjdXJyZW50UmVjZWl2ZXIpCit7
CisgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDA7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZXN0aW5hdGlvbklEKSkgeworICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgaWYgKG1fY3VycmVudERlc3RpbmF0aW9uSUQgIT0gZGVzdGlu
YXRpb25JRCkgeworICAgICAgICBtX2N1cnJlbnREZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25J
RDsKKyAgICAgICAgY3VycmVudFJlY2VpdmVyID0gbnVsbHB0cjsKKyAgICB9CisgICAgcmVsZWFz
ZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29sIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmIGRlY29kZXIsIFJl
Y2VpdmVyJiByZWNlaXZlcikKK3sKKyAgICByZWNlaXZlci5kaWRSZWNlaXZlU3RyZWFtTWVzc2Fn
ZSgqdGhpcywgZGVjb2Rlcik7CisgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkgeworICAgICAg
ICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmVsZWFz
ZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29sIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b248UmVjZWl2ZXI+OjpkaXNwYXRjaE91dE9mU3RyZWFtTWVzc2FnZShEZWNvZGVyJiYgZGVjb2Rl
cikKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gbWVzc2FnZTsKKyAgICB7CisgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jayk7Cisg
ICAgICAgIGlmIChtX291dE9mU3RyZWFtTWVzc2FnZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBtZXNzYWdlID0gbV9vdXRPZlN0cmVhbU1lc3NhZ2VzLnRh
a2VGaXJzdCgpOworICAgIH0KKyAgICBpZiAoIW1lc3NhZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFJlZlB0cjxSZWNlaXZlcj4gcmVjZWl2ZXI7CisgICAgeworICAgICAgICBhdXRv
IGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KG1lc3NhZ2UtPm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSksIG1lc3NhZ2UtPmRlc3RpbmF0aW9uSUQoKSk7CisgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgcmVjZWl2ZXIg
PSBtX3JlY2VpdmVycy5nZXQoa2V5KTsKKyAgICB9CisgICAgaWYgKHJlY2VpdmVyKSB7CisgICAg
ICAgIHJlY2VpdmVyLT5kaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSgqdGhpcywgKm1lc3NhZ2UpOwor
ICAgICAgICBpZiAoIW1lc3NhZ2UtPmlzVmFsaWQoKSkgeworICAgICAgICAgICAgbV9jb25uZWN0
aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShtZXNzYWdlLT5tZXNzYWdlTmFt
ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAv
LyBJZiByZWNlaXZlciBkb2VzIG5vdCBleGlzdCBpZiBpdCBoYXMgYmVlbiByZW1vdmVkIGJ1dCBt
ZXNzYWdlcyBhcmUgc3RpbGwgcGVuZGluZyB0byBiZQorICAgIC8vIHByb2Nlc3NlZC4gSXQncyBv
ayB0byBza2lwIHN1Y2ggbWVzc2FnZXMuCisgICAgLy8gRklYTUU6IE5vdGUsIGNvcnJlc3BvbmRp
bmcgc2tpcCBpcyBub3QgcG9zc2libGUgYXQgdGhlIG1vbWVudCBmb3Igc3RyZWFtIG1lc3NhZ2Vz
LgorICAgIHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L2NvY29hL01hY2hQb3J0LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNo
UG9ydC5oCmluZGV4IDc4NTRmYThmMTg2OGZiOGU0NTYyMjg5ZmRkZjZmMjc5NWFmMmQ5MGQuLjgz
ZDk5ZjBjYmM4ZmUwNDgyMGI0NzgzYzljMDc2YWI1N2EzZWFiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaApAQCAtMjUsOSArMjUsOCBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJBdHRhY2ht
ZW50LmgiCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1ZGUgIkVuY29kZXIuaCIKIAogbmFt
ZXNwYWNlIElQQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dp
bi9Db25uZWN0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25u
ZWN0aW9uV2luLmNwcAppbmRleCA1YWRmZDgyYmVjYTQ2ZGIwMjQ0N2U4YmNiNmQzODRjMmMwMTU2
YTYwLi45MGI4MDJjODA5NmQ3NmMzMmI0Yjk3ZmI4MTJlYWY5MWZmMTMzZThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgog
CisjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNjQ5ODRkNzJm
MWMwMDk3NjUxMDI3YTAyMjA1OWU4NGE0NzI4MzFmNC4uZDczZjgzZDBiZmYzOGNjNDdlZTlmZjhj
MTFmZmYyY2U3ZWE3N2Y4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CkBAIC0yNCw4ICsyNCw5IEBAIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IHJlCiBpbXBv
cnQgc3lzCiAKK2Zyb20gbW9kZWwgaW1wb3J0IE1lc3NhZ2VSZWNlaXZlciwgTWVzc2FnZQogZnJv
bSB3ZWJraXQgaW1wb3J0IHBhcnNlcgotZnJvbSB3ZWJraXQubW9kZWwgaW1wb3J0IEJVSUxUSU5f
QVRUUklCVVRFLCBBU1lOQ19BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURSwgTUFJTlRI
UkVBRENBTExCQUNLX0FUVFJJQlVURQorZnJvbSB3ZWJraXQubW9kZWwgaW1wb3J0IEJVSUxUSU5f
QVRUUklCVVRFLCBBU1lOQ19BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURSwgTUFJTlRI
UkVBRENBTExCQUNLX0FUVFJJQlVURSwgU1RSRUFNX0FUVFJJQlVURSwgV0FOVFNfQ09OTkVDVElP
Tl9BVFRSSUJVVEUKIAogX2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTUzLDEzICs1NCwx
MSBAQCBfbGljZW5zZV9oZWFkZXIgPSAiIiIvKgogCiAiIiIKIAotV0FOVFNfQ09OTkVDVElPTl9B
VFRSSUJVVEUgPSAnV2FudHNDb25uZWN0aW9uJwogV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRS
SUJVVEUgPSAnV2FudHNEaXNwYXRjaE1lc3NhZ2UnCiBXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSA9ICdXYW50c0FzeW5jRGlzcGF0Y2hNZXNzYWdlJwogTEVHQUNZX1JFQ0VJ
VkVSX0FUVFJJQlVURSA9ICdMZWdhY3lSZWNlaXZlcicKIE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVS
X0FUVFJJQlVURSA9ICdOb3RSZWZDb3VudGVkJwogCi0KIGRlZiByZWNlaXZlcl9lbnVtZXJhdG9y
X29yZGVyX2tleShyZWNlaXZlcl9uYW1lKToKICAgICBpZiByZWNlaXZlcl9uYW1lID09ICdJUEMn
OgogICAgICAgICByZXR1cm4gMQpAQCAtMjEzLDcgKzIxMiw3IEBAIGRlZiBtZXNzYWdlX3RvX3N0
cnVjdF9kZWNsYXJhdGlvbihyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpD
b21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6Ok1haW5UaHJlYWQ7XG4nKQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBj
YWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpDb25zdHJ1
Y3Rpb25UaHJlYWQ7XG4nKQotICAgICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hS
T05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRF
KToKKyAgICAgICAgaWYgKG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJV
VEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpKSBhbmQgbm90IHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mJykKICAgICAgICAgICAgIGlmIGxlbihzZW5kX3BhcmFt
ZXRlcnMpOgogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJywgJXMnICUgY29tcGxldGlv
bl9oYW5kbGVyX3BhcmFtZXRlcnMpCkBAIC0yNjEsNiArMjYwLDcgQEAgZGVmIHR5cGVzX3RoYXRf
Y2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICByZXR1cm4gZnJvemVuc2V0KFsKICAg
ICAgICAgJ0lQQzo6RGF0YVJlZmVyZW5jZScsCiAgICAgICAgICdJUEM6OkZvbnRSZWZlcmVuY2Un
LAorICAgICAgICAnSVBDOjpTZW1hcGhvcmUnLAogICAgICAgICAnTWFjaFNlbmRSaWdodCcsCiAg
ICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5nJywKQEAgLTU3MywxMCArNTczLDE1
IEBAIGRlZiBzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKToKICAgICAg
ICAgZGlzcGF0Y2hfZnVuY3Rpb24gKz0gJ0FzeW5jJwogCiAgICAgd2FudHNfY29ubmVjdGlvbiA9
IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2Uu
aGFzX2F0dHJpYnV0ZShXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSkKKyAgICBtYXliZV9yZXBs
eV9lbmNvZGVyID0gIiwgKnJlcGx5RW5jb2RlciIKKyAgICBpZiByZWNlaXZlci5oYXNfYXR0cmli
dXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAgICAgICBtYXliZV9yZXBseV9lbmNvZGVyID0gJycK
KyAgICBlbGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9y
IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICBtYXliZV9y
ZXBseV9lbmNvZGVyID0gJywgcmVwbHlFbmNvZGVyJwogCiAgICAgcmVzdWx0ID0gW10KICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6
JXM6OiVzOjpuYW1lKCkpIHtcbicgJSAocmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lKSkKLSAg
ICByZXN1bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXNkZWNv
ZGVyLCAlc3JlcGx5RW5jb2RlciwgdGhpcywgJiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24s
IHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJ2Nvbm5lY3Rpb24sICcgaWYgd2FudHNfY29u
bmVjdGlvbiBlbHNlICcnLCAnJyBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNf
QVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSBlbHNl
ICcqJywgaGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQorICAgIHJlc3VsdC5h
cHBlbmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglc2RlY29kZXIlcywgdGhp
cywgJiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2Uu
bmFtZSwgJ2Nvbm5lY3Rpb24sICcgaWYgd2FudHNfY29ubmVjdGlvbiBlbHNlICcnLCBtYXliZV9y
ZXBseV9lbmNvZGVyLCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKSkpCiAgICAg
cmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICB9XG4nKQogICAgIHJldHVybiBzdXJyb3VuZF9pbl9jb25kaXRpb24oJycuam9pbihyZXN1bHQp
LCBtZXNzYWdlLmNvbmRpdGlvbikKQEAgLTg3Niw3ICs4ODEsNyBAQCBkZWYgZ2VuZXJhdGVfbWVz
c2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0
ZXJzICE9IE5vbmUgYW5kIChtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklC
VVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSk6CiAgICAgICAg
ICAgICBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQogCi0gICAgaWYg
ZGVsYXllZF9vcl9hc3luY19tZXNzYWdlczoKKyAgICBpZiBkZWxheWVkX29yX2FzeW5jX21lc3Nh
Z2VzIGFuZCBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIE1lc3NhZ2VzIHtcblxubmFtZXNwYWNlICVz
IHtcblxuJyAlIHJlY2VpdmVyLm5hbWUpCiAKICAgICAgICAgZm9yIG1lc3NhZ2UgaW4gZGVsYXll
ZF9vcl9hc3luY19tZXNzYWdlczoKQEAgLTkyNCwyNSArOTI5LDQ0IEBAIGRlZiBnZW5lcmF0ZV9t
ZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYXN5
bmNfbWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpCiAKLSAgICBpZiBhc3luY19tZXNzYWdlcyBvciBy
ZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSBv
ciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRU
UklCVVRFKToKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZSVzTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlcilc
bicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmli
dXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQorICAgIGlmIHJlY2VpdmVy
Lmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
J3ZvaWQgJXM6OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2UmIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2
ZXIubmFtZSkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCi0gICAgICAgIGlmIG5vdCBy
ZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSk6
CisgICAgICAgIGFzc2VydChyZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVEX1JF
Q0VJVkVSX0FUVFJJQlVURSkpCisgICAgICAgIGFzc2VydChub3QgcmVjZWl2ZXIuaGFzX2F0dHJp
YnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkpCisgICAgICAgIGFzc2VydChu
b3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FU
VFJJQlVURSkpCisKKyAgICAgICAgcmVzdWx0ICs9IFthc3luY19tZXNzYWdlX3N0YXRlbWVudChy
ZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gYXN5bmNfbWVzc2FnZXNdCisgICAgICAg
IHJlc3VsdCArPSBbc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9y
IG1lc3NhZ2UgaW4gc3luY19tZXNzYWdlc10KKworICAgICAgICBpZiAocmVjZWl2ZXIuc3VwZXJj
bGFzcyk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJXM6OmRpZFJlY2VpdmVTdHJl
YW1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNsYXNz
KSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURf
UEFSQU0oZGVjb2Rlcik7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNF
RF9QQVJBTShjb25uZWN0aW9uKTtcbicpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQor
ICAgIGVsaWYgYXN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19E
SVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5U
U19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CisgICAgICAgIHJlY2VpdmVfdmFy
aWFudCA9IHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVD
RUlWRVJfQVRUUklCVVRFKSBlbHNlICcnCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6
OmRpZFJlY2VpdmUlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVfdmFyaWFudCkpCisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisgICAgICAgIGlmIG5vdCAocmVjZWl2ZXIuaGFz
X2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpIG9yIHJlY2VpdmVy
Lmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSkpOgogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpO1xuJykKIAogICAg
ICAgICByZXN1bHQgKz0gW2FzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdl
KSBmb3IgbWVzc2FnZSBpbiBhc3luY19tZXNzYWdlc10KKwogICAgICAgICBpZiByZWNlaXZlci5o
YXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSBvciByZWNlaXZl
ci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGlzcGF0Y2hNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpKVxuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAg
cmV0dXJuO1xuJykKICAgICAgICAgaWYgKHJlY2VpdmVyLnN1cGVyY2xhc3MpOgotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcykpCisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xhc3MsIHJlY2VpdmVfdmFyaWFudCkpCiAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rp
b24pO1xuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oZGVj
b2Rlcik7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpO1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKIAotICAgIGlmIHN5bmNf
bWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdF
X0FUVFJJQlVURSk6CisgICAgaWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FU
VFJJQlVURSkgYW5kIChzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FO
VFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKToKICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
XG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlU3luYyVzTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5RW5jb2RlcilcbicgJSAocmVjZWl2
ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9S
RUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4n
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0
dGVzdC5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3Qu
cHkKaW5kZXggNDhkOGUxYjYyN2NjMzFiMThmYTFjNTBmYWJlZWVkOTcxYmQxNWJlOS4uZTg5ZTE3
ZTE0MDdiNWI1NjZiYzE5MmM0MGE5OWEyOGQ4YmY4ZGNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5CkBAIC00Niw2ICs0Niw4IEBA
IF90ZXN0X3JlY2VpdmVyX25hbWVzID0gWwogICAgICdUZXN0V2l0aElmTWVzc2FnZScsCiAgICAg
J1Rlc3RXaXRoU2VtYXBob3JlJywKICAgICAnVGVzdFdpdGhJbWFnZURhdGEnLAorICAgICdUZXN0
V2l0aFN0cmVhbScsCisgICAgJ1Rlc3RXaXRoU3RyZWFtQnVmZmVyJwogXQogCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5CmluZGV4IDQ4MDBmYTRlZmNhOTY3OGE4OWFmYzdlNDM0
ZjI2YjM0NmNlOGNmNmMuLjUwN2UwNDJhNTc3ZmY4YTAyMzM3MmMzYTYwN2FiMTA4YTVmYTk2NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQpAQCAtMjgsNiArMjgsOCBAQCBC
VUlMVElOX0FUVFJJQlVURSA9ICJCdWlsdGluIgogQVNZTkNfQVRUUklCVVRFID0gIkFzeW5jIgog
TUFJTlRIUkVBRENBTExCQUNLX0FUVFJJQlVURSA9ICJNYWluVGhyZWFkQ2FsbGJhY2siCiBTWU5D
SFJPTk9VU19BVFRSSUJVVEUgPSAnU3luY2hyb25vdXMnCitTVFJFQU1fQVRUUklCVVRFID0gIlN0
cmVhbSIKK1dBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFID0gJ1dhbnRzQ29ubmVjdGlvbicKIAog
Y2xhc3MgTWVzc2FnZVJlY2VpdmVyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWUsIHN1cGVyY2xhc3MsIGF0dHJpYnV0ZXMsIG1lc3NhZ2VzLCBjb25kaXRpb24pOgpAQCAtNzMs
NyArNzUsOSBAQCBpcGNfcmVjZWl2ZXIgPSBNZXNzYWdlUmVjZWl2ZXIobmFtZT0iSVBDIiwgc3Vw
ZXJjbGFzcz1Ob25lLCBhdHRyaWJ1dGVzPVtCVUlMVElOXwogICAgIE1lc3NhZ2UoJ1dyYXBwZWRB
c3luY01lc3NhZ2VGb3JUZXN0aW5nJywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJ
QlVURSwgU1lOQ0hST05PVVNfQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAogICAgIE1lc3Nh
Z2UoJ1N5bmNNZXNzYWdlUmVwbHknLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklC
VVRFXSwgY29uZGl0aW9uPU5vbmUpLAogICAgIE1lc3NhZ2UoJ0luaXRpYWxpemVDb25uZWN0aW9u
JywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj0iUExB
VEZPUk0oQ09DT0EpIiksCi0gICAgTWVzc2FnZSgnTGVnYWN5U2Vzc2lvblN0YXRlJywgW10sIFtd
LCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKQorICAgIE1l
c3NhZ2UoJ0xlZ2FjeVNlc3Npb25TdGF0ZScsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9B
VFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSksCisgICAgTWVzc2FnZSgnU2V0U3RyZWFtRGVzdGlu
YXRpb25JRCcsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRp
b249Tm9uZSksCisgICAgTWVzc2FnZSgnUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZScsIFtdLCBb
XSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSkKIF0sIGNv
bmRpdGlvbj1Ob25lKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvTWFrZWZpbGUgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01h
a2VmaWxlCmluZGV4IDIxYjMwYWUyMGZhMTAzM2ZhNjY0ZTAzYWRiZDg4MDg2YTZjNzJjNDIuLmUx
OTdiZDNjMjY3YWU0MTFhNDUwMGQwZmY2OTM5ODYwM2E0NTA4MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQpAQCAtNiw2ICs2LDggQEAgVEVTVFMgPSBc
CiAgICAgVGVzdFdpdGhJZk1lc3NhZ2UgXAogICAgIFRlc3RXaXRoU2VtYXBob3JlIFwKICAgICBU
ZXN0V2l0aEltYWdlRGF0YSBcCisJVGVzdFdpdGhTdHJlYW0gXAorCVRlc3RXaXRoU3RyZWFtQnVm
ZmVyIFwKICMKIAogYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCmluZGV4IDdkNWFmYzkxOGU1YjA1YjhmN2E1Y2Q2MjM4NTJi
NWMwZTBjMThhMDMuLjJlN2NhMTVlNzRlYmJkYTg2Yzc5ZjhmYzBiOGYzOGI0YjVmNzU4OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1l
cy5jcHAKQEAgLTEzNCw2ICsxMzQsMTAgQEAgY29uc3QgY2hhciogZGVzY3JpcHRpb24oTWVzc2Fn
ZU5hbWUgbmFtZSkKICAgICAgICAgcmV0dXJuICJJbml0aWFsaXplQ29ubmVjdGlvbiI7CiAgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOgogICAgICAgICByZXR1cm4gIkxl
Z2FjeVNlc3Npb25TdGF0ZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3Ry
ZWFtTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlIjsK
KyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklEOgorICAgICAgICBy
ZXR1cm4gIlNldFN0cmVhbURlc3RpbmF0aW9uSUQiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5
bmNNZXNzYWdlUmVwbHk6CiAgICAgICAgIHJldHVybiAiU3luY01lc3NhZ2VSZXBseSI7CiAgICAg
Y2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBs
eToKQEAgLTIyNCw2ICsyMjgsOCBAQCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lKE1lc3NhZ2VO
YW1lIG1lc3NhZ2VOYW1lKQogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpUZXN0V2l0aG91
dEF0dHJpYnV0ZXM7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6SW5pdGlhbGl6ZUNvbm5lY3Rpb246
CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlOgorICAgIGNhc2UgTWVz
c2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2U6CisgICAgY2FzZSBNZXNzYWdlTmFt
ZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRDoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTeW5jTWVz
c2FnZVJlcGx5OgogICAgICAgICByZXR1cm4gUmVjZWl2ZXJOYW1lOjpJUEM7CiAgICAgY2FzZSBN
ZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseToKQEAg
LTQwMSw2ICs0MDcsMTAgQEAgYm9vbCBpc1ZhbGlkTWVzc2FnZU5hbWUoTWVzc2FnZU5hbWUgbWVz
c2FnZU5hbWUpCiAjZW5kaWYKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFt
ZTo6TGVnYWN5U2Vzc2lvblN0YXRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobWVz
c2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2Fn
ZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOwogICAg
IGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5KQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKaW5kZXggZWZl
YTIzMDJkNjg3YmU0ZjUyMjY5MGY3OGEzYzY0ZjYzNmUzMWZkOC4uYTIyYmQxY2ZkN2Y3M2JlOWVh
YjFjYmJjMGZmMGM2ZWYwNmEwNjQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCkBAIC05Myw2ICs5Myw4IEBAIGVudW0gY2xhc3Mg
TWVzc2FnZU5hbWUgOiB1aW50MTZfdCB7CiAgICAgLCBUZXN0V2l0aG91dEF0dHJpYnV0ZXNfVG91
Y2hFdmVudAogICAgICwgSW5pdGlhbGl6ZUNvbm5lY3Rpb24KICAgICAsIExlZ2FjeVNlc3Npb25T
dGF0ZQorICAgICwgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZQorICAgICwgU2V0U3RyZWFtRGVz
dGluYXRpb25JRAogICAgICwgU3luY01lc3NhZ2VSZXBseQogICAgICwgVGVzdFdpdGhTdXBlcmNs
YXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseQogICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RB
c3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvblJlcGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbgpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mZDBmNTI4YzY5Y2RlZmRkYTljNDg2NzkxMzhjNjM4YjhhYzBjYjMyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI3IEBACisjIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVGVzdHMgU3RyZWFtIHJlY2VpdmVyIGF0dHJpYnV0ZS4K
K21lc3NhZ2VzIC0+IFRlc3RXaXRoU3RyZWFtIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKKyAgICB2
b2lkIFNlbmRTdHJpbmcoU3RyaW5nIHVybCkKKyAgICB2b2lkIFNlbmRTdHJpbmdTeW5jaHJvbml6
ZWQoU3RyaW5nIHVybCkgLT4gKGludDY0X3QgcmV0dXJuKQorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1C
dWZmZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE3MGFjODlhMjVmMDM5MjE5ZmU0MTgxMDVi
MmMxZDA0YWUwYzdlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwy
NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisj
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRlc3RzIFN0
cmVhbSByZWNlaXZlciBhdHRyaWJ1dGUuCittZXNzYWdlcyAtPiBUZXN0V2l0aFN0cmVhbUJ1ZmZl
ciAgeworICAgIHZvaWQgU2VuZFN0cmVhbUJ1ZmZlcihJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIgc3RyZWFtKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZVJlY2Vp
dmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jOWM5MjQwYTRlYjFhYjU1NzQwOTYwMjI5MWRjMTI3MzE5ODdm
MDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTAsMCArMSw0NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0
V2l0aFN0cmVhbUJ1ZmZlci5oIgorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhh
bmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisjaW5j
bHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordm9pZCBUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgYXV0
byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZm
ZXI6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RX
aXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdp
dGhTdHJlYW1CdWZmZXI6OnNlbmRTdHJlYW1CdWZmZXIpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rl
cik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTI0ZWJkZDIw
MGYzMzkwNDc3ZGZhZjdjZDg1NzE5MWJkNTNiMjg3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2Vz
LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNz
YWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXI7Cit9CisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVz
dFdpdGhTdHJlYW1CdWZmZXIgeworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1l
c3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6VGVz
dFdpdGhTdHJlYW1CdWZmZXI7Cit9CisKK2NsYXNzIFNlbmRTdHJlYW1CdWZmZXIgeworcHVibGlj
OgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgSVBDOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyBy
ZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXJfU2VuZFN0cmVhbUJ1
ZmZlcjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhw
bGljaXQgU2VuZFN0cmVhbUJ1ZmZlcihjb25zdCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIm
IHN0cmVhbSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhzdHJlYW0pCisgICAgeworICAgIH0KKwor
ICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJn
dW1lbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIKK30gLy8g
bmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNS
ZXBsaWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODdmYTJhZDdkNTA2MzAwZjNjY2IzOTBmMTk3MjU5ZDkwZTY5
M2YzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMuaApAQCAtMCwwICsxLDM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
ICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFt
ZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7
CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIgeworCisKK30gLy8gbmFtZXNwYWNlIFRl
c3RXaXRoU3RyZWFtQnVmZmVyCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VS
ZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Mzk4ODU1YWQ1NmU5NTE5OTdj
OWQyYWIzZjg4ODA5NGM4ODkyMzI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAg
LTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUZXN0V2l0aFN0cmVhbS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1
ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgVGVzdFdpdGhTdHJlYW06OmRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6bmFtZSgpKSB7
CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmc+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ6Om5hbWUoKSkg
eworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpT
ZW5kU3RyaW5nU3luY2hyb25pemVkPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFVOVVNF
RF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3Nh
Z2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGJmZWJhYjIzNzJjMWY2NjA1YzU1ODk0NTkzOGJmMWU0
ZTdhYWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVk
ZSAiVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2Ug
VGVzdFdpdGhTdHJlYW0geworCitzdGF0aWMgaW5saW5lIElQQzo6UmVjZWl2ZXJOYW1lIG1lc3Nh
Z2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6OlJlY2VpdmVyTmFtZTo6VGVzdFdp
dGhTdHJlYW07Cit9CisKK2NsYXNzIFNlbmRTdHJpbmcgeworcHVibGljOgorICAgIHVzaW5nIEFy
Z3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CisKKyAgICBzdGF0aWMgSVBDOjpN
ZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJl
YW1fU2VuZFN0cmluZzsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IGZhbHNlOwor
CisgICAgZXhwbGljaXQgU2VuZFN0cmluZyhjb25zdCBTdHJpbmcmIHVybCkKKyAgICAgICAgOiBt
X2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJn
dW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworY2xhc3MgU2Vu
ZFN0cmluZ1N5bmNocm9uaXplZCB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3Rk
Ojp0dXBsZTxjb25zdCBTdHJpbmcmPjsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5h
bWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5n
U3luY2hyb25pemVkOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gdHJ1ZTsKKwor
ICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxpbnQ2NF90Jj47CisgICAgdXNpbmcgUmVwbHlB
cmd1bWVudHMgPSBzdGQ6OnR1cGxlPGludDY0X3Q+OworICAgIGV4cGxpY2l0IFNlbmRTdHJpbmdT
eW5jaHJvbml6ZWQoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJs
KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRo
U3RyZWFtCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2Vz
UmVwbGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYzVhMDc4ZGUwMWVjMTQzMGY4OTRmMjBjYjljMmY5MTU1
ZTdjYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
ICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgi
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFt
ZXNwYWNlIFRlc3RXaXRoU3RyZWFtIHsKKworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVh
bQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGY5YmE1ZGM3ODI0YjFl
NWIwM2U1M2Y5OGI3YTdmOGU0ZGVmMjFjNjQuLjQ1ODkyNmYyNWJkNmQ1MTYyYTc1OWNlMGM3M2Y4
ZWExZWIxN2Q1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTUwLDYgKzE1MCwxMCBAQCBQbGF0Zm9ybS9J
UEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9NZXNzYWdl
U2VuZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBA
bm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcCBAbm8t
dW5pZnkKK1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkK
K1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBAbm8tdW5pZnkKK1BsYXRm
b3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9T
dHJpbmdSZWZlcmVuY2UuY3BwIEBuby11bmlmeQogCiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCBjMzMwNzgyNWIyMDA4NmRlZDRjODZjNjQ4
OGNlNWRkNTdlYzBjMzU4Li44OTUyMDhjM2JjMjI2ZDZmYjEyODYxZGE0MzdjZGEzODFmNDhkNjM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
RG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDMwMWQwZWQ4MzBkYmVkOTA4Y2JiMjc4ODZm
MDRhOGZlZWE5ZmQ4OWUuLjIzYWIxMGQ2M2E0ZjRhM2ZkMjBjZWQ0ZDczMDE3M2Y0NzVkYzdmNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNp
bmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2Uu
aCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZmQ4MzJjZGE4OGIxYjdlMzhiNWFlOTNmNGU0ODEzYjQxOWNlZTY0Ny4uNWY3MmNlMmExOGNm
MzhiY2FjMjIyYzAwMjhiNGUyNzdlMWMyNTNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzM1LDYgKzEzMzUsMTYgQEAKIAkJN0I0
ODNGMjAyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFDMjVDRERBOUIwMDEy
MDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi87IH07CiAJCTdCNDgzRjIxMjVDRERBOUMw
MDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBN
ZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLzsgfTsKIAkJN0I0ODNGMjIyNUNEREE5QzAwMTIw
NDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJl
Y2VpdmVRdWV1ZXMuaCAqLzsgfTsKKwkJN0I3MzEyM0EyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCNzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmggKi87IH07CisJCTdCNzMxMjNCMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlLmNwcCAqLzsgfTsKKwkJN0I3MzEyM0MyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNsaWVu
dENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCNzMxMjMzMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgg
Ki87IH07CisJCTdCNzMxMjNEMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
NzMxMjM0MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCAqLzsg
fTsKKwkJN0I3MzEyM0UyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMx
MjM1MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggKi87IH07
CisJCTdCNzMxMjNGMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM2
MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJ
N0I3MzEyNDAyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzcyNUND
ODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovOyB9OworCQk3Qjcz
MTI0MTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzgyNUNDODUyNDAw
M0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCAqLzsgfTsKKwkJN0I3MzEyNDIyNUND
ODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzOTI1Q0M4NTI1MDAzQjI3OTYg
LyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAqLzsgfTsKKwkJN0JBQjExMTAyNUREMDJCMzAw
OEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3
OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi87IH07CiAJCTdDMDY1RjJD
MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDY1RjJBMUM4
Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLzsg
fTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTcz
QjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxQkEzM0UxQTRBMEU2MDAwNDNFMjQ5
IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggKi87
IH07CkBAIC00NTQ0LDYgKzQ1NTQsMTUgQEAKIAkJN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8q
IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0
QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QjczMTIzMzI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1DbGllbnRD
b25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM0MjVDQzg1
MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNTI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCNzMxMjM2MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNsaWVudENvbm5lY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNzI1Q0M4NTI0MDAz
QjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzgyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzOTI1
Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjUyNTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0
MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjcyNTRBRkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NTEs
NiArNDU3MCw3IEBACiAJCTdCOTA0MTY5MjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTZBMjU0QUZFQTcwMDZF
RUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2
RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5l
cmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNH
ZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0JBQjExMEYyNUREMDJC
MjAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY1NzI1NzRGNjcyMDBFODVEOTgg
LyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2Vu
ZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NjgyNTc2ODBF
RjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTY5ODUsMTAgKzcwMDUsMjAgQEAKIAkJCQkxQTNFRUQwRDE2MUE1
MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggKi8sCiAJCQkJMUFBQjAzNzcxODVB
N0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuY3BwICovLAogCQkJCTFBQUIwMzc4MTg1QTdD
NkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmggKi8sCisJCQkJN0JBQjExMEYyNUREMDJCMjAw
OEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCAqLywKIAkJCQkyREMx
ODAwMUQ5MERERDE1RkM2OTkxQTkgLyogU2hhcmVkQnVmZmVyQ29weS5jcHAgKi8sCiAJCQkJNUND
NURCOTEyMTQ4OEUxNjAwNkNCOEE4IC8qIFNoYXJlZEJ1ZmZlckNvcHkuaCAqLywKIAkJCQkyREMx
ODU1RURCRkI4NTBCQTBCNkQwNkQgLyogU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgKi8s
CiAJCQkJMkRDMTg4MUFDQkNBQjVENTdDNUM2RUYwIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaCAqLywKKwkJCQk3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5jcHAgKi8sCisJCQkJN0I3MzEyMzMyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNs
aWVudENvbm5lY3Rpb24uaCAqLywKKwkJCQk3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi8sCisJCQkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLywKKwkJCQk3QjczMTIzOTI1Q0M4NTI1MDAz
QjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAqLywKKwkJCQk3QjczMTIzMjI1Q0M4
NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8sCisJCQkJN0I3
MzEyMzUyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAqLywK
KwkJCQk3QjczMTIzNzI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5j
cHAgKi8sCisJCQkJN0I3MzEyMzgyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaCAqLywKIAkJCQkxQUUwMEQ2OTE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJl
bmNlLmNwcCAqLywKIAkJCQkxQUUwMEQ2QTE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJl
bmNlLmggKi8sCiAJCQkpOwpAQCAtMTIwMTEsNiArMTIwNDEsNyBAQAogCQkJCUJDMkQwMjE3MTJB
QzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBQjRBOEQxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkFCMTExMDI1REQw
MkIzMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTRENTREMDQyMUYxRDcyRDAwN0UzQzM2IC8qIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMxQzFDMThD
NTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjA2MCw2
ICsxMjA5MSwxMSBAQAogCQkJCTkzNkIwNTk4MjMwMzkwOTcwMDJGQzA2QiAvKiBTdG9yYWdlTWFu
YWdlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM2OEVFREYyMzAzQTlFRDAwQkRCMTFBIC8q
IFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NUY0RTA2
MjMwQjJFOTUwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJN0I3MzEyM0MyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjNBMjVDQzg1MjUwMDNCMjc5NiAvKiBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTI0MjI1Q0M4
NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTdCNzMxMjNFMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTI0MTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENkMxODMyN0MxMjAw
MDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk2QkQ4NUQx
NTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTdGRDMxODYyMkIzNTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzg4Niw2ICsxMzkyMiwxMCBAQAogCQkJCTkzRDZCNzgy
MjU0Q0NDRjQwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTMzNERFRDE2REU4Rjg4MDA2QThFMzggLyogU3Rv
cmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM2OEVF
REUyMzAzQTkwMjAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjNGMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1D
bGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjNEMjVDQzg1MjUw
MDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTdCNzMxMjNCMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjQwMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzgzMjEyQjZBNzEw
MEY0OTNGRCAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3
NTEyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQxMUI3NTIyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5k
ZXggZjI5YmUwMDZlYjdiOTc2NGI3ODJkOTE2MjVjODAxNjBmZjhmMzZmMy4uYjE5YmMxZTBhMDE5
MDdmOWNlZGQ2MGE1NjU3NWZhZGY1YzlkODgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuY3BwCkBAIC00OCwxMyArNDgsMTYgQEAgUmVmUHRyPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShj
b25zdAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBh
dHRyaWJ1dGVzKSk7CiB9CiAKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1T
aXplID0gMSA8PCAyMTsKKwogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24sIGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cnMpCiAgICAgOiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShhdHRycykKICAgICAsIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oJmdwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgICwgbV9zdHJlYW1Db25uZWN0
aW9uKGdwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgZGVmYXVsdFN0cmVhbVNpemUp
CiB7CiAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uYWRkQ2xpZW50KCp0aGlzKTsKICAgICBncHVQ
cm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwot
ICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRycywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseSk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgbV9zdHJlYW1Db25uZWN0aW9uLnN0cmVhbUJ1ZmZlcigp
KSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkpOwogfQogCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSgpCkBAIC0xNjMsNyArMTY2LDcgQEAgR0NHTGVudW0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3IoKQogICAgIHJldHVybiBzdGQ6OmV4Y2hh
bmdlKG1fZXJyb3JXaGVuQ29udGV4dElzTG9zdCwgTk9fRVJST1IpOwogfQogCi12b2lkIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJp
bmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQor
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3Vj
Y2VlZCwgSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVu
c2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCiB7CiAgICAgaWYgKGlzQ29udGV4
dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTcyLDYgKzE3NSw3IEBAIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmlu
ZyYmIGF2YWlsYWJsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKCFtX2RpZElu
aXRpYWxpemUpOworICAgIG1fc3RyZWFtQ29ubmVjdGlvbi5zZXRXYWtlVXBTZW1hcGhvcmUoV1RG
TW92ZShzZW1hcGhvcmUpKTsKICAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOwogICAgIGluaXRp
YWxpemUoYXZhaWxhYmxlRXh0ZW5zaW9ucywgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDgzMWI0YjBhYjEzN2U2YWFm
ODM1OTZlMGIwYTA3NmRmMWUwOTE3NjEuLjc4OTdmNmNmZTgzY2VjNTVmZmEyZjYzYTk3NGZhYTdm
MDEzYWE5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0y
OSwxMCArMjksMTEgQEAKIAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSVBDU2VtYXBo
b3JlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSAiTWVzc2FnZVNl
bmRlci5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKKyNpbmNsdWRlICJTdHJlYW1DbGll
bnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaD4KQEAgLTMzNCwxOSArMzM1LDE4IEBAIHByb3Rl
Y3RlZDoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIHNlbmQoVCYmIG1lc3NhZ2UpCiAgICAgewotICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChX
VEZNb3ZlKG1lc3NhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgp
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25u
ZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIGRlZmF1bHRTZW5kVGltZW91dCk7CiAgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiAgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQg
c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCiAgICAgewot
ICAgICAgICByZXR1cm4gY29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdU
Rk1vdmUocmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9uLnNl
bmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKICAgICB9CiAgICAgSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ncHVQcm9jZXNzQ29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVj
ZWl2ZWQuCi0gICAgdm9pZCB3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZh
aWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgdm9p
ZCB3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUmJiwgU3RyaW5nJiYg
YXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CiAgICAg
dm9pZCB3YXNMb3N0KCk7CiAgICAgdm9pZCB3YXNDaGFuZ2VkKCk7CiAKQEAgLTM2MCw4ICszNjAs
OCBAQCBwcml2YXRlOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uOwogICAgIGJvb2wgbV9kaWRJbml0aWFsaXplIHsgZmFsc2UgfTsKICAgICBHQ0dMZW51
bSBtX2Vycm9yV2hlbkNvbnRleHRJc0xvc3QgPSBOT19FUlJPUjsKLQogICAgIEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciB7IEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbiBtX3N0cmVhbUNvbm5lY3Rpb247CiB9OwogCiAvLyBUaGUgR0NHTCB0eXBlcyBt
YXAgdG8gZm9sbG93aW5nIFdlYktpdCBJUEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYTdjNjQxMmFjOTQ2ZTI1OGNlMDEzOGJj
NDdiYzM4NjIxOTUwMjFkNy4uZjQzZWMwYTJlYWEzODRlNGVkZThkZDQ0MGQ5ZWZlMDI4YWNiN2Jm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNz
YWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKFdFQkdMKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5v
dFJlZkNvdW50ZWQgewotICAgIHZvaWQgV2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmlu
ZyBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zKQorICAg
IHZvaWQgV2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlIHN0cmVhbVdh
a2VVcFNlbWFwaG9yZSwgU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0
YWJsZUV4dGVuc2lvbnMpCiAgICAgdm9pZCBXYXNMb3N0KCkKICAgICB2b2lkIFdhc0NoYW5nZWQo
KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5kZXggN2Fh
ZDdkYTIwNzBkZTgzZDE0YzcxZGQ5ODI0NzRhYWYxMDZhN2RiNS4uZjEzNDFkY2QyNzZkMGMxMDFl
NDRiZGRhMTdjZTQwYjhhM2NiMzYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaAppbmRleCBlNGNjY2YwZGM1N2VjODRlYTZl
YzRkYTk4MzRjY2NjNGE1YTUxOTczLi44OThlMjBkMTc1NDRiMjhhOTRjY2Y0NjM2OGQ0ZGUyZmY1
ZTJjMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDTmV0d29yay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Nv
Y2tldEZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJNRE5TUmVnaXN0ZXIuaCIKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1ZWI5ZjE5YjhmNDJlYWYy
YzEzNmZjOWJjZGE5N2FmOWVmYzI2ZDYzLi44NDA0MjQwMjgyNGFmYjU2M2Q0Y2E3NDM3Y2E0MGQ0
NThmZTI5OGE4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDItMDUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBHUFUgcHJvY2VzcyBJUEMgc2hvdWxkIHVz
ZSBzaGFyZWQgbWVtb3J5IGZvciBhc3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNzIzNDA2NTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTWFyayBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBtZXNzYWdlIHJlY2VpdmVy
IGFzICJTdHJlYW0iLAorICAgICAgICBhIG5ldyB2YXJpYW50IG9mIHJlY2VpdmVyLgorCisgICAg
ICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgorCiAyMDIxLTAyLTE4ICBBbnRvaW5l
IFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFBhZ2UgdXBkYXRlcyBhbmQg
ckFGIGNhbGxiYWNrcyBzaG91bGQgcnVuIGF0IGEgZnJlcXVlbmN5IGNsb3NlIHRvIDYwSHogb24g
aGlnaCByZWZyZXNoLXJhdGUgZGlzcGxheXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRl
eCA1Njg1ZTkwNzUzNTNmZDFkMmNlYTk0NjIwNmI1N2U0OGI0MjY2M2ZkLi44MzQ2MjgyMzQwMWMx
NjgzMDcyMmFlYjM1NDVlY2ZlZWZiNjRhODgzIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dl
bmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmds
CkBAIC04OSw3ICs4OSw3IEBAIGNvbnRleHRfbWVzc2FnZXNfdGVtcGxhdGUgPSAoCiAgICAgdGVt
cGxhdGVfcHJlYW1ibGUKICAgICArICIiIiNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShXRUJHTCkKIAotbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291
bnRlZCB7eworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRl
ZCBTdHJlYW0ge3sKICAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWln
aHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+
IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWJiZjdh
ZTkzOGI5NTIzZjIyM2FmYmI4NzZmODVlOWNlZThkNDA2Ni4uYzVjYjBiZWE0YmI4MzkzZjgzMDli
NGZlNWFiZTA1ZWEwNDM5NGFhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTE3ICBL
aW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BV
IHByb2Nlc3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1l
c3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTk2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hcmsgZmV3IHRlc3RzIGFzIG5vdCB0
aW1pbmcgb3V0IG5vdyB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3Qgc28gc2xvdy4KKwor
ICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDItMTggIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJvb3Qgc2Ny
b2xsIHNuYXBwaW5nIGJyb2tlbiB3aGVuIG92ZXJmbG93OnNjcm9sbCBpcyBzZXQgb24gdGhlIDxi
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggM2I5MGMy
YWJhYzFhZmUzNWRmODY0YTRhYmI5M2FiYjAwMjkwZmFhNC4uZjNhZjkzYzU5NmM3ZDNhMDFkZDcy
OTFjOTA0YmQyZDAwZWY5ODBkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3Mv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0
YXRpb25zCkBAIC0zNCw3ICszNCw3IEBAIGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQtbXNl
LWZsaXBZLXRydWUuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1hZ2Uy
RC12aWRlby1mbGlwWS1mYWxzZS5odG1sIFsgVGltZW91dCBdCiBmYXN0L2NhbnZhcy93ZWJnbC90
ZXhJbWFnZTJELXZpZGVvLWZsaXBZLXRydWUuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9jYW52YXMv
d2ViZ2wvdGV4dHVyZS1hY3RpdmUtYmluZC5odG1sIFsgRmFpbHVyZSBdCi1mYXN0L2NhbnZhcy93
ZWJnbC91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFRpbWVvdXQgXQorZmFzdC9jYW52YXMv
d2ViZ2wvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBTbG93IF0KIGZhc3QvY2FudmFzL3dl
YmdsL3dlYmdsY29udGV4dGNoYW5nZWRldmVudC5odG1sIFsgVGltZW91dCBdCiAKIGZhc3QvZG9t
L25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC5odG1sIFsgRmFpbHVyZSBdCkBAIC0yMzAsNyAr
MjMwLDYgQEAgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1m
bG9hdC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9h
dC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9l
eHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVy
ZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0
bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3N0YXRlL2dsLW9iamVjdC1n
ZXQtY2FsbHMuaHRtbCBbIFRpbWVvdXQgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvZ2wtcGl4ZWxzdG9yZWkuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFu
Y2UvdGV4dHVyZXMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMtcmdiNTY1
Lmh0bWwgWyBGYWlsdXJlIF0KQEAgLTI0OSw3ICsyNDgsNyBAQCB3ZWJnbC8xLjAuMy9jb25mb3Jt
YW5jZS90ZXh0dXJlcy90ZXgtaW1hZ2Utd2ViZ2wuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4w
LjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4cGFyYW1ldGVyLXRlc3QuaHRtbCBbIEZhaWx1cmUg
XQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1hY3RpdmUtYmluZC0y
Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1
cmUtYWN0aXZlLWJpbmQuaHRtbCBbIEZhaWx1cmUgXQotd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uv
dW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBUaW1lb3V0IF0KK3dlYmdsLzEu
MC4zL2NvbmZvcm1hbmNlL3VuaWZvcm1zL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgU2xv
dyBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9jYW52YXMvY2FudmFzLXRlc3QuaHRtbCBbIEZh
aWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvY2FudmFzL2RyYXctc3RhdGljLXdlYmds
LXRvLW11bHRpcGxlLWNhbnZhcy10ZXN0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlL2NhbnZhcy9kcmF3LXdlYmdsLXRvLWNhbnZhcy10ZXN0Lmh0bWwgWyBGYWlsdXJl
IF0KQEAgLTI2MSw3ICsyNjAsNiBAQCB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9leHRlbnNpb25z
L29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4w
LjAvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgtY2Fu
dmFzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
b2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmds
LzIuMC4wL2NvbmZvcm1hbmNlL3JlYWRpbmcvcmVhZC1waXhlbHMtdGVzdC5odG1sIFsgRmFpbHVy
ZSBdCi13ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9yZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0
bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3N0YXRlL2dsLW9iamVjdC1n
ZXQtY2FsbHMuaHRtbCBbIFRpbWVvdXQgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvY2FudmFzL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBbIEZhaWx1cmUgXQog
d2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2ItcmdiLXVu
c2lnbmVkX3Nob3J0XzVfNl81Lmh0bWwgWyBGYWlsdXJlIF0KQEAgLTI4Nyw3ICsyODUsNyBAQCB3
ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJkLXJnYi1y
Z2ItdW5zaWduZWRfc2hvcnRfNV82Xwogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMv
d2ViZ2xfY2FudmFzL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfYnl0ZS5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJk
LXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF80XzRfNF80Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmds
LzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2Jh
LXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBbIEZhaWx1cmUgXQotd2ViZ2wvMi4wLjAvY29u
Zm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBUaW1lb3V0IF0K
K3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3VuaWZvcm1zL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5o
dG1sIFsgU2xvdyBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvcmVhZGluZy9yZWFkLXBpeGVs
cy1wYWNrLXBhcmFtZXRlcnMuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFu
Y2UyL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbCBbIFRpbWVvdXQgXQogd2ViZ2wvMi4w
LjAvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdi
LWZsb2F0Lmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420941</attachid>
            <date>2021-02-19 01:40:35 -0800</date>
            <delta_ts>2021-02-19 04:41:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210219114032.patch</filename>
            <type>text/plain</type>
            <size>166588</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMxNzMxMWZjZmI1MjYyMTlh
Y2Y4YTYxMzZlMTAzYzlmMTAzNDlkOTUuLmQ5ZjY4OWIxYTMxMWFhMzA3NWI5MWI2YmViNjQyYTJh
NmRmZTBiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNz
YWdlIGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFu
ZCBidWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2Fn
ZXMKKyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRo
ZW4gcGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBp
bXBsZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBz
ZW1pLWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci4gVGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJl
YW0gY29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1l
c3NhZ2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJv
dWdoIG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAg
ICAgICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZl
ciBhbmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVj
dGlvbi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3lt
bWV0cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2Vz
IGFuZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJl
Y2VpdmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNl
aXZlZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAg
cHJvY2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVu
dGx5IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hy
b25vdXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQg
dGhyb3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhh
dmluZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAg
IGluIHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0
IGluIGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBv
bmUgMm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJl
IHdpbGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24K
KyAgICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFy
IHRocmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJv
cHRpbWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAg
cHJvY2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2Ug
dG8gaGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGlj
aXBhdGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8g
c2FtZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1p
emF0aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFz
IHBhcnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAg
IEluIEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sg
cXVldWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQg
d2lsbCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24g
cGVyIGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAg
ICBTZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRp
b24gd2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYg
dGhlIG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUg
aXQgdGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91
dCBvZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9u
IGFycml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAg
ICBtZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2ls
bCBzdG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxs
IGNvbnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4g
cHJvY2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0
cmVhbSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1l
c3NhZ2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMg
c2VuZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0g
Y29ubmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9y
ZS4gVGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlz
IHdhaXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6
CisgICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAg
cG9pbnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAg
IC0gV2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2gg
fjYwZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxp
emUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVl
VW5pbml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4g
dGhlIHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0
aW9ucyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1
ZXVlSW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpzZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVl
dWVJbml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVz
ZSBtdWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0
aGUgSVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmls
aXR5IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xp
ZW50LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBD
OjpEZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6
CisgICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L0RlY29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNv
bnN0cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZm
ZXIuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAo
SVBDOjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNw
ZWNpZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFy
ZSB1bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRo
cm91Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAg
ICAgVGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBp
cyByZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2Fz
ZSB3aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRo
ZSBzdHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBD
OjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAg
ICAgICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2Fr
ZXVwIHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNl
bWFwaG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24u
IEFsbCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2
ZSB0aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhl
eSBoYXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2Vu
ZFN5bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVz
dGluYXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rp
b246OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dCBjb25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0
YSB0aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVN
ZW1vcnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToK
KyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAg
ICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAo
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0
aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZl
ci4KKyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90
aCB0aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4K
KyAgICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1
cCwgdGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFs
bCB0aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAi
aG9sZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBv
ZiAiYnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAg
ICAgIGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRk
ZWQuCisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBj
b250YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAg
ICAgRm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBw
cm9jZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUg
b2YgdGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwg
c2xlZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3
aWxsIHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdp
bGwgd2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKwor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
YXJ0UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6Cisg
ICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9m
ZnNldCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXpl
IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRT
eW5jUmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
cyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9j
ZXNzU2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1l
c3NhZ2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUg
bWVzc2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRo
ZSBidWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRo
YXQgdGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1h
bCBJUEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3Nh
Z2UgdW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdT
dHJlYW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFz
CisgICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJl
Y2VpdmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxs
IG1lc3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1l
c3NhZ2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAg
ICAgIGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUg
c3RyZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJ
UEMgbWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNz
ZWQuCisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0
aW9uSUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJl
YW0gbWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAg
ICAgIHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJl
YW1EZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1l
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVk
LgorICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0
cmVhbUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZm
ZXI6OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29u
c3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6Cisg
ICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAg
ICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToK
KyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRz
IGNvbnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5
bmNocm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNl
bmRTdHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAo
TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVu
dHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
TWVzc2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToK
KyAgICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0
IG9mIHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6
On5TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFz
ZSk6CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVs
ZCBzaW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0x
NyAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dHVybiBjb3JyZWN0IHRhcmdldCBmb3IgQXBwIEhpZ2hsaWdodCBtZW51cy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApp
bmRleCBkNTc3ZTQzNDk5ZjE4MTQ3OTFjOGEwZWY3MWNiMzRhMDI0YTFmYWUyLi5kYjc3MjM4MTQ0
Y2E4YTMwZmY2ZWFjOWY4MmY1YzQ5ZGNkMjFiMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMTUsNyAr
MzE1LDcgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmltYWdlRGVjb2RlckFWRlByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQog
ewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3Vy
ZShpZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRXcmFwcGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRo
aXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7Cisg
ICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVz
dW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zMjYsMjEgKzMyNiwxMSBA
QCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5k
KFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5k
KTsKIH0KIAotR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFdyYXBwZXI6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kPiYmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQoV1RGTW92ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLT5kaXNjb25uZWN0KCk7Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQordm9pZCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXImJiBzdHJlYW0pCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAg
ICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywg
KnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgICAgIHJldHVybiBJUEM6
OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkgfTsKICAgICB9KTsKICAgICBBU1NFUlRfVU5VU0VE
KGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWJiMGQw
MDhmM2Q3MTI5MjE3YjhlOTZlZmExOWJkNTFmZmFmYTE2Ny4uZDAyZTk3ODc3NTdjZDZmYzQ1YTlm
OTg5NmU1YjExODdmOTViN2JlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiUmVtb3RlQXVkaW9TZXNzaW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbW90
ZUNvbW1hbmRMaXN0ZW5lcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUu
aCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGliV2ViUlRDRW51bVRyYWl0cy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTm93UGxheWluZ01hbmFnZXIuaD4KQEAgLTEzOCw3ICsxMzksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIpOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250
ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIHZvaWQgcmVsZWFzZUdy
YXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAjZW5kaWYKIApA
QCAtMjA2LDIwICsyMDcsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWxsb3dzRGlzcGxheUNh
cHR1cmUgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlciB7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1Ymxp
YzoKLSAgICAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVmPFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ+JiYpOwotICAgICAgICB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIo
KTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKKyAgICB1c2luZyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciwgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ+PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1hcDsKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMPj47CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGlj
c0NvbnRleHRHTE1hcDsKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDMwZjVjMjk4ODYyMTRmOTEwNGYxYWZhMDgzNWIy
MzhhMzZkYzZlZjEuLmY2MzBiMWJhZmUwZDJjMmVjNDAwMzdkOWE3YTdjNzIzZDI1OTk5YzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZv
aWQgQ3JlYXRlUmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyIGlkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KQogICAgIHZvaWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VC
R0wpCi0gICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKKyAgICB2b2lkIENy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIg
c3RyZWFtKQogICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNlbmRp
ZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNw
cAppbmRleCA3OWIzNDU5NmZiZjJkMGRmYzk4MTg2NTFiZGNmZWI0YjBhMGM4NzVkLi4xZDJmZWU3
ZmUxNTE3ZGY3MTAwNzg5N2EwNTc1M2EwZGFmYzMwYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5jcHAKQEAgLTMxLDU1ICszMSw3OSBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
Ci0KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBvbmUg
Z2xvYmFsIFdlYkdMIHByb2Nlc3NpbmcgaW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlJiByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZT4gaW5zdGFuY2UoIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsKKyAg
ICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1zdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKQorUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYo
Km5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3Rh
bmNlLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5j
ZTsKIH0KICNlbmRpZgogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBSZWY8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQpCi0gICAgOiBtX2NvbnRl
eHQoV1RGTW92ZShjb250ZXh0KSkKLSAgICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyht
YWtlV2Vha1B0cihncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSkKK1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIm
JiBzdHJlYW0pCisgICAgOiBtX3N0cmVhbUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY29ubmVjdGlvbigpLCBXVEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkpKQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgp
KQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2
NCgpLCAqdGhpcyk7Ci0gICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwotICAgIFN0cmlu
ZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVY
VEVOU0lPTlMpOwotICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQt
PmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0
ZWQodHJ1ZSwgZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAK
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQogewot
ICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5t
ZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVCghbV9zdHJlYW1Db25uZWN0
aW9uKTsKKyAgICBBU1NFUlQoIW1fY29udGV4dCk7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmli
dXRlcykKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkuZGlzcGF0Y2goW2F0dHJpYnV0ZXMgPSBXVEZN
b3ZlKGF0dHJpYnV0ZXMpLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJs
ZSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtRdWV1ZUluaXRpYWxpemUoV1RGTW92ZShh
dHRyaWJ1dGVzKSk7CisgICAgfSk7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uLT5zdGFydFJlY2Vp
dmluZ01lc3NhZ2VzKCp0aGlzLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50
NjQoKSk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3ZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OnN0b3BMaXN0ZW5pbmdGb3JJUEMoUmVmPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKQogewotICAgIHJldHVybiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuZ2V0KCk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAg
ICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVm
RnJvbUNvbm5lY3Rpb24pXSgpIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlVW5p
bml0aWFsaXplKCk7CisgICAgfSk7CiB9CiAKLUlQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3ZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKLSAgICBpZiAoYXV0byogZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkK
LSAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdU
Rk1vdmUoYXR0cmlidXRlcykpOworICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250
ZXh0LT5hZGRDbGllbnQoKnRoaXMpOworICAgICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29u
dGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICAgICAg
U3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVu
c2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSwg
ZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSk7CisgICAgfSBlbHNlCisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQo
ZmFsc2UsIElQQzo6U2VtYXBob3JlIHsgfSwgIiIsICIiKSk7CiB9CiAKLXVpbnQ2NF90IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVVbmluaXRpYWxpemUoKQogewot
ICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworICAg
IG1fY29udGV4dCA9IG51bGxwdHI7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsK
IH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKQEAgLTg4
LDcgKzExMiw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgp
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3Qo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKQEAgLTk4LDcgKzEyMiw3IEBAIHZv
aWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKIAogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2Fz
Q2hhbmdlZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpKTsKIH0KIAog
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQz
Ml90IGhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggMDAxNTlhYzhiNTg2YThiNjJh
M2RkYTNhNTcwMDRlODgzZTE1NmQwOC4uNTJlNDc2OTEwYTRlYWQwMDM5Y2UwYzFhYTU1ZTRmNDQ2
YTA0OTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLQorI2luY2x1ZGUgIlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CkBAIC00OSwzMSArNDgsMjEgQEAgY2xhc3MgTWFjaFNlbmRSaWdo
dDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7Ci0KIC8vIEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZl
cyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyBy
ZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdl
cy4KIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5n
IFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KLWNsYXNzIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMCi0gICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRl
IElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpDbGllbnQgeworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+LCBwcml2YXRlIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0woKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJUEMo
UmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiYmIHJlZkZyb21Db25uZWN0aW9uKTsKIAotICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBj
b25zdDsKKyAgICAvLyBJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w+IHRlbXBsYXRlIGNvbnRyYWN0IGltcGxlbWVudGF0aW9uLgorICAgIHZvaWQgZGlk
UmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQ
Qzo6RGVjb2RlciYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIg
b3ZlcnJpZGVzLgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdCBmaW5hbDsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0IGZpbmFsOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgot
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsK
KyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIm
Jik7CisgICAgdm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmKTsKIAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgog
ICAgIHZvaWQgZGlkQ29tcG9zaXRlKCkgZmluYWw7CkBAIC05NSw4ICs4NCwxNCBAQCBwcm90ZWN0
ZWQ6CiAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRl
ZC5oIiAvLyBOT0xJTlQKIAotICAgIFJlZjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TD4gbV9jb250ZXh0OwotICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIHZvaWQgd29ya1F1ZXVlSW5pdGlhbGl6ZShX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJik7CisgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmJikgeyB9OworICAgIHZvaWQgd29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2UpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNz
YWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOyB9CisKKyAgICBSZWZQdHI8SVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj4gbV9zdHJl
YW1Db25uZWN0aW9uOworICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TD4gbV9jb250ZXh0OwogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbgppbmRleCA3YTE5MjVkYmIyN2FiZjNkMzAzNGNiN2ZjYjM4YTNmMzkzZTNkY2Zh
Li40NzAyYzY0Zjc1ZTQ3NmNmZjFhMTAwMDUwNzU1MDk2YmRjZTc4OTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAvLyBUaGlz
IGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0Lgog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2VzIC0+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFJlc2hh
cGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZm
ZXIpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXgg
OGUyZDFmYzY1MTg2MjgzOTVlOTc0MWM0NGU3YWM4NTFiMDhlZjYyNy4uYzRlNDExMjYxOTViMzUy
OThhZWFmMmZjYWVmMjBhZGZiNDMxZDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hLmNwcApAQCAtMzksMTAgKzM5LDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wsIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJT1N1cmZhY2VTd2FwQ2hhaW4g
ewogcHVibGljOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xDb2NvYShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EoKSBmaW5hbCA9IGRlZmF1bHQ7CiAKICAgICAvLyBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBvdmVycmlkZXMuCisgICAgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUlu
aXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIGZpbmFsOwog
ICAgIHZvaWQgcHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1h
Y2hTZW5kUmlnaHQmJik+JiYpIGZpbmFsOwogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4gb3ZlcnJpZGVzLgpAQCAtNTYsMTYgKzU3LDIzIEBAIHByaXZhdGU6CiAK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllcikKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1
dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4obmV3IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMQ29jb2EoYXR0cmlidXRlcywgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKSk7CisgICAgYXV0byBpbnN0YW5jZSA9IGFkb3B0
UmVmKCpuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdURk1vdmUoc3RyZWFtKSkpOwor
ICAgIGluc3RhbmNlLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVy
biBpbnN0YW5jZTsKIH0KIAotUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24s
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIDogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRpZmllciwgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmlidXRlcywgdGhpcykp
CitSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENv
Y29hKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Ms
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgV1RGTW92ZShzdHJlYW0pKQogewogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMQ29jb2E6OnBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQoreworICAgIG1fY29udGV4dCA9
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKFdURk1vdmUoYXR0
cmlidXRlcyksIHRoaXMpOworfQorCiBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFp
bjo6QnVmZmVyIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnJlY3ljbGVCdWZmZXIoKQog
ewogICAgIHJldHVybiBXVEZNb3ZlKG1fZGlzcGxheUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKaW5kZXggMmM3NjI1MTg2YWVlMTVkNzcyYjc2NGJkZDU1OWYwYTFjMjcwYmQ0MS4uNjIx
MmVhMDRlOWQ4ZThlMGMxODZlMTEyYTBiMzgwNzRjNWIxNDgwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcApAQCAtODMsNyArODMsNyBAQCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp+UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCgpCiAgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtyZW1vdGVSZXNv
dXJjZUNhY2hlID0gV1RGTW92ZShtX3JlbW90ZVJlc291cmNlQ2FjaGUpXSB7IH0pOwogfQogCi12
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpc2Nvbm5lY3QoKQordm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBiN2FlZTI2Mjc3MDViYjlh
Y2MxMDE5ZDcxNTVlZjI3ZTE1M2QyYjI4Li5hNGFhN2I0Nzg3NTVhOWJiNWUyOTNmZDFiYzgyOGNj
ZGZlMjQ5NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBjcmVhdGUoR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlNl
bWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKTsKICAgICB2aXJ0dWFsIH5SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kKCk7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKCk7CiAK
ICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4g
bV9yZW1vdGVSZXNvdXJjZUNhY2hlOyB9CiAKQEAgLTc4LDggKzc5LDYgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbik7CiAKLSAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKLQogcHJpdmF0ZToKICAgICBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgK
aW5kZXggYTkxZjliZTFmYjliNTk4MzRkMWE5MmY2MTFkY2I0NjZiYmJlNzFkZC4uNTJjYzVkYTEy
MWEyZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2NTVjMGNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNp
bmNsdWRlICJOZXR3b3JrTG9hZENsaWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAppbmRleCBiN2JjYTdj
NDg2OTU4MDIyOTRiZjk0YWVmMDc0MGNmNzBlM2Y2MmFmLi42MjNhNTJhNDVhNGZhODVkYzEyZDQ4
YTk1ZTU2ZWM2Zjk2MmQ5ZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApAQCAtMjgsNiArMjgsNyBAQAog
I2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIk5ldHdvcmtSVENNb25pdG9yLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29yay5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IDMyMDc2
YWZkMDJhODk4YTFlMzlkZTI4M2UxMDJiODU5NDdmOGVkYzcuLjUzMzUwZjlmN2M4YzEyYmU2Mjc1
OTk5YzdlYmZjM2M3ZTA5MWJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNp
bmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC03NSw2ICs3Niw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIg
ewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBUIHZhbHVlKQogICAgIHsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQp
LCBhbGlnbm9mKFQpKTsKQEAgLTkxLDYgKzkzLDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtX3Y8VD4+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2
YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPFQ+KFdURjo6ZW51
bVRvVW5kZXJseWluZ1R5cGU8VD4odmFsdWUpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVycy5jcHAKaW5kZXggYjBhNDNkZTlkN2ExMzcyMTZhMTliZjdkMGJk
NWUxOTExM2I1ZGE2OC4uYWVlODllNjI2OTZjNTYwZjBhMThiZmIxZDY3NjkxNjUwZTdmZjJhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAKICNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTExMSw3ICsxMTIsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVu
dENvZGVyPENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ1N0cmluZwogICAgIHJl
dHVybiB0cnVlOwogfQogCi0KK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogewogICAgIC8vIFNwZWNpYWwgY2FzZSB0aGUgbnVsbCBzdHJpbmcuCkBAIC0xMzAs
NiArMTMxLDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgZWxzZQogICAgICAgICBlbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
dHJpbmcuY2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBhbGlnbm9mKFVD
aGFyKSk7CiB9Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxF
bmNvZGVyPihFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVu
dENvZGVyPFN0cmluZz46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29u
bmVjdGlvbkVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5n
VGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCAyMGViMTdhMGZkODI2MGQ0MGJlYzdm
Y2RhYWVhMjNiYzVlODY1ZTA5Li5mODU2OTgwNzNkZDA0NWIyODE2ZTE2MTBjYTQ5OTZhNWQ0ZWU2
YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAg
LTU1LDYgKzU1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50
Q29kZXIgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJyYXlS
ZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50PjsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQogICAgIHsKICAgICAg
ICAgaWYgKCFFeHRlbnQpCkBAIC03NCw2ICs3NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVu
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJl
bmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4+IHsKICAgICB1c2luZyBBcnJheVJl
ZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRl
bnQ+OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZl
cmVuY2UpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihh
cnJheVJlZmVyZW5jZS5zaXplKCkpOwpAQCAtMjY2LDYgKzI2OCw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6cGFpcjxULCBVPj4g
ewogCiB0ZW1wbGF0ZTxzaXplX3QgaW5kZXgsIHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0
IFR1cGxlRW5jb2RlciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50
cy4uLj4mIHR1cGxlKQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxzaXplb2Yu
Li4oRWxlbWVudHMpIC0gaW5kZXg+KHR1cGxlKTsKQEAgLTI3NSw2ICsyNzgsNyBAQCBzdHJ1Y3Qg
VHVwbGVFbmNvZGVyIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+CiBzdHJ1Y3Qg
VHVwbGVFbmNvZGVyPDAsIEVsZW1lbnRzLi4uPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IHN0ZDo6dHVwbGU8
RWxlbWVudHMuLi4+JikKICAgICB7CiAgICAgfQpAQCAtMzM4LDYgKzM0Miw3IEBAIHN0cnVjdCBU
dXBsZURlY29kZXI8MD4gewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+IHN0
cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+PiB7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4mIHR1cGxlKQogICAgIHsKICAgICAg
ICAgVHVwbGVFbmNvZGVyPHNpemVvZi4uLihFbGVtZW50cyksIEVsZW1lbnRzLi4uPjo6ZW5jb2Rl
KGVuY29kZXIsIHR1cGxlKTsKQEAgLTM3NCw2ICszNzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXlUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6S2V5
VmFsdQogdGVtcGxhdGU8Ym9vbCBmaXhlZFNpemVFbGVtZW50cywgdHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBh
Y2l0eT4gc3RydWN0IFZlY3RvckFyZ3VtZW50Q29kZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qg
bWluQ2FwYWNpdHk+IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyPGZhbHNlLCBULCBpbmxpbmVD
YXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBh
Y2l0eT4mIHZlY3RvcikKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHZlY3Rvci5zaXplKCkpOwpAQCAtNDExLDYgKzQxNyw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBz
aXplX3QgbWluCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PiBzdHJ1Y3Qg
VmVjdG9yQXJndW1lbnRDb2Rlcjx0cnVlLCBULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyLCBtaW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mIHZlY3RvcikKICAgICB7
CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZlY3Rvci5zaXplKCkp
OwpAQCAtNzUzLDYgKzc2MCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Q1N0
cmluZz4gewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTdHJpbmc+IHsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShEZWNvZGVyJiwgU3RyaW5nJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFN0cmlu
Zz4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5jcHAKaW5kZXggOGI3NDMxNGFjMDRhNTVhNDhiZDA5MzYyOWMzNjIyMDcxZTBmMmM1MC4uMWQy
ZWE0ODVhOTk4YWUyNjQ0NmEzYWU2MDBlMDRmMzBjYThlMWQ1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENv
ZGVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVzLmgiCkBAIC05MzAsOCArOTMxLDEzIEBAIHZv
aWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogCiB2
b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VO
YW1lIG1lc3NhZ2VOYW1lKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KKyAg
ICBpZiAoIVJ1bkxvb3A6OmlzTWFpbigpKSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlTmFtZV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+aXNWYWxpZCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fY2xpZW50LmRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShwcm90ZWN0ZWRUaGlzLCBtZXNzYWdlTmFtZSk7CisgICAg
ICAgIH0pOworICAgIH0KICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggNDg1NTIwMTI0N2MyNWRm
ODU1MmM1YTU0YTA0Njc3YjhkNzJiODJjYS4uZmU5Y2EzMTg2MDZmZGVkYzYxZDIxZDA3ZGYwZjhh
YjFiZmU5M2JkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAt
MzAsMTAgKzMwLDkgQEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVy
LmgiCi0jaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
UXVldWVNYXAuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlIDxhdG9t
aWM+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Nv
bmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CkBAIC0zMTIsNiArMzExLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGRpc3Bh
dGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShNZXNzYWdlUmVjZWl2ZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4mJik7CisgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisg
ICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSk7CiBw
cml2YXRlOgogICAgIENvbm5lY3Rpb24oSWRlbnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50
Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoSWRlbnRpZmllcik7CkBAIC0zMzksNyAr
MzQwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2Rlcj4pOwogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKERlY29kZXImKTsKICAgICB2
b2lkIGRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUpOwogICAgIHZvaWQgZGlkRmFpbFRvU2Vu
ZFN5bmNNZXNzYWdlKCk7CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IDgwYTBmNzVjNzA1NzJiZjRj
MjQ4NTI2ZmVkMmZlZmIwOTdjZGM4ZjkuLjRkZTA1MDk4YzQ2MzJhZDQ1ZjRlODUzZjY3ZTllZTNl
NzcxMzZkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC05MCw2
ICs5MCwxNyBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90
IGJ1ZmZlclNpemUsIENvbnN0cnVjdFdpdGhvdXRIZWFkZQogICAgICAgICBtYXJrSW52YWxpZCgp
OwogfQogCitEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0
cmVhbVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCisgICAgOiBtX2J1ZmZlciB7IHN0cmVh
bSB9CisgICAgLCBtX2J1ZmZlclBvcyB7IG1fYnVmZmVyIH0KKyAgICAsIG1fYnVmZmVyRW5kIHsg
bV9idWZmZXIgKyBzdHJlYW1TaXplIH0KKyAgICAsIG1fYnVmZmVyRGVhbGxvY2F0b3IoW10gKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpIHsgfSkKKyAgICAsIG1fZGVzdGluYXRpb25JRChkZXN0aW5h
dGlvbklEKQoreworICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZU5hbWUpKQorICAgICAgICByZXR1
cm47Cit9CisKIERlY29kZXI6On5EZWNvZGVyKCkKIHsKICAgICBBU1NFUlQobV9idWZmZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IDY2OTg1YmMzODdkNzQzOTEzNzAx
YjExN2I5MTgwMGI5YTI3NzFhYjguLmIzYzZhYzhhMmQ1YWNiYTJjMjE1MjhkZmViMThjNjQxNWNl
ZGQyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAgLTUxLDYgKzUxLDcg
QEAgY2xhc3MgRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwg
dm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9y
PEF0dGFjaG1lbnQ+JiYpOwogICAgIGV4cGxpY2l0IERlY29kZXIoY29uc3QgdWludDhfdCogYnVm
ZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOworICAgIERlY29kZXIoY29u
c3QgdWludDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCk7CiAgICAgfkRlY29kZXIoKTsKIAogICAgIERlY29kZXIoY29uc3QgRGVjb2RlciYpID0g
ZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVz
c2FnZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4
IGVhOGFkNDVjMDllYjY4MmUwZTg2MjNiOTM0ZDVlMGU5YzcwMjYyMmEuLjkyOTYzZTIxZTFkNzE3
ZjY0YTgyMTljNTI4OWJhZjA1M2YwOTk0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9IYW5kbGVNZXNzYWdlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbVNl
cnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTE2NCw2ICsxNjUsMjggQEAgdm9pZCBo
YW5kbGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgRGVjb2RlciYgZGUKICAgICBjYWxsTWVtYmVyRnVuY3Rpb24oY29ubmVjdGlvbiwgV1RG
TW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVu
Y3Rpb24pOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBN
Rj4KK3ZvaWQgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9u
KQoreworICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3luY1JlcXVlc3RJRCkgfHwgIXN5bmNSZXF1ZXN0SUQpIHsKKyAgICAgICAgZGVjb2Rl
ci5tYXJrSW52YWxpZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgT3B0aW9uYWw8
dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVu
dHM7CisgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAg
ICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW3N5bmNSZXF1
ZXN0SUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3Mp
IG11dGFibGUgeworICAgICAgICBjb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KHN5bmNSZXF1ZXN0
SUQsIGFyZ3MuLi4pOworICAgIH07CisgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFy
Z3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CiB2b2lk
IGhhbmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNv
ZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmUzYTA1NmEwMjAxYzJhZDBlNzQ5MGVjN2Q3ZmViYmRkNzcxMDk3YjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBJUEMgewor
CisvLyBTY29wZWQgaG9sZGVyIGZvciBvYmplY3RzIHRoYXQgaGF2ZSBhY3RpdmUgbWVzc2FnZSBy
ZWNlaXZlIHF1ZXVlcy4gRW5mb3JjZXMgdGhhdAorLy8gb25jZSBob2xkZXIgc3RvcHMgaG9sZGlu
ZyB0aGUgb2JqZWN0LCB0aGUgbWVzc2FnZSBxdWV1ZSBzaG91bGQgYmUgcmVtb3ZlZC4KKy8vIFRo
ZSBjb252ZW50aW9uIGlzIHRvIGNhbGwgc3RvcExpc3RlbmluZ0ZvcklQQygpIGZvciB0aGUgb2Jq
ZWN0LgorLy8gT3B0aW9uYWxseSB0aGUgb2JqZWN0IGNhbiBvYnRhaW4gdGhlIG93bmluZyByZWZl
cmVuY2UgdGhhdCB3YXMgdXNlZCB0byBob2xkIHRoZSBvYmplY3QKKy8vIGluIG9yZGVyIHRvIGF0
dGVtcHQgdG8gYXZvaWQgbmVlZGxlc3MgZGVzdHJ1Y3Rpb24gb2YgdGhlIG9iamVjdCBpbiBob2xk
ZXIgdGhyZWFkLgorLy8gVGhpcyB1c2VmdWwgaW4gdGhlIGNhc2UgdGhlIHN0b3AgaW52b2tlcyBh
IGNsZWFudXAgdGFzayBpbiB0aGUgbWVzc2FnZSBoYW5kbGVyCisvLyB0aHJlYWQuCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSG9sZGVyVHlwZSA9IFJlZlB0cjxUPj4KK2NsYXNzIFNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeworcHVibGljOgorICAgIFNjb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWUoKSA9IGRlZmF1bHQ7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFU+CisgICAgU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZShVJiYgb2JqZWN0KQorICAg
ICAgICA6IG1fb2JqZWN0KFdURk1vdmUob2JqZWN0KSkKKyAgICB7CisgICAgfQorICAgIFNjb3Bl
ZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZSYmIG90aGVyKQorICAgICAgICA6IG1fb2JqZWN0KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmpl
Y3QsIG51bGxwdHIpKQorICAgIHsKKyAgICB9CisgICAgU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZSYgb3BlcmF0b3I9KFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUmJiBvdGhl
cikKKyAgICB7CisgICAgICAgIGlmICh0aGlzICE9ICZvdGhlcikgeworICAgICAgICAgICAgcmVz
ZXQoKTsKKyAgICAgICAgICAgIG1fb2JqZWN0ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX29iamVj
dCwgbnVsbHB0cik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAg
ICB+U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSgpCisgICAgeworICAgICAgICByZXNl
dCgpOworICAgIH0KKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIGlmICghbV9vYmpl
Y3QpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRS
ZWxlYXNlKG1fb2JqZWN0KTsKKyAgICB9CisgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9v
YmplY3QuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICBz
dGF0aWMgYXV0byBzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZShVJiBvYmplY3QpIC0+IGRl
Y2x0eXBlKG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhvYmplY3QucmVsZWFzZU5vbk51bGwo
KSksIHZvaWQoKSkKKyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhv
YmplY3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
CisgICAgc3RhdGljIGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0
KSAtPiBkZWNsdHlwZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMoV1RGTW92ZShvYmplY3Qp
KSwgdm9pZCgpKQorICAgIHsKKyAgICAgICAgb2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKFdU
Rk1vdmUob2JqZWN0KSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgc3Rh
dGljIGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0KSAtPiBkZWNs
dHlwZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMoKSwgdm9pZCgpKQorICAgIHsKKyAgICAg
ICAgb2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKCk7CisgICAgICAgIG9iamVjdCA9IG51bGxw
dHI7CisgICAgfQorICAgIEhvbGRlclR5cGUgbV9vYmplY3Q7Cit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZShzdGQ6OnVuaXF1ZV9wdHI8
VD4mJikgLT4gU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxULCBzdGQ6OnVuaXF1ZV9w
dHI8VD4+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZShSZWY8VD4mJikgLT4gU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxULCBS
ZWZQdHI8VD4+OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0ZjVjZGYwMDhlNWE3ZjJkMmYx
MDJhMjM1YzNjMjI1MTczMzc2ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNsaWVudENv
bm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbUNsaWVudENvbm5lY3Rpb246
OlN0cmVhbUNsaWVudENvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IHNp
emUpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fYnVmZmVyKHNpemUp
Cit7CisgICAgLy8gUmVhZCBzdGFydHMgZnJvbSAwIHdpdGggbGltaXQgb2YgMCBhbmQgcmVhZGVy
IHNsZWVwaW5nLgorICAgIHNoYXJlZFNlbmRlck9mZnNldCgpLnN0b3JlKFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc3RkOjptZW1vcnlf
b3JkZXJfcmVsYXhlZCk7CisgICAgLy8gV3JpdGUgc3RhcnRzIGZyb20gMCB3aXRoIGEgbGltaXQg
b2YgdGhlIHdob2xlIGJ1ZmZlci4KKyAgICBzaGFyZWRSZWNlaXZlck9mZnNldCgpLnN0b3JlKDAs
IHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKK3sK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3dha2VVcFNlbWFwaG9yZSA9IFdURk1vdmUoc2Vt
YXBob3JlKTsKKyNlbmRpZgorICAgIHdha2VVcFJlY2VpdmVyKCk7Cit9CisKK3ZvaWQgU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIoKQoreworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIGlmIChtX3dha2VVcFNlbWFwaG9yZSkKKyAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUt
PnNpZ25hbCgpOworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjQ1NDc2M2M2NjY1
ZTk3ZTVlYmNjNjZlZTk3N2M4ZmNiMDA0MjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMjQ1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5j
bHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVk
ZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CituYW1lc3BhY2UgSVBDIHsKKworLy8gQSBtZXNzYWdlIHN0cmVhbSBpcyBh
IGhhbGYtZHVwbGV4IHR3by13YXkgc3RyZWFtIG9mIG1lc3NhZ2VzIHRvIGEgYmV0d2VlbiBhIHNl
bmRlciBhbmQgdGhlCisvLyBkZXN0aW5hdGlvbiByZWNlaXZlci4KKy8vCisvLyBTdHJlYW1DbGll
bnRDb25uZWN0aW9uIGNhbiBzZW5kIG1lc3NhZ2VzIGFuZCByZWNlaXZlIHN5bmNocm9ub3VzIHJl
cGxpZXMKKy8vIHRocm91Z2ggdGhpcyBtZXNzYWdlIHN0cmVhbSBvciB0aHJvdWdoIElQQzo6Q29u
bmVjdGlvbi4KKy8vCisvLyBUaGUgZGVzdGluYXRpb24gcmVjZWl2ZXIgd2lsbCByZWNlaXZlIG1l
c3NhZ2VzIGluIG9yZGVyIF9mb3IgdGhlIGRlc3RpbmF0aW9uIG1lc3NhZ2VzXy4KKy8vIFRoZSB3
aG9sZSBJUEM6OkNvbm5lY3Rpb24gbWVzc2FnZSBvcmRlciBpcyBub3QgcHJlc2VydmVkLgorLy8K
Ky8vIFRoZSBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHRydXN0cyB0aGUgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi4KK2NsYXNzIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gZmluYWwgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFN0cmVhbUNsaWVudENvbm5lY3Rpb24pOworcHVibGljOgorICAgIFN0
cmVhbUNsaWVudENvbm5lY3Rpb24oQ29ubmVjdGlvbiYsIHNpemVfdCBidWZmZXJTaXplKTsKKwor
ICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIHN0cmVhbUJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVm
ZmVyOyB9CisgICAgdm9pZCBzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJik7CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBib29sIHNlbmQoVCYmIG1lc3Nh
Z2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KTsK
KworICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBTZW5kU3luY1Jlc3Vs
dCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgT2JqZWN0SWRlbnRp
ZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpOworCitwcml2YXRlOgorICAg
IHN0cnVjdCBTcGFuIHsKKyAgICAgICAgdWludDhfdCogZGF0YTsKKyAgICAgICAgc2l6ZV90IHNp
emU7CisgICAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtaW5pbXVtTWVzc2FnZVNp
emUgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWluaW11bU1lc3NhZ2VTaXplOworICAgIHN0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBTdHJlYW1Db25uZWN0aW9u
RW5jb2Rlcjo6bWVzc2FnZUFsaWdubWVudDsKKyAgICBib29sIHRyeVNlbmREZXN0aW5hdGlvbklE
SWZOZWVkZWQodWludDY0X3QgZGVzdGluYXRpb25JRCwgTW9ub3RvbmljVGltZSB0aW1lb3V0KTsK
KyAgICB2b2lkIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFNwYW4mJik7CisKKyAgICBP
cHRpb25hbDxTcGFuPiB0cnlBY3F1aXJlKE1vbm90b25pY1RpbWUgdGltZW91dCk7CisgICAgZW51
bSBjbGFzcyBXYWtlVXBSZWNlaXZlciA6IGJvb2wgeworICAgICAgICBObywKKyAgICAgICAgWWVz
CisgICAgfTsKKyAgICBXYWtlVXBSZWNlaXZlciByZWxlYXNlKHNpemVfdCB3cml0ZVNpemUpOwor
ICAgIHZvaWQgd2FrZVVwUmVjZWl2ZXIoKTsKKworICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90
IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAgICBzaXplX3Qgc2l6ZShzaXplX3Qgb2Zmc2V0LCBz
aXplX3QgbGltaXQpOworICAgIHNpemVfdCBjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExp
bWl0KSBjb25zdDsKKworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zmc2V0KTsgfQorICAgIHNpemVfdCBhbGln
bk9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5hbGlnbk9mZnNl
dDxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQsIG1pbmltdW1NZXNzYWdlU2l6ZSk7IH0KKyAgICBB
dG9taWM8c2l6ZV90PiYgc2hhcmVkU2VuZGVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuc2Vu
ZGVyT2Zmc2V0KCk7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkUmVjZWl2ZXJPZmZzZXQo
KSB7IHJldHVybiBtX2J1ZmZlci5yZWNlaXZlck9mZnNldCgpOyB9CisgICAgdWludDhfdCogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIHNpemVfdCBkYXRhU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFTaXplKCk7IH0KKworICAgIENvbm5lY3Rp
b24mIG1fY29ubmVjdGlvbjsKKyAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEIHsg
MCB9OworCisgICAgc2l6ZV90IG1fc2VuZGVyT2Zmc2V0IHsgMCB9OworICAgIFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXIgbV9idWZmZXI7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgT3B0aW9uYWw8
U2VtYXBob3JlPiBtX3dha2VVcFNlbWFwaG9yZTsKKyNlbmRpZgorfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2Jvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZChU
JiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQpCit7CisgICAgc3RhdGljX2Fzc2VydCghVDo6aXNTeW5jLCAiTWVzc2FnZSBpcyBzeW5j
ISIpOworICAgIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0ID0gTW9ub3RvbmljVGltZTo6
bm93KCkgKyB0aW1lb3V0OworICAgIGlmICghdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZChk
ZXN0aW5hdGlvbklELnRvVUludDY0KCksIGFic29sdXRlVGltZW91dCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKGFic29sdXRlVGltZW91dCk7Cisg
ICAgaWYgKCFzcGFuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgeworICAgICAgICBTdHJl
YW1Db25uZWN0aW9uRW5jb2RlciBtZXNzYWdlRW5jb2RlciB7IFQ6Om5hbWUoKSwgc3Bhbi0+ZGF0
YSwgc3Bhbi0+c2l6ZSB9OworICAgICAgICBpZiAobWVzc2FnZUVuY29kZXIgPDwgbWVzc2FnZS5h
cmd1bWVudHMoKSkgeworICAgICAgICAgICAgYXV0byB3YWtldXBSZXN1bHQgPSByZWxlYXNlKG1l
c3NhZ2VFbmNvZGVyLnNpemUoKSk7CisgICAgICAgICAgICBpZiAod2FrZXVwUmVzdWx0ID09IFN0
cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVyOjpZZXMpCisgICAgICAgICAgICAg
ICAgd2FrZVVwUmVjZWl2ZXIoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgfQorICAgIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoKnNwYW4p
KTsKKyAgICBpZiAoIW1fY29ubmVjdGlvbi5zZW5kKFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0
aW9uSUQsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9y
U3luY1JlcGx5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6U2VuZFN5bmNSZXN1bHQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1l
c3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVz
dGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KQoreworICAgIHN0YXRpY19hc3NlcnQoVDo6aXNT
eW5jLCAiTWVzc2FnZSBpcyBub3Qgc3luYyEiKTsKKyAgICBNb25vdG9uaWNUaW1lIGFic29sdXRl
VGltZW91dCA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGltZW91dDsKKyAgICBpZiAoIXRyeVNl
bmREZXN0aW5hdGlvbklESWZOZWVkZWQoZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBhYnNvbHV0
ZVRpbWVvdXQpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVp
cmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVybiB7IH07
CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kIHRocm91Z2ggc3RyZWFtLgorICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgcmVjZWl2ZSB0aHJvdWdoIHN0cmVhbS4KKyAgICBzZW5kUHJvY2Vzc091
dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpzcGFuKSk7CisgICAgYXV0byByZXN1bHQgPSBtX2Nv
bm5lY3Rpb24uc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3Rp
bmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCk7CisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5lIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
dHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNb25v
dG9uaWNUaW1lIGFic29sdXRlVGltZW91dCkKK3sKKyAgICBpZiAoZGVzdGluYXRpb25JRCA9PSBt
X2N1cnJlbnREZXN0aW5hdGlvbklEKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBhdXRvIHNw
YW4gPSB0cnlBY3F1aXJlKGFic29sdXRlVGltZW91dCk7CisgICAgaWYgKCFzcGFuKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZW5jb2RlciB7IE1l
c3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklELCBzcGFuLT5kYXRhLCBzcGFuLT5zaXpl
IH07CisgICAgaWYgKCEoZW5jb2RlciA8PCBkZXN0aW5hdGlvbklEKSkgeworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgLy8gU2l6ZSBvZiB0aGUgbWluaW11bSBhbGxvY2F0aW9uIGlzIGlu
Y29ycmVjdC4gTGlrZWx5IGFuIGFsaWdubWVudCBpc3N1ZS4KKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2UoZW5jb2Rlci5zaXplKCkp
OworICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVw
UmVjZWl2ZXI6OlllcykKKyAgICAgICAgd2FrZVVwUmVjZWl2ZXIoKTsKKyAgICBtX2N1cnJlbnRE
ZXN0aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5s
aW5lIHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1l
c3NhZ2UoU3BhbiYmIHNwYW4pCit7CisgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZW5jb2Rl
ciB7IE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlLCBzcGFuLmRhdGEsIHNw
YW4uc2l6ZSB9OworICAgIC8vIE5vdCBub3RpZnlpbmcgb24gd2FrZSB1cCBzaW5jZSB0aGUgb3V0
LW9mLXN0cmVhbSBtZXNzYWdlIHdpbGwgZG8gdGhhdC4KKyAgICBhdXRvIHJlc3VsdCA9IHJlbGVh
c2UoZW5jb2Rlci5zaXplKCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShyZXN1bHQpOworfQoraW5s
aW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENv
bm5lY3Rpb246OnRyeUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KQoreworICAgIGZvciAo
OzspIHsKKyAgICAgICAgc2l6ZV90IHNlbmRlckxpbWl0ID0gY2xhbXBlZExpbWl0KHNoYXJlZFJl
Y2VpdmVyT2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSk7CisgICAgICAg
IGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsK
KyAgICAgICAgaWYgKHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplKSB7CisgICAgICAg
ICAgICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgICAgICAgICAgaWYgKG5v
dyA+PSB0aW1lb3V0KQorICAgICAgICAgICAgICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgICAgICAgICAgc2l6ZV90IG9sZFNlbmRlckxpbWl0ID0gc2hhcmVkUmVjZWl2ZXJPZmZz
ZXQoKS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoc2VuZGVyTGltaXQsIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXI6OnJlY2VpdmVyT2Zmc2V0U2VuZGVySXNXYWl0aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRl
cl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAgICAgICAgIGlmIChz
ZW5kZXJMaW1pdCA9PSBvbGRTZW5kZXJMaW1pdCkKKyAgICAgICAgICAgICAgICBtX2J1ZmZlci5z
ZW5kZXJXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0IC0gbm93KTsKKyAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIHNlbmRlckxpbWl0ID0gY2xhbXBlZExpbWl0KG9sZFNl
bmRlckxpbWl0KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlbmRl
ck9mZnNldCwgc2VuZGVyTGltaXQpOworICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAg
IFRocmVhZDo6eWllbGQoKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGlmIChyZXN1bHQu
c2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAvLyBUaGUgcmVjZWl2ZXIgYWx3YXlzIHJlYWRzIGFzIG11Y2ggYXMgc2VuZGVyIHNl
bmRzLiBTaW5jZSBzZW5kZXIgYWx3YXlzIHNlbmRzIGF0IGxlYXN0IG1pbmltdW1NZXNzYWdlU2l6
ZSwKKyAgICAgICAgLy8gdGhlcmUgaXMgbmV2ZXIgYSBjYXNlIHdoZXJlIHdlIGNvdWxkIGFjcXVp
cmUgbGVzcyB0aGFuIG1pbmltdW1NZXNzYWdlU2l6ZS4KKyAgICAgICAgQVNTRVJUKCFyZXN1bHQu
c2l6ZSk7CisgICAgfQorICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK2lubGluZSBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBSZWNlaXZlciBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpyZWxlYXNlKHNpemVfdCBzaXplKQoreworICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCBtaW5p
bXVtTWVzc2FnZVNpemUpOworICAgIG1fc2VuZGVyT2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9m
ZnNldChtX3NlbmRlck9mZnNldCkgKyBzaXplKTsKKyAgICBBU1NFUlQobV9zZW5kZXJPZmZzZXQg
PCBkYXRhU2l6ZSgpKTsKKyAgICAvLyBJZiB0aGUgcmVjZWl2ZXIgd3JvdGUgb3ZlciB0aGUgc2Vu
ZGVyT2Zmc2V0IHdpdGggc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCB3ZSBrbm93
IGl0IGlzIHNsZWVwaW5nLgorICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVy
T2Zmc2V0KCkuZXhjaGFuZ2UobV9zZW5kZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9y
ZWwpOworICAgIGlmIChyZWNlaXZlckxpbWl0ID09IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNl
bmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZykKKyAgICAgICAgcmV0dXJuIFdha2VVcFJl
Y2VpdmVyOjpZZXM7CisgICAgQVNTRVJUKCEocmVjZWl2ZXJMaW1pdCAmIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZykpOworICAgIHJldHVy
biBXYWtlVXBSZWNlaXZlcjo6Tm87Cit9CisKK2lubGluZSBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpTcGFuIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OmFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsaW1pdCkKK3sKKyAgICBBU1NFUlQob2Zmc2V0IDwgZGF0YVNpemUoKSk7CisgICAg
QVNTRVJUKGxpbWl0IDwgZGF0YVNpemUoKSk7CisgICAgc2l6ZV90IGFsaWduZWQgPSBhbGlnbk9m
ZnNldChvZmZzZXQpOworICAgIHNpemVfdCByZXN1bHRTaXplID0gMDsKKyAgICBpZiAob2Zmc2V0
IDwgbGltaXQpIHsKKyAgICAgICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0ICYmIGFsaWduZWQgPCBs
aW1pdCkKKyAgICAgICAgICAgIHJlc3VsdFNpemUgPSBzaXplKGFsaWduZWQsIGxpbWl0KTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgfHwgYWxpZ25lZCA8IGxp
bWl0KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAg
IH0KKyAgICByZXR1cm4geyBkYXRhKCkgKyBhbGlnbmVkLCByZXN1bHRTaXplIH07Cit9CisKK2lu
bGluZSBzaXplX3QgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2l6ZShzaXplX3Qgb2Zmc2V0LCBz
aXplX3QgbGltaXQpCit7CisgICAgaWYgKCFsaW1pdCkKKyAgICAgICAgcmV0dXJuIGRhdGFTaXpl
KCkgLSAxIC0gb2Zmc2V0OworICAgIGlmIChsaW1pdCA8PSBvZmZzZXQpCisgICAgICAgIHJldHVy
biBkYXRhU2l6ZSgpIC0gb2Zmc2V0OworICAgIHJldHVybiBsaW1pdCAtIG9mZnNldCAtIDE7Cit9
CisKK2lubGluZSBzaXplX3QgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6Y2xhbXBlZExpbWl0KHNp
emVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3QKK3sKKyAgICBBU1NFUlQodW50cnVzdGVkTGltaXQg
PCAoZGF0YVNpemUoKSAtIDEpKTsKKyAgICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQs
IGRhdGFTaXplKCkgLSAxKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzVmN2YzMWU1
MzNkZDNiZGJlOGY0NWI2NmJlYzhjZjc1ODczN2E3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKQEAgLTAsMCAr
MSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
RmZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgorCituYW1lc3BhY2UgSVBDIHsKKworc3RhdGljIFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9y
eT4gY3JlYXRlTWVtb3J5KHNpemVfdCBzaXplKQoreworICAgIGF1dG8gbWVtb3J5ID0gV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemUpOworICAgIGlmICghbWVtb3J5KQorICAgICAg
ICBDUkFTSCgpOworICAgIHJldHVybiBtZW1vcnkucmVsZWFzZU5vbk51bGwoKTsKK30KKworU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5
U2l6ZSkKKyAgICA6IG1fZGF0YVNpemUobWVtb3J5U2l6ZSAtIGhlYWRlclNpemUoKSkKKyAgICAs
IG1fc2hhcmVkTWVtb3J5KGNyZWF0ZU1lbW9yeShtZW1vcnlTaXplKSkKK3sKKyAgICBBU1NFUlQo
bV9kYXRhU2l6ZSA8PSBtYXhpbXVtU2l6ZSgpKTsKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYgbWVt
b3J5LCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgc2VuZGVyV2FpdFNlbWFwaG9yZSkK
KyAgICA6IG1fZGF0YVNpemUobWVtb3J5U2l6ZSAtIGhlYWRlclNpemUoKSkKKyAgICAsIG1fc2hh
cmVkTWVtb3J5KFdURk1vdmUobWVtb3J5KSkKKyAgICAsIG1fc2VuZGVyV2FpdFNlbWFwaG9yZShX
VEZNb3ZlKHNlbmRlcldhaXRTZW1hcGhvcmUpKQoreworICAgIEFTU0VSVChtX2RhdGFTaXplIDw9
IG1heGltdW1TaXplKCkpOworfQorCitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyKFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBvdGhlcikgPSBkZWZhdWx0Owor
CitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjp+U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcigpID0gZGVm
YXVsdDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6
b3BlcmF0b3I9KFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBvdGhlcikKK3sKKyAgICBpZiAodGhp
cyAhPSAmb3RoZXIpIHsKKyAgICAgICAgbV9kYXRhU2l6ZSA9IG90aGVyLm1fZGF0YVNpemU7Cisg
ICAgICAgIG1fc2hhcmVkTWVtb3J5ID0gV1RGTW92ZShvdGhlci5tX3NoYXJlZE1lbW9yeSk7Cisg
ICAgICAgIG1fc2VuZGVyV2FpdFNlbWFwaG9yZSA9IFdURk1vdmUob3RoZXIubV9zZW5kZXJXYWl0
U2VtYXBob3JlKTsKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIFdl
YktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIGlmICghbV9zaGFyZWRNZW1v
cnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkV3JpdGUpKQorICAgICAgICBDUkFTSCgpOworICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgaXBjSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBtX3NoYXJlZE1lbW9yeS0+
c2l6ZSgpIH07CisgICAgZW5jb2RlciA8PCBpcGNIYW5kbGU7CisgICAgZW5jb2RlciA8PCBtX3Nl
bmRlcldhaXRTZW1hcGhvcmU7Cit9CisKK09wdGlvbmFsPFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI+
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IE9wdGlvbmFsPFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IGlwY0hhbmRsZTsKKyAg
ICBkZWNvZGVyID4+IGlwY0hhbmRsZTsKKyAgICBpZiAoIWlwY0hhbmRsZSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxTZW1hcGhvcmU+IHNlbWFwaG9yZTsKKyAg
ICBkZWNvZGVyID4+IHNlbWFwaG9yZTsKKyAgICBpZiAoIXNlbWFwaG9yZSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICBzaXplX3QgZGF0YVNpemUgPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGlwY0hhbmRsZS0+ZGF0YVNpemUpOworICAgIGlmIChkYXRhU2l6ZSA8IGhlYWRlclNpemUo
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoZGF0YVNpemUgPiBoZWFk
ZXJTaXplKCkgKyBtYXhpbXVtU2l6ZSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5k
bGUtPmhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7
CisgICAgaWYgKHNoYXJlZE1lbW9yeS0+c2l6ZSgpIDwgZGF0YVNpemUpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgeyBzaGFy
ZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSwgZGF0YVNpemUsICBXVEZNb3ZlKCpzZW1hcGhvcmUp
IH07Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNvbm5lY3Rpb25CdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iM2U4MTIyMmM4Nzc0MjIyODE5OGNlMzVhZjY4
NjUzMDBjN2JmMWRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSVBDU2Vt
YXBob3JlLmgiCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8d3RmL0F0b21p
Y3MuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIElQQyB7CisKKy8v
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgaXMgYSBzaGFyZWQgImJpLXBhcnRpdGUiIGNpcmN1bGFy
IGJ1ZmZlciBzdXBwb3J0aW5nCisvLyB2YXJpYWJsZSBsZW5ndGggbWVzc2FnZXMsIHNwZWNpZmlj
IGRhdGEgYWxpZ25tZW50IHdpdGggbWFuZGF0ZWQgbWluaW11bSBzaXplLgorLy8gU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbiBhbmQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiB1c2UgU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciB0byBjb21tdW5pY2F0ZS4KKy8vCisvLyBUaGUgImJpLXBhcnRpdGUiIGlzIGhl
cmUgdG8gbWVhbiB0aGF0IHdyaXRlcyBhbmQgcmVhZHMgdG8gdGhlIGJ1ZmZlciBtdXN0IGJlCisv
LyBjb250aW51b3VzLgorLy8KKy8vIFRoZSBjbGllbnQgKHNlbmRlciBvciByZWNlaXZlcikgImFj
cXVpcmVzIiBzb21lIGFtb3VudCBvZiBidWZmZXIgZGF0YS4gSWYgYnVmZmVyIGhhcyBubworLy8g
Y2FwYWNpdHksIGFjcXVpcmUgcmV0dXJucyB3aXRoIHplcm8gY2FwYWNpdHkuIElmIGJ1ZmZlciBo
YXMgYXQgbGVhc3QgYWNxdWlyZWQKKy8vIGNhcGFjaXR5LCBhbGwgdGhlIGF2YWlsYWJsZSBjYXBh
Y2l0eSBpcyByZXR1cm5lZC4KKy8vCisvLyBUaGUgY2xpZW50ICJyZWxlYXNlcyIgdGhlIHNvbWUg
YW1vdW50IG9mIGRhdGEsIGF0IGxlYXN0IHRoZSBhbW91bnQgYWNxdWlyZWQgYnV0IHBvdGVudGlh
bGx5CisvLyBtb3JlLgorLy8KKy8vIEJvdGggc2VuZGVyIGFuZCByZWNlaXZlciBtdXN0IHJlbGVh
c2UgdGhlIHNhbWUgYW1vdW50IG9mIGRhdGEgYXQgdGhlIHNhbWUgc3RlcCBvZiB0aGUgYWNxdWly
ZS9yZWxlYXNlIHNlcXVlbmNlLgorLy8gU3VwcG9zZSBzZW5kZXIgcmVsZWFzZXMgZmlyc3QgOCBh
bmQgdGhlbiAxNjYgYnl0ZXMuIFVwb24gdGhlIGZpcnN0IGFjcXVpcmUsIHJlY2VpdmVyCisvLyBt
dXN0IGFsc28gcmVsZWFzZSA4IGJ5dGVzIGFuZCB0aGVuIHVwb24gdGhlIHNlY29uZCBhY3F1aXJl
IDE2NiBieXRlcy4KKy8vIER1ZSB0byBob3cgYWxpZ25tZW50IGFuZCBtaW5pbXVtIGxlbmd0aCBh
ZmZlY3QgdGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSBtZW1vcnkgY2FuCisvLyBiZSByZWZlcnJl
ZCB0bywgdGhlIHJlY2VpdmVyIGNhbm5vdCAicmVhZCB0d28gdGltZXMgc2ltdWx0YW5lb3VzbHki
IGFuZCByZWxlYXNlIDE3NCBieXRlcy4KKy8vCisvLyBUaGUgY2lyY3VsYXIgYnVmZmVyIGhhcyBm
b2xsb3dpbmcgaW1wbGVtZW50YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRoZSBkYXRhIGJldHdl
ZW4gW3NlbmRlck9mZnNldCwgcmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRlck9mZnNldCA9PQor
Ly8gcmVjZWl2ZXJPZmZzZXQsIHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4KKy8vICogUmVjZWl2
ZXIgb3ducyB0aGUgZGF0YSBiZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2VuZGVyT2Zmc2V0Wy4K
Ky8vICogVGhlIGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAxIHZhbHVlcy4gVGhl
IGxhc3QgdmFsdWUgaXMgcmVzZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRoYXQgdGhlIGJ1ZmZl
ciBpcyBmdWxsLiBGSVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBp
ZgorLy8gaXQgd291bGQgdXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9mIHRoZSBob2xlIGFz
IHRoZSBpbmRpY2F0b3IuIFRoaXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWduZWRTcGFuIGltcGxl
bWVudGF0aW9uIHRvIHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgorLy8gKiBBbGwgYXRvbWlj
IHZhcmlhYmxlIGxvYWRzIGFyZSB1bnRydXN0ZWQsIHNvIHRoZXkncmUgY2xhbXBlZC4gVmlvbGF0
aW9ucyBhcmUgbm90IHJlcG9ydGVkLAorLy8gdGhvdWdoLgorLy8gU2VlIFNoYXJlZERpc3BsYXlM
aXN0SGFuZGxlLgorY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6ZSk7CisgICAg
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOworICAgIH5T
dHJlYW1Db25uZWN0aW9uQnVmZmVyKCk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgb3Bl
cmF0b3I9KFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisKKyAgICBzaXplX3Qgd3JhcE9mZnNl
dChzaXplX3Qgb2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9mZnNldCA8PSBk
YXRhU2l6ZSgpKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBkYXRhU2l6ZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgdGVtcGxh
dGU8c2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQ+CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVf
dCBvZmZzZXQsIHNpemVfdCBhY3F1aXJlU2l6ZSkgY29uc3QKKyAgICB7CisgICAgICAgIG9mZnNl
dCA9IHJvdW5kVXBUb011bHRpcGxlT2Y8bWVzc2FnZUFsaWdubWVudD4ob2Zmc2V0KTsKKyAgICAg
ICAgaWYgKG9mZnNldCArIGFjcXVpcmVTaXplID49IGRhdGFTaXplKCkpCisgICAgICAgICAgICBv
ZmZzZXQgPSAwOworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAgIEF0b21pYzxz
aXplX3Q+JiBzZW5kZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZW5kZXJPZmZzZXQ7IH0K
KyAgICBBdG9taWM8c2l6ZV90PiYgcmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5y
ZWNlaXZlck9mZnNldDsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDx1aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBoZWFkZXJTaXplKCk7
IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTaXplOyB9Cisg
ICAgU2VtYXBob3JlJiBzZW5kZXJXYWl0U2VtYXBob3JlKCkgeyByZXR1cm4gbV9zZW5kZXJXYWl0
U2VtYXBob3JlOyB9CisKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6c2VuZGVy
T2Zmc2V0IHdoZW4gcmVjZWl2ZXIgaXMgc2xlZXBpbmcsIGUuZy4gbm90IHJ1bm5pbmcuCisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFn
ID0gMSA8PCAzMTsKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRlcjo6cmVjZWl2ZXJP
ZmZzZXQgd2hlbiBzZW5kZXIgaXMgd2FpdGluZywgZS5nLiB3YWl0aW5nIG9uCisgICAgLy8gYSBz
ZW1hcGhvcmUuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVjZWl2ZXJPZmZzZXRTZW5k
ZXJJc1dhaXRpbmdUYWcgPSAxIDw8IDMxOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
bWF4aW11bVNpemUoKSB7IHJldHVybiBzdGQ6Om1pbihzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xl
ZXBpbmdUYWcsIHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZykgLSAxOyB9CisgICAg
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBPcHRpb25hbDxTdHJlYW1D
b25uZWN0aW9uQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYmLCBzaXplX3QgbWVt
b3J5U2l6ZSwgU2VtYXBob3JlJiYgc2VuZGVyV2FpdFNlbWFwaG9yZSk7CisKKyAgICBzdHJ1Y3Qg
SGVhZGVyIHsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gcmVjZWl2ZXJPZmZzZXQ7CisgICAgICAg
IC8vIFBhZGRpbmcgc28gdGhhdCB0aGUgdmFyaWFibGVzIG1vc3RseSBhY2Nlc3NlZCBieSBkaWZm
ZXJlbnQgcHJvY2Vzc2VzIGRvIG5vdCBzaGFyZSBhIGNhY2hlIGxpbmUuCisgICAgICAgIC8vIFRo
aXMgaXMgYW4gYXR0ZW1wdCB0byBhdm9pZCBjYWNoZS1saW5lIGluZHVjZWQgcmVkdWN0aW9uIG9m
IHBhcmFsbGVsIGFjY2Vzcy4KKyAgICAgICAgYWxpZ25hcyhzaXplb2YodWludDY0X3RbMl0pKSBB
dG9taWM8c2l6ZV90PiBzZW5kZXJPZmZzZXQ7CisgICAgfTsKKyAgICBIZWFkZXImIGhlYWRlcigp
IGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEhlYWRlcio+KG1fc2hhcmVkTWVtb3J5
LT5kYXRhKCkpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaGVhZGVyU2l6ZSgpIHsg
cmV0dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHN0ZDo6bWF4X2FsaWduX3QpPihzaXpl
b2YoSGVhZGVyKSk7IH0KKworICAgIHNpemVfdCBtX2RhdGFTaXplIHsgMCB9OworICAgIFJlZjxX
ZWJLaXQ6OlNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CisgICAgU2VtYXBob3JlIG1fc2Vu
ZGVyV2FpdFNlbWFwaG9yZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5MjMyZGVjZjZj
NzkzYTQ1NzcxNjhlOTdlZmI1MWFhZmIzMmZkZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oCkBAIC0wLDAgKzEs
OTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBJUEMgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlw
ZW5hbWU+IHN0cnVjdCBBcmd1bWVudENvZGVyOworCisvLyBJUEMgZW5jb2RlciB3aGljaDoKKy8v
ICAtIEVuY29kZXMgdG8gYSBjYWxsZXIgYnVmZmVyIHdpdGggZml4ZWQgc2l6ZSwgZG9lcyBub3Qg
cmVzaXplLCBzdG9wcyB3aGVuIHNpemUgcnVucyBvdXQKKy8vICAtIERvZXMgbm90IGluaXRpYWxp
emUgYWxpZ25tZW50IGdhcHMKKy8vCitjbGFzcyBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBmaW5h
bCB7CitwdWJsaWM6CisgICAgLy8gU3RyZWFtIG1lc3NhZ2UgbmVlZHMgdG8gYmUgYXQgbGVhc3Qg
c2l6ZSBvZiBTdHJlYW1TZXREZXN0aW5hdGlvbklEIG1lc3NhZ2UuCisgICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VTaXplID0gc2l6ZW9mKE1lc3NhZ2VOYW1lKSArIHNp
emVvZih1aW50NjRfdCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdu
bWVudCA9IGFsaWdub2YoTWVzc2FnZU5hbWUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0lQQ0VuY29kZXIgPSB0cnVlOworCisgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIoTWVzc2Fn
ZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVhbUNhcGFjaXR5
KQorICAgICAgICA6IG1fYnVmZmVyKHN0cmVhbSkKKyAgICAgICAgLCBtX2J1ZmZlckNhcGFjaXR5
KHN0cmVhbUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgKnRoaXMgPDwgbWVzc2FnZU5hbWU7Cisg
ICAgfQorCisgICAgflN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyKCkgPSBkZWZhdWx0OworCisgICAg
Ym9vbCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUsIHNpemVfdCBhbGlnbm1lbnQpCisgICAgeworICAgICAgICBzaXplX3QgYnVmZmVyUG9pbnRl
ciA9IHN0YXRpY19jYXN0PHNpemVfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9idWZm
ZXIgKyBtX2VuY29kZWRTaXplKSk7CisgICAgICAgIHNpemVfdCBuZXdCdWZmZXJQb2ludGVyID0g
cm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm1lbnQsIGJ1ZmZlclBvaW50ZXIpOworICAgICAgICBp
ZiAobmV3QnVmZmVyUG9pbnRlciA8IGJ1ZmZlclBvaW50ZXIpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGludHB0cl90IGFsaWduZWRTaXplID0gbV9lbmNvZGVkU2l6ZSArIChu
ZXdCdWZmZXJQb2ludGVyIC0gYnVmZmVyUG9pbnRlcik7CisgICAgICAgIGlmICghcmVzZXJ2ZShh
bGlnbmVkU2l6ZSwgc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHVp
bnQ4X3QqIGJ1ZmZlciA9IG1fYnVmZmVyICsgYWxpZ25lZFNpemU7CisgICAgICAgIG1lbWNweShi
dWZmZXIsIGRhdGEsIHNpemUpOworICAgICAgICBtX2VuY29kZWRTaXplID0gYWxpZ25lZFNpemUg
KyBzaXplOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiBvcGVyYXRvcjw8KFQmJiB0KQor
ICAgIHsKKyAgICAgICAgQXJndW1lbnRDb2RlcjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVt
b3ZlX3JlZmVyZW5jZV90PFQ+Piwgdm9pZD46OmVuY29kZSgqdGhpcywgc3RkOjpmb3J3YXJkPFQ+
KHQpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkg
Y29uc3QgeyBBU1NFUlQoaXNWYWxpZCgpKTsgcmV0dXJuIG1fZW5jb2RlZFNpemU7IH0KKyAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlckNhcGFjaXR5OyB9CisgICAgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWQoKTsgfQorcHJpdmF0ZToKKyAgICBi
b29sIHJlc2VydmUoc2l6ZV90IGFsaWduZWRTaXplLCBzaXplX3QgYWRkaXRpb25hbFNpemUpCisg
ICAgeworICAgICAgICBzaXplX3Qgc2l6ZSA9IGFsaWduZWRTaXplICsgYWRkaXRpb25hbFNpemU7
CisgICAgICAgIGlmIChzaXplIDwgYWxpZ25lZFNpemUgfHwgc2l6ZSA+IG1fYnVmZmVyQ2FwYWNp
dHkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyQ2FwYWNpdHkgPSAwOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB1
aW50OF90KiBtX2J1ZmZlcjsKKyAgICBzaXplX3QgbV9idWZmZXJDYXBhY2l0eTsKKyAgICBzaXpl
X3QgbV9lbmNvZGVkU2l6ZSB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNWI0NDk0Yjc0ZmQ5Mjg1ODAzZTRlYTJlZjQ4YzExNzM2NTlk
NzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5o
IgorCituYW1lc3BhY2UgSVBDIHsKKworU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZShjb25zdCBjaGFyKiBuYW1lKQorICAgIDogbV9uYW1lKG5hbWUp
Cit7Cit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6ZGlzcGF0Y2goV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAgeworICAgICAgICBMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgICAgIG1fZnVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9u
KSk7CisgICAgICAgIEFTU0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5n
IHNodXRkb3duIG5vdCBzdXBwb3J0ZWQuCisgICAgfQorICAgIHdha2VVcFByb2Nlc3NpbmdUaHJl
YWQoKTsKKworfQordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjphZGRTdHJlYW1Db25u
ZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uKQoreworICAgIHsK
KyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX2Nvbm5lY3Rpb25zLmFk
ZChjb25uZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRl
cmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBvcnRlZC4KKyAgICB9CisgICAgd2FrZVVwUHJv
Y2Vzc2luZ1RocmVhZCgpOworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnJl
bW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rp
b24pCit7CisgICAgQVNTRVJUKG1fcHJvY2Vzc2luZ1RocmVhZCk7CisgICAgeworICAgICAgICBM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIG1fY29ubmVjdGlvbnMucmVtb3ZlKGNvbm5l
Y3Rpb24pOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1
cmluZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVkLgorICAgIH0KKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsKKyNlbmRpZgorfQorCit2b2lkIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWU6OnN0b3AoKQoreworICAgIG1fc2hvdWxkUXVpdCA9IHRydWU7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKCFtX3Byb2Nlc3NpbmdUaHJlYWQpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsKKyAgICBtX3Byb2Nl
c3NpbmdUaHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CisgICAgbV9wcm9jZXNzaW5nVGhyZWFk
ID0gbnVsbHB0cjsKKyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6
Ondha2VVcCgpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUu
c2lnbmFsKCk7CisjZW5kaWYKK30KKworSVBDOjpTZW1hcGhvcmUmIFN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6Ondha2VVcFNlbWFwaG9yZSgpCit7CisgICAgcmV0dXJuIG1fd2FrZVVwU2VtYXBo
b3JlOworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFByb2Nlc3Np
bmdUaHJlYWQoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChtX3Byb2Nlc3NpbmdU
aHJlYWQpIHsKKyAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBhdXRvIHRhc2sgPSBbdGhpc10oKSBtdXRhYmxlIHsKKyAgICAg
ICAgZm9yICg7OykgeworICAgICAgICAgICAgcHJvY2Vzc1N0cmVhbXMoKTsKKyAgICAgICAgICAg
IGlmIChtX3Nob3VsZFF1aXQpIHsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU3RyZWFtcygpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fd2Fr
ZVVwU2VtYXBob3JlLndhaXQoKTsKKyAgICAgICAgfQorICAgIH07CisgICAgbV9wcm9jZXNzaW5n
VGhyZWFkID0gVGhyZWFkOjpjcmVhdGUobV9uYW1lLCBXVEZNb3ZlKHRhc2spLCBUaHJlYWRUeXBl
OjpHcmFwaGljcywgVGhyZWFkOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSk7CisjZW5kaWYKK30KKwor
dm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpwcm9jZXNzU3RyZWFtcygpCit7CisgICAg
Y29uc3RleHByIHNpemVfdCBkZWZhdWx0TWVzc2FnZUxpbWl0ID0gMTAwMDsKKyAgICBib29sIGhh
c01vcmVUb1Byb2Nlc3MgPSBmYWxzZTsKKyAgICBkbyB7CisgICAgICAgIERlcXVlPFdURjo6RnVu
Y3Rpb248dm9pZCgpPj4gZnVuY3Rpb25zOworICAgICAgICBIYXNoU2V0PFJlZjxTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZT4+IGNvbm5lY3Rpb25zOworICAgICAgICB7CisgICAgICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAgICAgICBmdW5jdGlvbnMuc3dh
cChtX2Z1bmN0aW9ucyk7CisgICAgICAgICAgICBjb25uZWN0aW9ucyA9IG1fY29ubmVjdGlvbnM7
CisgICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykKKyAg
ICAgICAgICAgIFdURk1vdmUoZnVuY3Rpb24pKCk7CisKKyAgICAgICAgaGFzTW9yZVRvUHJvY2Vz
cyA9IGZhbHNlOworICAgICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBjb25uZWN0aW9ucykK
KyAgICAgICAgICAgIGhhc01vcmVUb1Byb2Nlc3MgfD0gY29ubmVjdGlvbi0+ZGlzcGF0Y2hTdHJl
YW1NZXNzYWdlcyhkZWZhdWx0TWVzc2FnZUxpbWl0KSA9PSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6SGFzTW9yZU1lc3NhZ2VzOworICAgIH0gd2hpbGUgKGhhc01vcmVUb1Byb2Nlc3MpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUyNmEzNTI2NjUxZGRmZjM5MGE3ZGY3MWZj
OTVkYTVhNDFkY2M1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRl
ICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworY2xhc3MgU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgeworcHVibGljOgor
ICAgIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUoY29uc3QgY2hhciopOworICAgIH5TdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlKCkgPSBkZWZhdWx0OworICAgIHZvaWQgYWRkU3RyZWFtQ29ubmVj
dGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYpOworICAgIHZvaWQgcmVtb3ZlU3RyZWFt
Q29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYpOworCisgICAgdm9pZCBkaXNw
YXRjaChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBzdG9wKCk7CisK
KyAgICB2b2lkIHdha2VVcCgpOworCisgICAgU2VtYXBob3JlJiB3YWtlVXBTZW1hcGhvcmUoKTsK
K3ByaXZhdGU6CisgICAgdm9pZCB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7CisgICAgdm9pZCBw
cm9jZXNzU3RyZWFtcygpOworCisgICAgY29uc3QgY2hhciogY29uc3QgbV9uYW1lOworICAgIFNl
bWFwaG9yZSBtX3dha2VVcFNlbWFwaG9yZTsKKyAgICBSZWZQdHI8VGhyZWFkPiBtX3Byb2Nlc3Np
bmdUaHJlYWQ7CisKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX3Nob3VsZFF1aXQgeyBmYWxzZSB9
OworCisgICAgTG9jayBtX2xvY2s7CisgICAgRGVxdWU8RnVuY3Rpb248dm9pZCgpPj4gbV9mdW5j
dGlvbnM7CisgICAgSGFzaFNldDxSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U+PiBtX2Nv
bm5lY3Rpb25zOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODIyMzE2MDczZjgyNjg0
YzhiZDQ1ODgzMzhmNDFlMjIyNjhmYzk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwxMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlN0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtLCBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUpCisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlv
bikKKyAgICAsIG1fd29ya1F1ZXVlKHdvcmtRdWV1ZSkKKyAgICAsIG1fYnVmZmVyKFdURk1vdmUo
c3RyZWFtKSkKK3sKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3RhcnRS
ZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3NhZ2VSZWNlaXZlUXVl
dWUoKnRoaXMsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgbV93b3JrUXVldWUu
YWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVy
TmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBt
X3dvcmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKK30KKwordm9pZCBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiYmIG1lc3NhZ2UpCit7CisgICAgeworICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOworICAgICAgICBtX291
dE9mU3RyZWFtTWVzc2FnZXMuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOworICAgIH0KKyAgICBt
X3dvcmtRdWV1ZS53YWtlVXAoKTsKK30KKworT3B0aW9uYWw8U3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OlNwYW4+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBcXVpcmUoKQorewor
ICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkubG9hZChzdGQ6
Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICBpZiAocmVjZWl2ZXJMaW1pdCA9PSBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3Bhbiht
X3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0KTsKKyAgICBpZiAocmVzdWx0LnNpemUgPCBt
aW5pbXVtTWVzc2FnZVNpemUpIHsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNlbmRl
ck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhyZWNlaXZlckxpbWl0LCBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVt
b3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICBB
U1NFUlQoIShyZWNlaXZlckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zm
c2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKSk7CisgICAgICAgIHJlY2VpdmVyTGltaXQgPSBjbGFt
cGVkTGltaXQocmVjZWl2ZXJMaW1pdCk7CisgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1f
cmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworICAgIH0KKworICAgIGlmIChyZXN1bHQu
c2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6cmVsZWFzZShzaXplX3QgcmVhZFNpemUpCit7CisgICAgQVNTRVJUKHJlYWRTaXplKTsKKyAg
ICByZWFkU2l6ZSA9IHN0ZDo6bWF4KHJlYWRTaXplLCBtaW5pbXVtTWVzc2FnZVNpemUpOworICAg
IHNpemVfdCByZWNlaXZlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZzZXQobV9yZWNlaXZl
ck9mZnNldCkgKyByZWFkU2l6ZSk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBzaXplX3Qg
b2xkUmVjZWl2ZXJPZmZzZXQgPSBzaGFyZWRSZWNlaXZlck9mZnNldCgpLmV4Y2hhbmdlKHJlY2Vp
dmVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAvLyBJZiB0aGUgc2Vu
ZGVyIHdyb3RlIG92ZXIgcmVjZWl2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBzZW5kZXIgaXMgd2Fp
dGluZy4KKyAgICBpZiAob2xkUmVjZWl2ZXJPZmZzZXQgPT0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6cmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcpCisgICAgICAgIG1fYnVmZmVyLnNl
bmRlcldhaXRTZW1hcGhvcmUoKS5zaWduYWwoKTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVCgh
KG9sZFJlY2VpdmVyT2Zmc2V0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZz
ZXRTZW5kZXJJc1dhaXRpbmdUYWcpKTsKKyNlbHNlCisgICAgc2hhcmVkUmVjZWl2ZXJPZmZzZXQo
KS5zdG9yZShyZWNlaXZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CisgICAg
Ly8gSVBDOjpTZW1hcGhvcmUgbm90IGltcGxlbWVudGVkIGZvciB0aGUgcGxhdGZvcm0uIENsaWVu
dCB3aWxsIHBvbGwgYW5kIHlpZWxkLgorICAgIFVOVVNFRF9WQVJJQUJMRShvbGRSZWNlaXZlck9m
ZnNldCk7CisjZW5kaWYKKworICAgIG1fcmVjZWl2ZXJPZmZzZXQgPSByZWNlaXZlck9mZnNldDsK
K30KKworU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4gU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OmFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAg
ICBBU1NFUlQob2Zmc2V0IDwgZGF0YVNpemUoKSk7CisgICAgQVNTRVJUKGxpbWl0IDwgZGF0YVNp
emUoKSk7CisgICAgc2l6ZV90IGFsaWduZWQgPSBhbGlnbk9mZnNldChvZmZzZXQpOworICAgIHNp
emVfdCByZXN1bHRTaXplID0gMDsKKyAgICBpZiAob2Zmc2V0IDwgbGltaXQpIHsKKyAgICAgICAg
aWYgKG9mZnNldCA8PSBhbGlnbmVkICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgIHJl
c3VsdFNpemUgPSBzaXplKGFsaWduZWQsIGxpbWl0KTsKKyAgICB9IGVsc2UgaWYgKG9mZnNldCA+
IGxpbWl0KSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwgbGlt
aXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAg
fQorICAgIHJldHVybiB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30KKworc2l6
ZV90IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVf
dCBsaW1pdCkKK3sKKyAgICBpZiAob2Zmc2V0IDw9IGxpbWl0KQorICAgICAgICByZXR1cm4gbGlt
aXQgLSBvZmZzZXQ7CisgICAgcmV0dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7Cit9CisKK3NpemVf
dCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0
ZWRMaW1pdCkgY29uc3QKK3sKKyAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUo
KSAtIDEpKTsKKyAgICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkg
LSAxKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1ODFjNjkwMWQ1MTI1YTA2NGJhNGUzYTcw
NjhlNDJhMTlkZjkxYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSwyODQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJE
ZWNvZGVyLmgiCisjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5o
IgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1D
b25uZWN0aW9uRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIFN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWU7CisKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPiwgcHJvdGVj
dGVkIE1lc3NhZ2VSZWNlaXZlUXVldWUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlKTsKK3B1YmxpYzoKKyAgICB+U3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2UoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgICBDb25uZWN0aW9uJiBjb25uZWN0
aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisKKyAgICBlbnVtIERpc3BhdGNoUmVzdWx0
IDogYm9vbCB7CisgICAgICAgIEhhc05vTWVzc2FnZXMsCisgICAgICAgIEhhc01vcmVNZXNzYWdl
cworICAgIH07CisgICAgdmlydHVhbCBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1lc3Nh
Z2VzKHNpemVfdCBtZXNzYWdlTGltaXQpID0gMDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KKyAgICB2b2lkIHNlbmRTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJ
RCwgQXJndW1lbnRzJiYuLi4pOworCitwcm90ZWN0ZWQ6CisgICAgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2UoSVBDOjpDb25uZWN0aW9uJiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBTdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlJik7CisKKyAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVzc2Fn
ZXNJbXBsKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9pZCBz
dG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCk7CisKKyAgICAvLyBNZXNzYWdlUmVjZWl2ZVF1ZXVlCisgICAgdm9pZCBlbnF1ZXVlTWVz
c2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpIGZpbmFsOworCisg
ICAgc3RydWN0IFNwYW4geworICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXplX3Qg
c2l6ZTsKKyAgICB9OworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFxdWlyZSgpOworCisgICAgdm9p
ZCByZWxlYXNlKHNpemVfdCByZWFkU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
bWluaW11bU1lc3NhZ2VTaXplID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1pbmltdW1NZXNz
YWdlU2l6ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50ID0g
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1lc3NhZ2VBbGlnbm1lbnQ7CisgICAgU3BhbiBhbGln
bmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBzaXplKHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXpl
X3QgdW50cnVzdGVkTGltaXQpIGNvbnN0OworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBv
ZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zmc2V0KTsgfQorICAg
IHNpemVfdCBhbGlnbk9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5hbGlnbk9mZnNldDxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQsIG1pbmltdW1NZXNzYWdlU2l6
ZSk7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkU2VuZGVyT2Zmc2V0KCkgeyByZXR1cm4g
bV9idWZmZXIuc2VuZGVyT2Zmc2V0KCk7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkUmVj
ZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5yZWNlaXZlck9mZnNldCgpOyB9CisgICAg
dWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIHNp
emVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFTaXplKCk7IH0KKwor
ICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlJiBtX3dvcmtRdWV1ZTsKKworICAgIHNpemVfdCBtX3JlY2VpdmVyT2Zmc2V0
IHsgMCB9OworICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgbV9idWZmZXI7CisKKyAgICBMb2Nr
IG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2s7CisgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+PiBtX291dE9mU3RyZWFtTWVzc2FnZXM7CisKKyAgICBmcmllbmQgY2xhc3MgU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50
cz4KK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5jUmVwbHkodWludDY0
X3Qgc3luY1JlcXVlc3RJRCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgc2VuZGluZyB0byBidWZmZXIuCisgICAgYXV0byBlbmNvZGVyID0gbWFr
ZVVuaXF1ZTxJUEM6OkVuY29kZXI+KElQQzo6TWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHks
IHN5bmNSZXF1ZXN0SUQpOworICAgICgqZW5jb2RlciA8PCAuLi4gPDwgYXJndW1lbnRzKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisKKy8v
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gcmVwcmVzZW50cyB0aGUgY29ubmVjdGlvbiBiZXR3ZWVu
IHN0cmVhbSBzZW5kZXIgYW5kIHJlY2VpdmVyLCBhcyB1c2VkIGJ5IHRoZSByZWNlaXZlci4KKy8v
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb246CisvLyAgKiBIb2xkcyB0aGUgbWVzc2FnZXMgdG93YXJk
cyB0aGUgcmVjZWl2ZXIuCisvLyAgKiBTZW5kcyB0aGUgcmVwbGllcyBiYWNrIHRvIHRoZSBzZW5k
ZXIgdmlhIHRoZSBzdHJlYW0gb3Igbm9ybWFsIENvbm5lY3Rpb24gZmFsbGJhY2suCisvLworLy8g
UmVjZWl2ZXIgdGVtcGxhdGUgY29udHJhY3Q6CisvLyAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1l
c3NhZ2UoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBEZWNvZGVyJik7CisvLworLy8gVGhl
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gZG9lcyBub3QgdHJ1c3QgdGhlIFN0cmVhbUNsaWVudENv
bm5lY3Rpb24uCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK2NsYXNzIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2Ugewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gY3JlYXRlKENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZm
ZXIsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbiwg
V1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpKTsKKyAgICB9CisgICAgflN0cmVhbVNl
cnZlckNvbm5lY3Rpb24oKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHN0YXJ0UmVjZWl2
aW5nTWVzc2FnZXMoUmVjZWl2ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpOworICAgIC8vIFN0b3BzIHRoZSBtZXNzYWdlIHJlY2VpcHQuIE5vdGU6IGFscmVhZHkgcmVj
ZWl2ZWQgbWVzc2FnZXMgbWlnaHQgc3RpbGwgYmUgZGVsaXZlcmVkLgorICAgIHZvaWQgc3RvcFJl
Y2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisK
KyAgICAvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSBvdmVycmlkZXMuCisgICAgRGlzcGF0
Y2hSZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KSBmaW5h
bDsKKworcHJpdmF0ZToKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICAgICAgOiBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZShjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSkK
KyAgICB7CisgICAgfQorICAgIGJvb2wgcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoRGVj
b2RlciYmLCBSZWZQdHI8UmVjZWl2ZXI+JiBjdXJyZW50UmVjZWl2ZXIpOworICAgIGJvb2wgZGlz
cGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiwgUmVjZWl2ZXImKTsKKyAgICBib29sIGRpc3Bh
dGNoT3V0T2ZTdHJlYW1NZXNzYWdlKERlY29kZXImJik7CisgICAgTG9jayBtX3JlY2VpdmVyc0xv
Y2s7CisgICAgdXNpbmcgUmVjZWl2ZXJzTWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8dWludDhfdCwg
dWludDY0X3Q+LCBSZWY8UmVjZWl2ZXI+PjsKKyAgICBSZWNlaXZlcnNNYXAgbV9yZWNlaXZlcnM7
CisKKyAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEID0gMDsKK307CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2Vp
dmVyPjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYgcmVjZWl2ZXIsIFJlY2VpdmVy
TmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgeworICAg
ICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2Vp
dmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9yZWNlaXZlcnMuY29udGFpbnMo
a2V5KSk7CisgICAgICAgIG1fcmVjZWl2ZXJzLmFkZChrZXksIG1ha2VSZWYocmVjZWl2ZXIpKTsK
KyAgICB9CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5nTWVz
c2FnZXNJbXBsKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6
c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpCit7CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BS
ZWNlaXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBh
dXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVyTmFt
ZSksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZl
cnNMb2NrKTsKKyAgICBBU1NFUlQobV9yZWNlaXZlcnMuY29udGFpbnMoa2V5KSk7CisgICAgbV9y
ZWNlaXZlcnMucmVtb3ZlKGtleSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgor
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OkRpc3BhdGNoUmVzdWx0IFN0cmVhbVNlcnZlckNv
bm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNzYWdl
TGltaXQpCit7CisgICAgUmVmUHRyPFJlY2VpdmVyPiBjdXJyZW50UmVjZWl2ZXI7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCBXVEY6OmlzVmFsaWQoUmVjZWl2ZXJOYW1lKS4KKyAgICB1aW50OF90
IGN1cnJlbnRSZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihSZWNlaXZlck5hbWU6
OkludmFsaWQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlTGltaXQ7ICsr
aSkgeworICAgICAgICBhdXRvIHNwYW4gPSB0cnlBcXVpcmUoKTsKKyAgICAgICAgaWYgKCFzcGFu
KQorICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAg
ICAgICBJUEM6OkRlY29kZXIgZGVjb2RlciB7IHNwYW4tPmRhdGEsIHNwYW4tPnNpemUsIG1fY3Vy
cmVudERlc3RpbmF0aW9uSUQgfTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkgewor
ICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVz
dWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICB9CisgICAgICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQpIHsKKyAgICAg
ICAgICAgIGlmICghcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoV1RGTW92ZShkZWNvZGVy
KSwgY3VycmVudFJlY2VpdmVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1
bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0
T2ZTdHJlYW1NZXNzYWdlKSB7CisgICAgICAgICAgICBpZiAoIWRpc3BhdGNoT3V0T2ZTdHJlYW1N
ZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpKQorICAgICAgICAgICAgICAgIHJldHVybiBEaXNwYXRj
aFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIGlmIChjdXJyZW50UmVjZWl2ZXJOYW1lICE9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkgeworICAgICAgICAgICAgY3VycmVudFJl
Y2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpKTsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKCFjdXJyZW50UmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIGF1dG8ga2V5
ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4oY3VycmVudFJlY2VpdmVyTmFt
ZSksIG1fY3VycmVudERlc3RpbmF0aW9uSUQpOworICAgICAgICAgICAgaWYgKCFSZWNlaXZlcnNN
YXA6OmlzVmFsaWRLZXkoa2V5KSkgeworICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlz
cGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJz
TG9jayk7CisgICAgICAgICAgICBjdXJyZW50UmVjZWl2ZXIgPSBtX3JlY2VpdmVycy5nZXQoa2V5
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNlaXZlcikgeworICAgICAgICAg
ICAgLy8gVmFsaWQgc2NlbmFyaW8gaXMgd2hlbiByZWNlaXZlciBoYXMgYmVlbiByZW1vdmVkLCBi
dXQgdGhlcmUgYXJlIG1lc3NhZ2VzIGZvciBpdCBpbiB0aGUgYnVmZmVyLgorICAgICAgICAgICAg
Ly8gRklYTUU6IFNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgcmVjZWl2ZXIsIHdlIGRvbid0IGtub3cg
aG93IHRvIGRlY29kZSB0aGUgbWVzc2FnZS4KKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgd2Ug
bXVzdCB0aW1lb3V0IGV2ZXJ5IHJlY2VpdmVyIGluIHRoZSBzdHJlYW0gY29ubmVjdGlvbi4KKyAg
ICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBhc3NlcnQgdGhhdCB0aGUgcmVjZWl2ZXJzIGFyZSBl
bXB0eSwgYXMgd2Ugb25seSBoYXZlIHVwIHRvIG9uZSByZWNlaXZlciBpbgorICAgICAgICAgICAg
Ly8gYSBzdHJlYW0gY29ubmVjdGlvbiB1bnRpbCBwb3NzaWJpbGl0eSBvZiBza2lwcGluZyBpcyBp
bXBsZW1lbnRlZCBwcm9wZXJseS4KKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3JlY2VpdmVycy5pc0VtcHR5
KCkpOworICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOwor
ICAgICAgICB9CisgICAgICAgIGlmICghZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKFdURk1vdmUoZGVj
b2RlciksICpjdXJyZW50UmVjZWl2ZXIpKQorICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVz
dWx0OjpIYXNOb01lc3NhZ2VzOworICAgIH0KKyAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhh
c01vcmVNZXNzYWdlczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29sIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9jZXNzU2V0U3RyZWFtRGVzdGluYXRp
b25JRChEZWNvZGVyJiYgZGVjb2RlciwgUmVmUHRyPFJlY2VpdmVyPiYgY3VycmVudFJlY2VpdmVy
KQoreworICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGVzdGluYXRpb25JRCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChtX2N1cnJlbnREZXN0aW5hdGlvbklEICE9IGRl
c3RpbmF0aW9uSUQpIHsKKyAgICAgICAgbV9jdXJyZW50RGVzdGluYXRpb25JRCA9IGRlc3RpbmF0
aW9uSUQ7CisgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7CisgICAgfQorICAgIHJl
bGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiBkZWNvZGVy
LCBSZWNlaXZlciYgcmVjZWl2ZXIpCit7CisgICAgcmVjZWl2ZXIuZGlkUmVjZWl2ZVN0cmVhbU1l
c3NhZ2UoKnRoaXMsIGRlY29kZXIpOworICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNv
ZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
bGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmIGRl
Y29kZXIpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2U7CisgICAgewor
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2sp
OworICAgICAgICBpZiAobV9vdXRPZlN0cmVhbU1lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbWVzc2FnZSA9IG1fb3V0T2ZTdHJlYW1NZXNzYWdl
cy50YWtlRmlyc3QoKTsKKyAgICB9CisgICAgaWYgKCFtZXNzYWdlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBSZWZQdHI8UmVjZWl2ZXI+IHJlY2VpdmVyOworICAgIHsKKyAgICAgICAg
YXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdlLT5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpOworICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgIHJlY2Vp
dmVyID0gbV9yZWNlaXZlcnMuZ2V0KGtleSk7CisgICAgfQorICAgIGlmIChyZWNlaXZlcikgewor
ICAgICAgICByZWNlaXZlci0+ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKnRoaXMsICptZXNzYWdl
KTsKKyAgICAgICAgaWYgKCFtZXNzYWdlLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1fY29u
bmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZS0+bWVzc2Fn
ZU5hbWUoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgLy8gSWYgcmVjZWl2ZXIgZG9lcyBub3QgZXhpc3QgaWYgaXQgaGFzIGJlZW4gcmVtb3ZlZCBi
dXQgbWVzc2FnZXMgYXJlIHN0aWxsIHBlbmRpbmcgdG8gYmUKKyAgICAvLyBwcm9jZXNzZWQuIEl0
J3Mgb2sgdG8gc2tpcCBzdWNoIG1lc3NhZ2VzLgorICAgIC8vIEZJWE1FOiBOb3RlLCBjb3JyZXNw
b25kaW5nIHNraXAgaXMgbm90IHBvc3NpYmxlIGF0IHRoZSBtb21lbnQgZm9yIHN0cmVhbSBtZXNz
YWdlcy4KKyAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBvc2l0aW9uKCkpOworICAg
IHJldHVybiB0cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9jb2NvYS9NYWNoUG9ydC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2Ev
TWFjaFBvcnQuaAppbmRleCA3ODU0ZmE4ZjE4NjhmYjhlNDU2MjI4OWZkZGY2ZjI3OTVhZjJkOTBk
Li44M2Q5OWYwY2JjOGZlMDQ4MjBiNDc4M2M5YzA3NmFiNTdhM2VhYjJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmgKQEAgLTI1LDkgKzI1LDggQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiQXR0
YWNobWVudC5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgiCiAK
IG5hbWVzcGFjZSBJUEMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4v
Q29ubmVjdGlvbldpbi5jcHAKaW5kZXggNWFkZmQ4MmJlY2E0NmRiMDI0NDdlOGJjYjZkMzg0YzJj
MDE1NmE2MC4uOTBiODAyYzgwOTZkNzZjMzJiNGI5N2ZiODEyZWFmOTFmZjEzM2U4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1i
ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDY0OTg0
ZDcyZjFjMDA5NzY1MTAyN2EwMjIwNTllODRhNDcyODMxZjQuLmQ3M2Y4M2QwYmZmMzhjYzQ3ZWU5
ZmY4YzExZmZmMmNlN2VhNzdmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQpAQCAtMjQsOCArMjQsOSBAQCBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCByZQog
aW1wb3J0IHN5cwogCitmcm9tIG1vZGVsIGltcG9ydCBNZXNzYWdlUmVjZWl2ZXIsIE1lc3NhZ2UK
IGZyb20gd2Via2l0IGltcG9ydCBwYXJzZXIKLWZyb20gd2Via2l0Lm1vZGVsIGltcG9ydCBCVUlM
VElOX0FUVFJJQlVURSwgQVNZTkNfQVRUUklCVVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEUsIE1B
SU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUKK2Zyb20gd2Via2l0Lm1vZGVsIGltcG9ydCBCVUlM
VElOX0FUVFJJQlVURSwgQVNZTkNfQVRUUklCVVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEUsIE1B
SU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUsIFNUUkVBTV9BVFRSSUJVVEUsIFdBTlRTX0NPTk5F
Q1RJT05fQVRUUklCVVRFCiAKIF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01MywxMyAr
NTQsMTEgQEAgX2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKIAogIiIiCiAKLVdBTlRTX0NPTk5FQ1RJ
T05fQVRUUklCVVRFID0gJ1dhbnRzQ29ubmVjdGlvbicKIFdBTlRTX0RJU1BBVENIX01FU1NBR0Vf
QVRUUklCVVRFID0gJ1dhbnRzRGlzcGF0Y2hNZXNzYWdlJwogV0FOVFNfQVNZTkNfRElTUEFUQ0hf
TUVTU0FHRV9BVFRSSUJVVEUgPSAnV2FudHNBc3luY0Rpc3BhdGNoTWVzc2FnZScKIExFR0FDWV9S
RUNFSVZFUl9BVFRSSUJVVEUgPSAnTGVnYWN5UmVjZWl2ZXInCiBOT1RfUkVGQ09VTlRFRF9SRUNF
SVZFUl9BVFRSSUJVVEUgPSAnTm90UmVmQ291bnRlZCcKIAotCiBkZWYgcmVjZWl2ZXJfZW51bWVy
YXRvcl9vcmRlcl9rZXkocmVjZWl2ZXJfbmFtZSk6CiAgICAgaWYgcmVjZWl2ZXJfbmFtZSA9PSAn
SVBDJzoKICAgICAgICAgcmV0dXJuIDEKQEAgLTIxMyw3ICsyMTIsNyBAQCBkZWYgbWVzc2FnZV90
b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpNYWluVGhyZWFkO1xuJykKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6Q29u
c3RydWN0aW9uVGhyZWFkO1xuJykKLSAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZ
TkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJ
QlVURSk6CisgICAgICAgIGlmIChtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRU
UklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSkgYW5kIG5v
dCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgogICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJicpCiAgICAgICAgICAgICBpZiBsZW4oc2VuZF9w
YXJhbWV0ZXJzKToKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlIGNvbXBs
ZXRpb25faGFuZGxlcl9wYXJhbWV0ZXJzKQpAQCAtMjYxLDYgKzI2MCw3IEBAIGRlZiB0eXBlc190
aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgcmV0dXJuIGZyb3plbnNldChb
CiAgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAnSVBDOjpGb250UmVmZXJl
bmNlJywKKyAgICAgICAgJ0lQQzo6U2VtYXBob3JlJywKICAgICAgICAgJ01hY2hTZW5kUmlnaHQn
LAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCkBAIC01NzMsMTAgKzU3
MywxNSBAQCBkZWYgc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSk6CiAg
ICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdBc3luYycKIAogICAgIHdhbnRzX2Nvbm5lY3Rp
b24gPSBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNz
YWdlLmhhc19hdHRyaWJ1dGUoV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUpCisgICAgbWF5YmVf
cmVwbHlfZW5jb2RlciA9ICIsICpyZXBseUVuY29kZXIiCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0
dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToKKyAgICAgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9
ICcnCisgICAgZWxpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRF
KSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgbWF5
YmVfcmVwbHlfZW5jb2RlciA9ICcsIHJlcGx5RW5jb2RlcicKIAogICAgIHJlc3VsdCA9IFtdCiAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OiVzOjolczo6bmFtZSgpKSB7XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSkp
Ci0gICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+KCVz
ZGVjb2RlciwgJXNyZXBseUVuY29kZXIsIHRoaXMsICYlcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0
aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICdjb25uZWN0aW9uLCAnIGlmIHdhbnRz
X2Nvbm5lY3Rpb24gZWxzZSAnJywgJycgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9O
T1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSkg
ZWxzZSAnKicsIGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpKSkKKyAgICByZXN1
bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXNkZWNvZGVyJXMs
IHRoaXMsICYlcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNz
YWdlLm5hbWUsICdjb25uZWN0aW9uLCAnIGlmIHdhbnRzX2Nvbm5lY3Rpb24gZWxzZSAnJywgbWF5
YmVfcmVwbHlfZW5jb2RlciwgaGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQog
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuO1xuJykKICAgICByZXN1bHQuYXBwZW5k
KCcgICAgfVxuJykKICAgICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9uKCcnLmpvaW4ocmVz
dWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCkBAIC04NzYsNyArODgxLDcgQEAgZGVmIGdlbmVyYXRl
X21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgIGlmIG1lc3NhZ2UucmVwbHlfcGFy
YW1ldGVycyAhPSBOb25lIGFuZCAobWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FU
VFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSkpOgogICAg
ICAgICAgICAgZGVsYXllZF9vcl9hc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkKIAotICAg
IGlmIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXM6CisgICAgaWYgZGVsYXllZF9vcl9hc3luY19t
ZXNzYWdlcyBhbmQgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBNZXNzYWdlcyB7XG5cbm5hbWVzcGFj
ZSAlcyB7XG5cbicgJSByZWNlaXZlci5uYW1lKQogCiAgICAgICAgIGZvciBtZXNzYWdlIGluIGRl
bGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXM6CkBAIC05MjQsMjUgKzkyOSw0NCBAQCBkZWYgZ2VuZXJh
dGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IGFzeW5jX21lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQogCi0gICAgaWYgYXN5bmNfbWVzc2FnZXMg
b3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVU
RSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdF
X0FUVFJJQlVURSk6Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmUl
c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0
dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkKKyAgICBpZiByZWNl
aXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAgICAgICByZXN1bHQuYXBw
ZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJl
Y2VpdmVyLm5hbWUpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQotICAgICAgICBpZiBu
b3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJV
VEUpOgorICAgICAgICBhc3NlcnQocmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRF
RF9SRUNFSVZFUl9BVFRSSUJVVEUpKQorICAgICAgICBhc3NlcnQobm90IHJlY2VpdmVyLmhhc19h
dHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKQorICAgICAgICBhc3Nl
cnQobm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FH
RV9BVFRSSUJVVEUpKQorCisgICAgICAgIHJlc3VsdCArPSBbYXN5bmNfbWVzc2FnZV9zdGF0ZW1l
bnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIGFzeW5jX21lc3NhZ2VzXQorICAg
ICAgICByZXN1bHQgKz0gW3N5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2Up
IGZvciBtZXNzYWdlIGluIHN5bmNfbWVzc2FnZXNdCisKKyAgICAgICAgaWYgKHJlY2VpdmVyLnN1
cGVyY2xhc3MpOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZl
U3RyZWFtTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJj
bGFzcykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5V
U0VEX1BBUkFNKGRlY29kZXIpO1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBV
TlVTRURfUEFSQU0oY29ubmVjdGlvbik7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnfVxu
JykKKyAgICBlbGlmIGFzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FO
VFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUo
V0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgorICAgICAgICByZWNlaXZl
X3ZhcmlhbnQgPSByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZ
X1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJworICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lk
ICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlX3ZhcmlhbnQp
KQorICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgICAgICBpZiBub3QgKHJlY2VpdmVy
Lmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKSBvciByZWNl
aXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpKToKICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTtcbicpCiAK
ICAgICAgICAgcmVzdWx0ICs9IFthc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVz
c2FnZSkgZm9yIG1lc3NhZ2UgaW4gYXN5bmNfbWVzc2FnZXNdCisKICAgICAgICAgaWYgcmVjZWl2
ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVj
ZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVU
RSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRpc3BhdGNoTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKSlcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
ICAgIHJldHVybjtcbicpCiAgICAgICAgIGlmIChyZWNlaXZlci5zdXBlcmNsYXNzKToKLSAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xhc3MpKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNsYXNzLCByZWNlaXZlX3ZhcmlhbnQpKQogICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFN
KGRlY29kZXIpO1xuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTtcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCiAKLSAgICBpZiBz
eW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVT
U0FHRV9BVFRSSUJVVEUpOgorICAgIGlmIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVB
TV9BVFRSSUJVVEUpIGFuZCAoc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRl
KFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSk6CiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJ1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN5bmMl
c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpXG4nICUgKHJl
Y2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdB
Q1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
e1xuJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNf
dW5pdHRlc3QucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0
ZXN0LnB5CmluZGV4IDQ4ZDhlMWI2MjdjYzMxYjE4ZmExYzUwZmFiZWVlZDk3MWJkMTViZTkuLmU4
OWUxN2UxNDA3YjViNTY2YmMxOTJjNDBhOTlhMjhkOGJmOGRjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQpAQCAtNDYsNiArNDYs
OCBAQCBfdGVzdF9yZWNlaXZlcl9uYW1lcyA9IFsKICAgICAnVGVzdFdpdGhJZk1lc3NhZ2UnLAog
ICAgICdUZXN0V2l0aFNlbWFwaG9yZScsCiAgICAgJ1Rlc3RXaXRoSW1hZ2VEYXRhJywKKyAgICAn
VGVzdFdpdGhTdHJlYW0nLAorICAgICdUZXN0V2l0aFN0cmVhbUJ1ZmZlcicKIF0KIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5IGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQppbmRleCA0ODAwZmE0ZWZjYTk2NzhhODlhZmM3
ZTQzNGYyNmIzNDZjZThjZjZjLi41MDdlMDQyYTU3N2ZmOGEwMjMzNzJjM2E2MDdhYjEwOGE1ZmE5
Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKQEAgLTI4LDYgKzI4LDgg
QEAgQlVJTFRJTl9BVFRSSUJVVEUgPSAiQnVpbHRpbiIKIEFTWU5DX0FUVFJJQlVURSA9ICJBc3lu
YyIKIE1BSU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUgPSAiTWFpblRocmVhZENhbGxiYWNrIgog
U1lOQ0hST05PVVNfQVRUUklCVVRFID0gJ1N5bmNocm9ub3VzJworU1RSRUFNX0FUVFJJQlVURSA9
ICJTdHJlYW0iCitXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rpb24n
CiAKIGNsYXNzIE1lc3NhZ2VSZWNlaXZlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBuYW1lLCBzdXBlcmNsYXNzLCBhdHRyaWJ1dGVzLCBtZXNzYWdlcywgY29uZGl0aW9uKToKQEAg
LTczLDcgKzc1LDkgQEAgaXBjX3JlY2VpdmVyID0gTWVzc2FnZVJlY2VpdmVyKG5hbWU9IklQQyIs
IHN1cGVyY2xhc3M9Tm9uZSwgYXR0cmlidXRlcz1bQlVJTFRJTl8KICAgICBNZXNzYWdlKCdXcmFw
cGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZycsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9B
VFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBN
ZXNzYWdlKCdTeW5jTWVzc2FnZVJlcGx5JywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FU
VFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdJbml0aWFsaXplQ29ubmVj
dGlvbicsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249
IlBMQVRGT1JNKENPQ09BKSIpLAotICAgIE1lc3NhZ2UoJ0xlZ2FjeVNlc3Npb25TdGF0ZScsIFtd
LCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSkKKyAg
ICBNZXNzYWdlKCdMZWdhY3lTZXNzaW9uU3RhdGUnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxU
SU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2UoJ1NldFN0cmVhbURl
c3RpbmF0aW9uSUQnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29u
ZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2UoJ1Byb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UnLCBb
XSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpCiBd
LCBjb25kaXRpb249Tm9uZSkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL01ha2VmaWxlIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9NYWtlZmlsZQppbmRleCAyMWIzMGFlMjBmYTEwMzNmYTY2NGUwM2FkYmQ4ODA4NmE2YzcyYzQy
Li5lMTk3YmQzYzI2N2FlNDExYTQ1MDBkMGZmNjkzOTg2MDNhNDUwODA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKQEAgLTYsNiArNiw4IEBAIFRFU1RT
ID0gXAogICAgIFRlc3RXaXRoSWZNZXNzYWdlIFwKICAgICBUZXN0V2l0aFNlbWFwaG9yZSBcCiAg
ICAgVGVzdFdpdGhJbWFnZURhdGEgXAorCVRlc3RXaXRoU3RyZWFtIFwKKwlUZXN0V2l0aFN0cmVh
bUJ1ZmZlciBcCiAjCiAKIGFsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcAppbmRleCA3ZDVhZmM5MThlNWIwNWI4ZjdhNWNkNjIz
ODUyYjVjMGUwYzE4YTAzLi4yZTdjYTE1ZTc0ZWJiZGE4NmM3OWY4ZmMwYjhmMzhiNGI1Zjc1ODk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VO
YW1lcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdl
TmFtZXMuY3BwCkBAIC0xMzQsNiArMTM0LDEwIEBAIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKE1l
c3NhZ2VOYW1lIG5hbWUpCiAgICAgICAgIHJldHVybiAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iOwog
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZToKICAgICAgICAgcmV0dXJu
ICJMZWdhY3lTZXNzaW9uU3RhdGUiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRP
ZlN0cmVhbU1lc3NhZ2U6CisgICAgICAgIHJldHVybiAiUHJvY2Vzc091dE9mU3RyZWFtTWVzc2Fn
ZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRDoKKyAgICAg
ICAgcmV0dXJuICJTZXRTdHJlYW1EZXN0aW5hdGlvbklEIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1l
OjpTeW5jTWVzc2FnZVJlcGx5OgogICAgICAgICByZXR1cm4gIlN5bmNNZXNzYWdlUmVwbHkiOwog
ICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdl
UmVwbHk6CkBAIC0yMjQsNiArMjI4LDggQEAgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShNZXNz
YWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVzdFdp
dGhvdXRBdHRyaWJ1dGVzOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25uZWN0
aW9uOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZToKKyAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlOgorICAgIGNhc2UgTWVzc2Fn
ZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQ6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3lu
Y01lc3NhZ2VSZXBseToKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SVBDOwogICAgIGNh
c2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHk6
CkBAIC00MDEsNiArNDA3LDEwIEBAIGJvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3NhZ2VOYW1l
IG1lc3NhZ2VOYW1lKQogI2VuZGlmCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2Fn
ZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3Nh
Z2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1l
c3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklEKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBs
eSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmluZGV4
IGVmZWEyMzAyZDY4N2JlNGY1MjI2OTBmNzhhM2M2NGY2MzZlMzFmZDguLmEyMmJkMWNmZDdmNzNi
ZTllYWIxY2JiYzBmZjBjNmVmMDZhMDY0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaApAQCAtOTMsNiArOTMsOCBAQCBlbnVtIGNs
YXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3QgewogICAgICwgVGVzdFdpdGhvdXRBdHRyaWJ1dGVz
X1RvdWNoRXZlbnQKICAgICAsIEluaXRpYWxpemVDb25uZWN0aW9uCiAgICAgLCBMZWdhY3lTZXNz
aW9uU3RhdGUKKyAgICAsIFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UKKyAgICAsIFNldFN0cmVh
bURlc3RpbmF0aW9uSUQKICAgICAsIFN5bmNNZXNzYWdlUmVwbHkKICAgICAsIFRlc3RXaXRoU3Vw
ZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHkKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFzc19U
ZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb25SZXBseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMu
aW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmQwZjUyOGM2OWNkZWZkZGE5YzQ4Njc5MTM4YzYzOGI4YWMwY2IzMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRlc3RzIFN0cmVhbSByZWNlaXZlciBhdHRyaWJ1
dGUuCittZXNzYWdlcyAtPiBUZXN0V2l0aFN0cmVhbSBOb3RSZWZDb3VudGVkIFN0cmVhbSB7Cisg
ICAgdm9pZCBTZW5kU3RyaW5nKFN0cmluZyB1cmwpCisgICAgdm9pZCBTZW5kU3RyaW5nU3luY2hy
b25pemVkKFN0cmluZyB1cmwpIC0+IChpbnQ2NF90IHJldHVybikKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtQnVmZmVyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExNzBhYzg5YTI1ZjAzOTIxOWZlNDE4
MTA1YjJjMWQwNGFlMGM3ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluCkBAIC0wLDAg
KzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBUZXN0
cyBTdHJlYW0gcmVjZWl2ZXIgYXR0cmlidXRlLgorbWVzc2FnZXMgLT4gVGVzdFdpdGhTdHJlYW1C
dWZmZXIgIHsKKyAgICB2b2lkIFNlbmRTdHJlYW1CdWZmZXIoSVBDOjpTdHJlYW1Db25uZWN0aW9u
QnVmZmVyIHN0cmVhbSkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzljOTI0MGE0ZWIxYWI1NTc0MDk2MDIyOTFkYzEyNzMx
OTg3ZjA1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICog
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VGVzdFdpdGhTdHJlYW1CdWZmZXIuaCIKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRl
ICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgor
I2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3ZvaWQgVGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFt
QnVmZmVyOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcj4oZGVjb2RlciwgdGhpcywgJlRl
c3RXaXRoU3RyZWFtQnVmZmVyOjpzZW5kU3RyZWFtQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGRl
Y29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEyNGVi
ZGQyMDBmMzM5MDQ3N2RmYWY3Y2Q4NTcxOTFiZDUzYjI4NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNz
YWdlcy5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyOworfQorCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNl
IFRlc3RXaXRoU3RyZWFtQnVmZmVyIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFt
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6
OlRlc3RXaXRoU3RyZWFtQnVmZmVyOworfQorCitjbGFzcyBTZW5kU3RyZWFtQnVmZmVyIHsKK3B1
YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgp
IHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRTdHJl
YW1CdWZmZXI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKworICAg
IGV4cGxpY2l0IFNlbmRTdHJlYW1CdWZmZXIoY29uc3QgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyJiBzdHJlYW0pCisgICAgICAgIDogbV9hcmd1bWVudHMoc3RyZWFtKQorICAgIHsKKyAgICB9
CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBt
X2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyCit9
IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3Nh
Z2VzUmVwbGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZmEyYWQ3ZDUwNjMwMGYzY2NiMzkwZjE5NzI1OWQ5
MGU2OTNmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2Fn
ZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVzc2Fn
ZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyIHsKKworCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2l0aFN0cmVhbUJ1ZmZlcgorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNz
YWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0
V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM5ODg1NWFkNTZlOTUx
OTk3YzlkMmFiM2Y4ODgwOTRjODg5MjMyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
ICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW0uaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNp
bmNsdWRlICJUZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFRlc3RXaXRoU3RyZWFtOjpk
aWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBj
b25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGRlY29kZXIubWVz
c2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUo
KSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFt
OjpTZW5kU3RyaW5nPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmcp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpuYW1l
KCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVh
bTo6U2VuZFN0cmluZ1N5bmNocm9uaXplZD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3RyZWFt
OjpzZW5kU3RyaW5nU3luY2hyb25pemVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBV
TlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1N
ZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0
cmVhbU1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBiZmViYWIyMzcyYzFmNjYwNWM1NTg5NDU5Mzhi
ZjFlNGU3YWFmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAq
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2lu
Y2x1ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNw
YWNlIFRlc3RXaXRoU3RyZWFtIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFtZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6OlRl
c3RXaXRoU3RyZWFtOworfQorCitjbGFzcyBTZW5kU3RyaW5nIHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OworCisgICAgc3RhdGljIElQ
Qzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRo
U3RyZWFtX1NlbmRTdHJpbmc7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxz
ZTsKKworICAgIGV4cGxpY2l0IFNlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmwpCisgICAgICAg
IDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMm
IGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2NsYXNz
IFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9
IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFt
ZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0
cmluZ1N5bmNocm9uaXplZDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRydWU7
CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8aW50NjRfdCY+OworICAgIHVzaW5nIFJl
cGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxpbnQ2NF90PjsKKyAgICBleHBsaWNpdCBTZW5kU3Ry
aW5nU3luY2hyb25pemVkKGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1lbnRz
KHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2l0aFN0cmVhbQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMu
aCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNz
YWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmM1YTA3OGRlMDFlYzE0MzBmODk0ZjIwY2I5YzJm
OTE1NWU3Y2FiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oCkBAIC0wLDAgKzEsMzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisg
KiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VOYW1l
cy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsK
K25hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbSB7CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhT
dHJlYW0KK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBmOWJhNWRjNzgy
NGIxZTViMDNlNTNmOThiN2E3ZjhlNGRlZjIxYzY0Li40NTg5MjZmMjViZDZkNTE2MmE3NTljZTBj
NzNmOGVhMWViMTdkNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE1MCw2ICsxNTAsMTAgQEAgUGxhdGZv
cm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvTWVz
c2FnZVNlbmRlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAg
QG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgQG5vLXVu
aWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgQG5vLXVuaWZ5CitQ
bGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgQG5vLXVuaWZ5CitQbGF0
Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9J
UEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkKIAogUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggYzMzMDc4MjViMjAwODZkZWQ0Yzg2
YzY0ODhjZTVkZDU3ZWMwYzM1OC4uODk1MjA4YzNiYzIyNmQ2ZmIxMjg2MWRhNDM3Y2RhMzgxZjQ4
ZDYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCAzMDFkMGVkODMwZGJlZDkwOGNiYjI3
ODg2ZjA0YThmZWVhOWZkODllLi4yM2FiMTBkNjNhNGY0YTNmZDIwY2VkNGQ3MzAxNzNmNDc1ZGM3
ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgi
CiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJl
bmNlLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRl
cnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5o
CmluZGV4IDdhMzhkZTU1NjhjZDQ3ODc5NWNlYTU2YzMxMjI2MjBkNDVjNjU3M2MuLmZkNTFlNWI5
YjEyOGMyNzhmMTU2OWE3NThiODYwOTAzYTA2ZDM5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiUG9saWN5
RGVjaXNpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGZkODMyY2RhODhiMWI3ZTM4YjVhZTkzZjRlNDgxM2I0MTljZWU2NDcuLjVm
NzJjZTJhMThjZjM4YmNhYzIyMmMwMDI4YjRlMjc3ZTFjMjUzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMzNSw2ICsxMzM1LDE2
IEBACiAJCTdCNDgzRjIwMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxQzI1
Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OwogCQk3QjQ4M0Yy
MTI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxRDI1Q0REQTlCMDAx
MjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi87IH07CiAJCTdCNDgzRjIyMjVD
RERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2IC8q
IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi87IH07CisJCTdCNzMxMjNBMjVDQzg1MjUwMDNCMjc5
NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlci5oICovOyB9OworCQk3QjczMTIzQjI1Q0M4NTI1MDAzQjI3OTYgLyogU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5jcHAgKi87IH07CisJCTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBT
dHJlYW1DbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjczMTIzMzI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5oICovOyB9OworCQk3QjczMTIzRDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci5jcHAgKi87IH07CisJCTdCNzMxMjNFMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjczMTIzNTI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZS5oICovOyB9OworCQk3QjczMTIzRjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAg
Ki87IH07CisJCTdCNzMxMjQwMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
NzMxMjM3MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLzsg
fTsKKwkJN0I3MzEyNDEyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM4
MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CisJCTdC
NzMxMjQyMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzkyNUNDODUy
NTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi87IH07CisJCTdCQUIxMTEw
MjVERDAyQjMwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkFCMTEwRjI1REQw
MkIyMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9Owog
CQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0
YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5
cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9y
bWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0QTBF
NjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlv
bmFyeS5oICovOyB9OwpAQCAtNDU0NCw2ICs0NTU0LDE1IEBACiAJCTdCNDgzRjFEMjVDRERBOUIw
MDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJl
Y2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2FnZVJl
Y2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYyNTRD
NUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzMjI1Q0M4NTIzMDAz
QjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzMyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVh
bUNsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qjcz
MTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzUyNUNDODUyNDAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1DbGll
bnRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzcy
NUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAvKiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00NTUxLDYgKzQ1NzAsNyBAQAogCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2QTI1
NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVu
Y3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
RnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQUIx
MTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNl
aXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NTcyNTc0RjY3
MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0
ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1
bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCRTcy
NjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTg1LDEwICs3MDA1LDIwIEBACiAJCQkJMUEz
RUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5oICovLAogCQkJCTFB
QUIwMzc3MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmNwcCAqLywKIAkJCQkxQUFC
MDM3ODE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oICovLAorCQkJCTdCQUIxMTBG
MjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggKi8s
CiAJCQkJMkRDMTgwMDFEOTBEREQxNUZDNjk5MUE5IC8qIFNoYXJlZEJ1ZmZlckNvcHkuY3BwICov
LAogCQkJCTVDQzVEQjkxMjE0ODhFMTYwMDZDQjhBOCAvKiBTaGFyZWRCdWZmZXJDb3B5LmggKi8s
CiAJCQkJMkRDMTg1NUVEQkZCODUwQkEwQjZEMDZEIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuY3BwICovLAogCQkJCTJEQzE4ODFBQ0JDQUI1RDU3QzVDNkVGMCAvKiBTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmggKi8sCisJCQkJN0I3MzEyMzYyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVh
bUNsaWVudENvbm5lY3Rpb24uY3BwICovLAorCQkJCTdCNzMxMjMzMjVDQzg1MjMwMDNCMjc5NiAv
KiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggKi8sCisJCQkJN0I3MzEyMzQyNUNDODUyNDAwM0Iy
Nzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwICovLAorCQkJCTdCNzMxMjMxMjVDQzg1
MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8sCisJCQkJN0I3MzEyMzky
NUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi8sCisJCQkJN0I3
MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICov
LAorCQkJCTdCNzMxMjM1MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1
ZXVlLmggKi8sCisJCQkJN0I3MzEyMzcyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uY3BwICovLAorCQkJCTdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmggKi8sCiAJCQkJMUFFMDBENjkxODMyN0MxMjAwMDg3REQ3IC8qIFN0
cmluZ1JlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFFMDBENkExODMyN0MxMjAwMDg3REQ3IC8qIFN0
cmluZ1JlZmVyZW5jZS5oICovLAogCQkJKTsKQEAgLTEyMDExLDYgKzEyMDQxLDcgQEAKIAkJCQlC
QzJEMDIxNzEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBQUI0QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0
ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyog
U2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0JB
QjExMTAyNUREMDJCMzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU0RDA0MjFGMUQ3MkQwMDdFM0MzNiAvKiBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjkzMUMxQzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzFDMUMxOEM1NzExOTAwREJCOEQ0IC8q
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBpbiBIZWFkZXJzICovLApA
QCAtMTIwNjAsNiArMTIwOTEsMTEgQEAKIAkJCQk5MzZCMDU5ODIzMDM5MDk3MDAyRkMwNkIgLyog
U3RvcmFnZU1hbmFnZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNjhFRURGMjMwM0E5RUQw
MEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NjVGNEUwNjIzMEIyRTk1MDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1D
bGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIzQTI1Q0M4NTI1MDAz
QjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3
MzEyNDIyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QjczMTIzRTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyNDEyNUNDODUyNTAwM0IyNzk2
IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTAwRDZD
MTgzMjdDMTIwMDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTI5NkJEODVEMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3RkQzMTg2MjJCMzUxNkMwMDhEMEU4QiAvKiBTdWJGcmFtZVNPQXV0aG9yaXph
dGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTM4ODYsNiArMTM5MjIsMTAgQEAKIAkJ
CQk5M0Q2Qjc4MjI1NENDQ0Y0MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzMzRERUQxNkRFOEY4ODAwNkE4
RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzNjhFRURFMjMwM0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIzRjI1Q0M4NTI1MDAzQjI3OTYg
LyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIz
RDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3QjczMTIzQjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTI0MDI1Q0M4NTI1MDAzQjI3OTYg
LyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4
MzIxMkI2QTcxMDBGNDkzRkQgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEMTFCNzUxMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTJEMTFCNzUyMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNl
MS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwCmluZGV4IGYyOWJlMDA2ZWI3Yjk3NjRiNzgyZDkxNjI1YzgwMTYwZmY4ZjM2ZjMuLmIx
OWJjMWUwYTAxOTA3ZjljZWRkNjBhNTY1NzVmYWRmNWM5ZDg4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtNDgsMTMgKzQ4LDE2IEBAIFJlZlB0cjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oKSwgYXR0cmlidXRlcykpOwogfQogCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZh
dWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjE7CisKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVBy
b2Nlc3NDb25uZWN0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJz
KQogICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cnMpCiAgICAgLCBt
X2dwdVByb2Nlc3NDb25uZWN0aW9uKCZncHVQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAsIG1fc3Ry
ZWFtQ29ubmVjdGlvbihncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGRlZmF1bHRT
dHJlYW1TaXplKQogewogICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7
CiAgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCks
ICp0aGlzKTsKLSAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhpY3NDb250ZXh0R0woYXR0cnMsIG1fZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVu
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRy
cywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIG1fc3RyZWFtQ29ubmVjdGlvbi5zdHJl
YW1CdWZmZXIoKSksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5X
YWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
flJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoKQpAQCAtMTYzLDcgKzE2Niw3IEBAIEdDR0xl
bnVtIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldEVycm9yKCkKICAgICByZXR1cm4g
c3RkOjpleGNoYW5nZShtX2Vycm9yV2hlbkNvbnRleHRJc0xvc3QsIE5PX0VSUk9SKTsKIH0KIAot
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3Vj
Y2VlZCwgU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0
ZW5zaW9ucykKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChi
b29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlJiYgc2VtYXBob3JlLCBTdHJpbmcmJiBhdmFp
bGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQogewogICAgIGlm
IChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE3Miw2ICsxNzUsNyBAQCB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNj
ZWVkLCBTdHJpbmcmJiBhdmFpbGFibAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VS
VCghbV9kaWRJbml0aWFsaXplKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24uc2V0V2FrZVVwU2Vt
YXBob3JlKFdURk1vdmUoc2VtYXBob3JlKSk7CiAgICAgbV9kaWRJbml0aWFsaXplID0gdHJ1ZTsK
ICAgICBpbml0aWFsaXplKGF2YWlsYWJsZUV4dGVuc2lvbnMsIHJlcXVlc3RlZEV4dGVuc2lvbnMp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCA4MzFiNGIw
YWIxMzdlNmFhZjgzNTk2ZTBiMGEwNzZkZjFlMDkxNzYxLi43ODk3ZjZjZmU4M2NlYzU1ZmZhMmY2
M2E5NzRmYWE3ZjAxM2FhOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaApAQCAtMjksMTAgKzI5LDExIEBACiAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IklQQ1NlbWFwaG9yZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCisjaW5jbHVkZSAi
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg+CkBAIC0zMzQsMTkgKzMzNSwx
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQogICAgIHsKLSAgICAgICAgY29ubmVjdGlv
bigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
dG9VSW50NjQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1f
c3RyZWFtQ29ubmVjdGlvbi5zZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRT
eW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1l
c3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9V
SW50NjQoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgcmV0dXJuIG1fc3RyZWFtQ29u
bmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIGRlZmF1bHRTZW5kVGltZW91dCk7CiAgICAgfQogICAg
IElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKTsgfQogCiBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2Vz
IHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgd2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0
cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMp
OworICAgIHZvaWQgd2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlJiYs
IFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lv
bnMpOwogICAgIHZvaWQgd2FzTG9zdCgpOwogICAgIHZvaWQgd2FzQ2hhbmdlZCgpOwogCkBAIC0z
NjAsOCArMzYwLDggQEAgcHJpdmF0ZToKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbjsKICAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7IGZhbHNlIH07CiAg
ICAgR0NHTGVudW0gbV9lcnJvcldoZW5Db250ZXh0SXNMb3N0ID0gTk9fRVJST1I7Ci0KICAgICBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
eyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBJUEM6OlN0
cmVhbUNsaWVudENvbm5lY3Rpb24gbV9zdHJlYW1Db25uZWN0aW9uOwogfTsKIAogLy8gVGhlIEdD
R0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQgSVBDIHR5cGVzLiBUaGUgbGlzdCBpcyB1
c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGE3YzY0MTJhYzk0NmUy
NThjZTAxMzhiYzQ3YmMzODYyMTk1MDIxZDcuLmY0M2VjMGEyZWFhMzg0ZTRlZGU4ZGQ0NDBkOWVm
ZTAyOGFjYjdiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShXRUJHTCkKIAogbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIFdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNj
ZWVkLCBTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5z
aW9ucykKKyAgICB2b2lkIFdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9y
ZSBzdHJlYW1XYWtlVXBTZW1hcGhvcmUsIFN0cmluZyBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJp
bmcgcmVxdWVzdGFibGVFeHRlbnNpb25zKQogICAgIHZvaWQgV2FzTG9zdCgpCiAgICAgdm9pZCBX
YXNDaGFuZ2VkKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5o
CmluZGV4IDdhYWQ3ZGEyMDcwZGU4M2QxNGM3MWRkOTgyNDc0YWFmMTA2YTdkYjUuLmYxMzQxZGNk
Mjc2ZDBjMTAxZTQ0YmRkYTE3Y2U0MGI4YTNjYjM2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmgKaW5kZXggZTRjY2NmMGRj
NTdlYzg0ZWE2ZWM0ZGE5ODM0Y2NjYzRhNWE1MTk3My4uODk4ZTIwZDE3NTQ0YjI4YTk0Y2NmNDYz
NjhkNGRlMmZmNWUyYzIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJM
aWJXZWJSVENTb2NrZXRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViTUROU1JlZ2lzdGVyLmgiCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWViOWYx
OWI4ZjQyZWFmMmMxMzZmYzliY2RhOTdhZjllZmMyNmQ2My4uODQwNDI0MDI4MjRhZmI1NjNkNGNh
NzQzN2NhNDBkNDU4ZmUyOThhOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAyLTA1ICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nlc3MgSVBD
IHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1hcmsgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgbWVzc2Fn
ZSByZWNlaXZlciBhcyAiU3RyZWFtIiwKKyAgICAgICAgYSBuZXcgdmFyaWFudCBvZiByZWNlaXZl
ci4KKworICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoKKwogMjAyMS0wMi0x
OCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBQYWdlIHVw
ZGF0ZXMgYW5kIHJBRiBjYWxsYmFja3Mgc2hvdWxkIHJ1biBhdCBhIGZyZXF1ZW5jeSBjbG9zZSB0
byA2MEh6IG9uIGhpZ2ggcmVmcmVzaC1yYXRlIGRpc3BsYXlzCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAt
d2ViZ2wKaW5kZXggNTY4NWU5MDc1MzUzZmQxZDJjZWE5NDYyMDZiNTdlNDhiNDI2NjNmZC4uODM0
NjI4MjM0MDFjMTY4MzA3MjJhZWIzNTQ1ZWNmZWVmYjY0YTg4MyAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbApAQCAtODksNyArODksNyBAQCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlID0g
KAogICAgIHRlbXBsYXRlX3ByZWFtYmxlCiAgICAgKyAiIiIjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IE5vdFJlZkNvdW50ZWQge3sKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5v
dFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGlu
dDMyX3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRp
c3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDFiYmY3YWU5MzhiOTUyM2YyMjNhZmJiODc2Zjg1ZTljZWU4ZDQwNjYuLmM1Y2IwYmVhNGJi
ODM5M2Y4MzA5YjRmZTVhYmUwNWVhMDQzOTRhYTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAy
MS0wMi0xNyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAg
IFdlYkdMIEdQVSBwcm9jZXNzIElQQyBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIGFzeW5j
aHJvbm91cyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE5NjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM0MDY1MT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXJrIGZldyB0ZXN0
cyBhcyBub3QgdGltaW5nIG91dCBub3cgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm90IHNv
IHNsb3cuCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIx
LTAyLTE4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBSb290IHNjcm9sbCBzbmFwcGluZyBicm9rZW4gd2hlbiBvdmVyZmxvdzpzY3JvbGwgaXMgc2V0
IG9uIHRoZSA8Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDNiOTBjMmFiYWMxYWZlMzVkZjg2NGE0YWJiOTNhYmIwMDI5MGZhYTQuLmYzYWY5M2M1OTZj
N2QzYTAxZGQ3MjkxYzkwNGJkMmQwMGVmOTgwZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dw
dS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3Mv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMzQsNyArMzQsNyBAQCBmYXN0L2NhbnZhcy93ZWJnbC90ZXhJ
bWFnZTJELW1zZS1mbGlwWS10cnVlLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvY2FudmFzL3dlYmds
L3RleEltYWdlMkQtdmlkZW8tZmxpcFktZmFsc2UuaHRtbCBbIFRpbWVvdXQgXQogZmFzdC9jYW52
YXMvd2ViZ2wvdGV4SW1hZ2UyRC12aWRlby1mbGlwWS10cnVlLmh0bWwgWyBGYWlsdXJlIF0KIGZh
c3QvY2FudmFzL3dlYmdsL3RleHR1cmUtYWN0aXZlLWJpbmQuaHRtbCBbIEZhaWx1cmUgXQotZmFz
dC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBUaW1lb3V0IF0KK2Zh
c3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgU2xvdyBdCiBmYXN0
L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBbIFRpbWVvdXQgXQog
CiBmYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2guaHRtbCBbIEZhaWx1cmUgXQpA
QCAtMjMwLDcgKzIzMCw2IEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2Vz
LXRleHR1cmUtZmxvYXQtd2l0aC1jYW52YXMuaHRtbCBbIEZhaWx1cmUKIHdlYmdsLzEuMC4zL2Nv
bmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC12aWRlby5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJl
LWhhbGYtZmxvYXQtd2l0aC1jYW52YXMuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29u
Zm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgtdmlkZW8uaHRt
bCBbIEZhaWx1cmUgXQotd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJh
dy1jYWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9zdGF0ZS9n
bC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1h
bmNlL3RleHR1cmVzL2dsLXBpeGVsc3RvcmVpLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4z
L2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtY2Fu
dmFzLXJnYjU2NS5odG1sIFsgRmFpbHVyZSBdCkBAIC0yNDksNyArMjQ4LDcgQEAgd2ViZ2wvMS4w
LjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4LWltYWdlLXdlYmdsLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHBhcmFtZXRlci10ZXN0Lmh0bWwg
WyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtYWN0
aXZlLWJpbmQtMi5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0
dXJlcy90ZXh0dXJlLWFjdGl2ZS1iaW5kLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmdsLzEuMC4zL2Nv
bmZvcm1hbmNlL3VuaWZvcm1zL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgVGltZW91dCBd
Cit3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBsZXJzLXRlc3Qu
aHRtbCBbIFNsb3cgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvY2FudmFzL2NhbnZhcy10ZXN0
Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2NhbnZhcy9kcmF3LXN0
YXRpYy13ZWJnbC10by1tdWx0aXBsZS1jYW52YXMtdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJn
bC8yLjAuMC9jb25mb3JtYW5jZS9jYW52YXMvZHJhdy13ZWJnbC10by1jYW52YXMtdGVzdC5odG1s
IFsgRmFpbHVyZSBdCkBAIC0yNjEsNyArMjYwLDYgQEAgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9h
dC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9l
eHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9yZWFkaW5nL3JlYWQtcGl4ZWxzLXRlc3QuaHRt
bCBbIEZhaWx1cmUgXQotd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJh
dy1jYWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9zdGF0ZS9n
bC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1h
bmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQt
cmdiLXJnYi11bnNpZ25lZF9zaG9ydF81XzZfNS5odG1sIFsgRmFpbHVyZSBdCkBAIC0yODcsNyAr
Mjg1LDcgQEAgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2FudmFzL3Rl
eC0yZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0XzVfNl8KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNl
L3RleHR1cmVzL3dlYmdsX2NhbnZhcy90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRt
bCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvd2ViZ2xfY2Fu
dmFzL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNF80XzRfNC5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy93ZWJnbF9jYW52YXMvdGV4LTJk
LXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF81XzVfNV8xLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmds
LzIuMC4wL2NvbmZvcm1hbmNlL3VuaWZvcm1zL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsg
VGltZW91dCBdCit3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBs
ZXJzLXRlc3QuaHRtbCBbIFNsb3cgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3JlYWRpbmcv
cmVhZC1waXhlbHMtcGFjay1wYXJhbWV0ZXJzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4w
L2NvbmZvcm1hbmNlMi9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgWyBUaW1lb3V0IF0K
IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9jYW52YXMvdGV4LTJkLXIxMWZfZzEx
Zl9iMTBmLXJnYi1mbG9hdC5odG1sIFsgRmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420956</attachid>
            <date>2021-02-19 04:41:13 -0800</date>
            <delta_ts>2021-02-19 06:11:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210219144111.patch</filename>
            <type>text/plain</type>
            <size>168141</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdjMDJiMWVhMmViNDRlNzE5
ZDgyNGY0ODU0Y2YwZDhiNjBiMzNmYWEuLjBkMzJmZTUzMzVhNjgzNmE0MzRiZTNiNWM1NGEzNTNh
MjUzODM4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNzYWdl
IGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFuZCBi
dWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2FnZXMK
KyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRoZW4g
cGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBpbXBs
ZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBzZW1p
LWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci4g
VGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJlYW0g
Y29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1lc3Nh
Z2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJvdWdo
IG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAgICAg
ICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZlciBh
bmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVjdGlv
bi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3ltbWV0
cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2VzIGFu
ZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJlY2Vp
dmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNlaXZl
ZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAgcHJv
Y2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVudGx5
IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hyb25v
dXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQgdGhy
b3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhhdmlu
ZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAgIGlu
IHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0IGlu
IGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBvbmUg
Mm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJlIHdp
bGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24KKyAg
ICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFyIHRo
cmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJvcHRp
bWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAgcHJv
Y2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2UgdG8g
aGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGljaXBh
dGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8gc2Ft
ZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1pemF0
aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFzIHBh
cnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAgIElu
IEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sgcXVl
dWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQgd2ls
bCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24gcGVy
IGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAgICBT
ZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRpb24g
d2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYgdGhl
IG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUgaXQg
dGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91dCBv
ZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9uIGFy
cml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAgICBt
ZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2lsbCBz
dG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxsIGNv
bnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4gcHJv
Y2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0cmVh
bSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1lc3Nh
Z2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMgc2Vu
ZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0gY29u
bmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9yZS4g
VGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlzIHdh
aXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6Cisg
ICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAgcG9p
bnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAgIC0g
V2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2ggfjYw
ZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAgICBO
byBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ojpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlVW5p
bml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4gdGhl
IHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0aW9u
cyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1ZXVl
SW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpz
ZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVldWVJ
bml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBt
dWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0aGUg
SVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmlsaXR5
IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xpZW50
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpE
ZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6Cisg
ICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNvbnN0
cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZmZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBD
OjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNwZWNp
ZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFyZSB1
bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRocm91
Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAgICAg
VGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBpcyBy
ZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2FzZSB3
aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRoZSBz
dHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAgICog
UGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBDOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAgICAg
ICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2FrZXVw
IHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNlbWFw
aG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24uIEFs
bCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2ZSB0
aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhleSBo
YXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5
bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVzdGlu
YXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246
OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2l6
ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1pdCBj
b25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0YSB0
aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVNZW1v
cnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3BlcmF0
b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6CisgICAg
ICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAgICAg
ICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAoSVBD
OjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0aGUg
Y29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZlci4K
KyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90aCB0
aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4KKyAg
ICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1cCwg
dGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFsbCB0
aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAiaG9s
ZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBvZiAi
YnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAgICAg
IGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRkZWQu
CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6
YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBjb250
YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAgICAg
Rm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBwcm9j
ZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUgb2Yg
dGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwgc2xl
ZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3aWxs
IHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdpbGwg
d2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKworICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0
UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6CisgICAg
ICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9mZnNl
dCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXplIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5j
UmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6
c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyk6
CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9jZXNz
U2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3Nh
Z2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUgbWVz
c2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRoZSBi
dWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRoYXQg
dGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1hbCBJ
UEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3NhZ2Ug
dW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6CisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdTdHJl
YW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFzCisg
ICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJlY2Vp
dmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxsIG1l
c3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1lc3Nh
Z2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAgICAg
IGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUgc3Ry
ZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJUEMg
bWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNzZWQu
CisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0aW9u
SUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJlYW0g
bWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAgICAg
IHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJlYW1E
ZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAgICAg
KElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1lKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhT
dHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVkLgor
ICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVh
bUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6
OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2FnZXM6
OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29uc3Qp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVz
c2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAg
ICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6CisgICAg
ICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAgICAg
ICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRzIGNv
bnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNo
cm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRT
dHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAoTWVz
c2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVudHMg
Y29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVz
c2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToKKyAg
ICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0IG9m
IHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9wZXJh
dG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6On5T
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZSk6
CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVsZCBz
aW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0xOSAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmVh
dGUgU1FMaXRlIHNrZWxldG9uIGltcGxlbWVudGF0aW9uIGZvciBQQ00gZnJhdWQgcHJldmVudGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IGUxNjdlYzAyNjQ0MjA1Njk4N2JlOThlNTQ3OTZjNjMxNjU1OTYx
NjcuLmRhZjAzODE0NTM4OWQ0Njc2ODJkNGM5NGI2MDA4NTdkZDFlMzFhNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKQEAgLTMxNSw3ICszMTUsNyBAQCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eSYgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6aW1hZ2VEZWNvZGVyQVZGUHJveHkoKQogdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxp
c3RTZW1hcGhvcmUpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNYXAuZW5zdXJlKGlkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+KFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmllciwgV1RGTW92ZShyZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZSkpKTsKKyAgICAgICAgcmV0dXJuIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZSB7IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmll
ciwgV1RGTW92ZShyZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpIH07CiAgICAgfSk7CiAgICAg
QVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KQEAgLTMy
NiwyNSArMzI2LDE2IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJl
bmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiAgICAgQVNTRVJUX1VOVVNF
RChmb3VuZCwgZm91bmQpOwogfQogCi1HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kV3JhcHBlcjo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVm
PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICA6
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChXVEZNb3ZlKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQp
KQotewotfQotCi1HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlcjo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyKCkKLXsKLSAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQtPmRpc2Nvbm5lY3QoKTsKLX0KLQogI2lmIEVOQUJMRShXRUJH
TCkKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQordm9pZCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYmIHN0cmVhbSkKIHsKLSAgICBhdXRvKiByZW5kZXJpbmdCYWNrZW5kID0gbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmdldChyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7
Ci0gICAgaWYgKCFyZW5kZXJpbmdCYWNrZW5kKQorICAgIGF1dG8gaXQgPSBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRNYXAuZmluZChyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgaWYg
KGl0ID09IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJu
OworICAgIGF1dG8qIHJlbmRlcmluZ0JhY2tlbmQgPSBpdC0+dmFsdWUuZ2V0KCk7CiAKICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAuZW5zdXJlKGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgWyZdKCkgewotICAgICAgICByZXR1cm4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCAqdGhpcywgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCByZW5kZXJpbmdCYWNrZW5kLT5nZXQoKSk7CisgICAgICAgIHJldHVybiBJ
UEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsICpyZW5kZXJpbmdCYWNrZW5kLCBXVEZNb3ZlKHN0cmVhbSkpIH07CiAgICAg
fSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCmluZGV4IDVlODIwMzM1N2Y3ODFmZGMwNTNlMTVkY2M4ZmM4ZTE1OTYwNDRlNDYu
LjkyZDE4MjQ1NGUzODBkMTMyOWFlMWYyNDMzOWQxZWJiMWZmMTFhODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvbklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ0Vu
dW1UcmFpdHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+CkBAIC0x
MzgsNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5k
KFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2
b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsK
ICAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOwogI2VuZGlmCiAKQEAgLTIwNiwyMCArMjA3LDEwIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2FsbG93c0Rpc3BsYXlDYXB0dXJlIHsgZmFsc2UgfTsKICNlbmRpZgogCi0gICAgY2xhc3Mg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIgewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmKTsKLSAgICAgICAgflJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyKCk7Ci0gICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIGdl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5nZXQoKTsgfQotICAg
IHByaXZhdGU6Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKKyAgICB1c2luZyBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBD
OjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+
PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcDsKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpT
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47
CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRH
TE1hcDsKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDJiNjhlM2IwODdhOTM1ZDE5ZWIxZDc5N2JiZTgzYWQ5ZDM4MDQ4
MDIuLmEzNDEyOWZkMWQzMDU3YzM4YzZjNGJjM2UyYTY4M2Y5ZDU2MDFjYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRl
UmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50
aWZpZXIsIElQQzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgIHZv
aWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAg
dm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV2ViS2l0OjpSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIgc3RyZWFtKQogICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNl
bmRpZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmNwcAppbmRleCBlYTMxMTNiM2YxZDlkNDRiYTM4Yzg5ZjUwMzE1ODA3MmE5ZjU4ZjkwLi5iZmJl
NzI1NTMyNzJlMWJlZjZjNGM1OTRmYTZkZjc1ZjljMDJmYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHAKQEAgLTMxLDU2ICszMSw4MCBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+Ci0KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBv
bmUgZ2xvYmFsIFdlYkdMIHByb2Nlc3NpbmcgaW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlJiByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1
ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZT4gaW5zdGFuY2UoIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsK
KyAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1z
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYpCitSZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVuZGVyaW5nQmFja2VuZCwg
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gaW5zdGFuY2UgPSBhZG9w
dFJlZigqbmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCwgV1RGTW92
ZShzdHJlYW0pKSk7CisgICAgaW5zdGFuY2UtPmluaXRpYWxpemUoV1RGTW92ZShhdHRyaWJ1dGVz
KSk7CisgICAgcmV0dXJuIGluc3RhbmNlOwogfQogI2VuZGlmCiAKLVJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQm
IHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKLSAg
ICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihjb25uZWN0aW9uKSkK
LSAgICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGlkZW50aWZpZXIpCitSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYgcmVuZGVyaW5nQmFja2VuZCwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3Ry
ZWFtKQorICAgIDogbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD46OmNyZWF0ZShncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzdHJlYW0pLCByZW1vdGVHcmFwaGljc0NvbnRleHRH
TFN0cmVhbVdvcmtRdWV1ZSgpKSkKKyAgICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICAgICAsIG1fcmVuZGVyaW5nQmFja2VuZCht
YWtlUmVmKHJlbmRlcmluZ0JhY2tlbmQpKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAg
ICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0
aGlzKTsKLSAgICBtX2NvbnRleHQtPmFkZENsaWVudCgqdGhpcyk7Ci0gICAgU3RyaW5nIGV4dGVu
c2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6RVhURU5TSU9O
Uyk7Ci0gICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3Ry
aW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZCh0cnVl
LCBleHRlbnNpb25zLCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpCiB7Ci0gICAgaWYg
KGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuZ2V0KCkpCi0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VS
ZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKCFtX3N0cmVhbUNvbm5lY3Rpb24pOwor
ICAgIEFTU0VSVCghbV9jb250ZXh0KTsKIH0KIAotR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25z
dAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogewotICAgIHJldHVybiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuZ2V0KCk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAg
ICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpLmRpc3BhdGNoKFthdHRy
aWJ1dGVzID0gV1RGTW92ZShhdHRyaWJ1dGVzKSwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSgpIG11dGFibGUgeworICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVJbml0aWFs
aXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIH0pOworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpz
dG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4mJiByZWZGcm9t
Q29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fc3Ry
ZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVh
bVdvcmtRdWV1ZSgpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShyZWZGcm9tQ29u
bmVjdGlvbildKCkgeworICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVVbmluaXRpYWxp
emUoKTsKKyAgICB9KTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6d29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAg
ICByZXR1cm4gJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV1RGTW92ZShh
dHRyaWJ1dGVzKSk7CisgICAgaWYgKG1fY29udGV4dCkgeworICAgICAgICBtX2NvbnRleHQtPmFk
ZENsaWVudCgqdGhpcyk7CisgICAgICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5n
ZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgICAgICBTdHJpbmcg
cmVxdWVzdGFibGVFeHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoRXh0ZW5zaW9uc0dM
OjpSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZCh0cnVlLCByZW1vdGVHcmFw
aGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpLndha2VVcFNlbWFwaG9yZSgpLCBleHRlbnNp
b25zLCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChmYWxzZSwg
SVBDOjpTZW1hcGhvcmUgeyB9LCAiIiwgIiIpKTsKIH0KIAotdWludDY0X3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpCiB7Ci0gICAgcmV0
dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7CisgICAgbV9jb250
ZXh0ID0gbnVsbHB0cjsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24gPSBudWxscHRyOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaWRDb21wb3NpdGUoKQpAQCAtODksNyArMTEz
LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Zm9yY2VDb250ZXh0TG9zdCgpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzTG9zdCgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6V2FzTG9zdCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQoKQpAQCAtOTksNyArMTIzLDcgQEAgdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQoKQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDaGFuZ2Vk
KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDaGFuZ2VkKCkpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBhYWE1NzQ5ZDBiYzU0NjQ2YjJjMWY4ZjRj
MzllNThiZGE5NjFlODRmLi5mOGY1YjczMzFhYWU4OTA1MGY5MDdhOTYwYmFiZmQyNTBkM2VkYzBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTAgKzI4LDEwIEBACiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgot
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRXh0ZW5zaW9uc0dMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTQ5LDMy
ICs0OSwyOCBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
Y2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKLQogLy8gR1BVIHByb2Nlc3Mgc2lkZSBp
bXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdyYXBoaWNzQ29u
dGV4dEdMIGNhbGxzCiAvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0R0wgY2FsbHMg
YmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgogLy8gVGhlIGltcGxlbWVudGF0aW9uIGlz
IGxhcmdlbHkgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsLgotY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKLSAgICA6IHB1YmxpYyBJUEM6
Ok1lc3NhZ2VTZW5kZXIKLSAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICAs
IHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCB7CitjbGFzcyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTD4sIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkNs
aWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQmKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQmLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTD4mJiByZWZGcm9tQ29ubmVjdGlvbik7CiAKLSAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7
CisgICAgLy8gSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMPiB0ZW1wbGF0ZSBjb250cmFjdCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2b2lkIGRpZFJlY2Vp
dmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJUEM6OkRl
Y29kZXImKTsKIAogcHJvdGVjdGVkOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmKTsKLQotICAgIC8v
IElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCi0gICAgSVBDOjpDb25uZWN0aW9uKiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwotICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisgICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciYmKTsKKyAgICB2b2lkIGluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiYpOwogCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgotICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAg
ICB2b2lkIHdvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiYpOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIHsgfTsKKyAgICB2b2lkIHdv
cmtRdWV1ZVVuaW5pdGlhbGl6ZSgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgYm9v
bCBzZW5kKFQmJiBtZXNzYWdlKSBjb25zdCB7IHJldHVybiBtX3N0cmVhbUNvbm5lY3Rpb24tPmNv
bm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsgfQogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMu
CiAgICAgdm9pZCBkaWRDb21wb3NpdGUoKSBmaW5hbDsKQEAgLTEwMCw4ICs5Niw4IEBAIHByb3Rl
Y3RlZDoKIAogICAgIHZvaWQgcGFpbnRJbWFnZURhdGFUb0ltYWdlQnVmZmVyKFJlZlB0cjxXZWJD
b3JlOjpJbWFnZURhdGE+JiYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIFJlZjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwotICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFJlZlB0cjxJUEM6
OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PiBtX3N0cmVh
bUNvbm5lY3Rpb247CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
PiBtX2NvbnRleHQ7CiAgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyOwogICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3Jl
bmRlcmluZ0JhY2tlbmQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluCmluZGV4IGQxNTA5NTlhYWE1ZTU0YTNlYzUwYjc0YTIyMTk3MDg0YjAwZGE2ODkuLmY3ZDUy
OTAzNTQzNDQyYWJmM2JiMTQxOWUxYzlkNDI1MTk1YzJhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIC8vIFRoaXMgZmlsZSBp
cyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgeworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQgUmVzaGFwZShpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3lu
Y2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCA3OWU1MzA3
MWExMmMwODQyZWJhNzhiNTY4NGY2NTg1NTU4NzE2ZDlmLi5iZTU5ZTJmZTkwOTVmMTg5MzUyNGI1
NzRmNGNjMmE1ZDI1NjM2OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3Bw
CkBAIC0zOSwxMCArMzksMTEgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB7CiBw
dWJsaWM6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7Cisg
ICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiwg
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIH5SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hKCkgZmluYWwgPSBkZWZhdWx0OwogCiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHZvaWQgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKSBmaW5hbDsKICAgICB2b2lkIHBy
ZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0
JiYpPiYmKSBmaW5hbDsKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4gbV9zd2FwQ2hhaW47CkBAIC01MCwxNiArNTEsMjMgQEAgcHJpdmF0
ZToKIAogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCYgcmVuZGVyaW5nQmFja2VuZCkKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW5kZXJpbmdCYWNr
ZW5kLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4oYXR0cmlidXRlcywgY29u
bmVjdGlvbiwgaWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCk7CisgICAgYXV0byBpbnN0YW5j
ZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHJlbmRlcmluZ0Jh
Y2tlbmQsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3RhbmNlLT5pbml0aWFsaXplKFdURk1v
dmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW5kZXJpbmdCYWNrZW5kKQotICAg
IDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRp
ZmllciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmli
dXRlcywgJm1fc3dhcENoYWluKSwgcmVuZGVyaW5nQmFja2VuZCkKK1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYgcmVuZGVyaW5nQmFja2VuZCwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3Ry
ZWFtKQorICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCByZW5kZXJpbmdCYWNrZW5kLCBXVEZN
b3ZlKHN0cmVhbSkpCiB7CiB9CiAKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6
cGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYmIGF0dHJpYnV0ZXMpCit7CisgICAgbV9jb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoV1RGTW92ZShhdHRyaWJ1dGVzKSwgJm1fc3dh
cENoYWluKTsKK30KKwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJl
Rm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggN2NkYzZlYmMzMDY0OGQwMDMxODQ0YmVi
MjVkYWM0OWJmNGY5ZTY2Mi4uNDRhYzgxMTk2ZjRjYjdiNGRiYTljYWZkMTU4NWE3MGQzZmIxMmE2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtODMsNyArODMsNyBAQCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpCiAgICAgbV93b3JrUXVldWUt
PmRpc3BhdGNoKFtyZW1vdGVSZXNvdXJjZUNhY2hlID0gV1RGTW92ZShtX3JlbW90ZVJlc291cmNl
Q2FjaGUpXSB7IH0pOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpc2Nvbm5l
Y3QoKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApp
bmRleCBlMDU5NmJkZWUyNTI4NWU3Nzk3NDFiMmI2MTYyMmI2MGE3NjY3MzM5Li4wMjUxYjExMjE5
NTI5NWU2MjlmYWE4ZDQ4MjNiZTkwZjQxOTRmMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAg
LTY2LDYgKzY2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CisgICAgdm9pZCBzdG9w
TGlzdGVuaW5nRm9ySVBDKCk7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNv
dXJjZUNhY2hlKCkgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlOyB9CiAKQEAgLTc4LDgg
Kzc5LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbik7CiAKLSAgICB2b2lkIGRpc2Nvbm5lY3Qo
KTsKLQogICAgIC8vIFJ1bnMgRnVuY3Rpb24gaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB0YXNr
IHF1ZXVlLgogICAgIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuaAppbmRleCBhOTFmOWJlMWZiOWI1OTgzNGQxYTkyZjYxMWRjYjQ2NmJiYmU3MWRkLi41
MmNjNWRhMTIxYTJmYjU5ZDhjZjA1OTNiNjg1MDlmZDY1NWMwY2RjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
aApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRl
ci5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4
IDQ5NzE3MWI1NjQyNjg5Mjg5NTIxMDZiZDdlZWE1NGJlZTkzYmVlMjMuLmIwY2Y3MGYwNmUxMThl
MDIxZDg2NGRlYjk4ZDQxNGVmYmE5ZTdjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUmVzb2x2ZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1JUQ01vbml0b3IuaCIKICNpbmNsdWRlICJSVENO
ZXR3b3JrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKaW5k
ZXggMzIwNzZhZmQwMmE4OThhMWUzOWRlMjgzZTEwMmI4NTk0N2Y4ZWRjNy4uNTMzNTBmOWY3Yzhj
MTJiZTYyNzU5OTljN2ViZmMzYzdlMDkxYmNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTc1LDYgKzc2
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPiBzdHJ1Y3QgQXJndW1l
bnRDb2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxU
LCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpY192PFQ+Pj4gewor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIFQgdmFsdWUpCiAgICAgewogICAgICAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBz
aXplb2YoVCksIGFsaWdub2YoVCkpOwpAQCAtOTEsNiArOTMsNyBAQCBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpY192PFQ+
Pj4gewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW1fdjxUPj4+IHsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBUIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKFdURjo6aXNWYWxpZEVudW08VD4o
V1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZTxUPih2YWx1ZSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBiMGE0M2RlOWQ3YTEzNzIxNmEx
OWJmN2QwYmQ1ZTE5MTEzYjVkYTY4Li5hZWU4OWU2MjY5NmM1NjBmMGExOGJmYjFkNjc2OTE2NTBl
N2ZmMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKIAogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIApAQCAtMTExLDcgKzExMiw3IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IEFyZ3VtZW50Q29kZXI8Q1N0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDU3RyaW5n
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLQordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KIHZv
aWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gU3BlY2lhbCBjYXNlIHRoZSBudWxsIHN0cmluZy4K
QEAgLTEzMCw2ICsxMzEsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBlbHNlCiAgICAgICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSksIGxlbmd0aCAqIHNpemVvZihVQ2hhciksIGFs
aWdub2YoVUNoYXIpKTsKIH0KK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6
ZW5jb2RlPEVuY29kZXI+KEVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKK3RlbXBsYXRlCit2b2lk
IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyPihT
dHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8U3RyaW5nPiBkZWNv
ZGVTdHJpbmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0aCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IDIwZWIxN2EwZmQ4MjYw
ZDQwYmVjN2ZjZGFhZWEyM2JjNWU4NjVlMDkuLmY4NTY5ODA3M2RkMDQ1YjI4MTZlMTYxMGNhNDk5
NmE1ZDRlZTZjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaApAQCAtNTUsNiArNTUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxl
QXJndW1lbnRDb2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD4+IHsKICAgICB1c2lu
ZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+OworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCiAgICAg
ewogICAgICAgICBpZiAoIUV4dGVudCkKQEAgLTc0LDYgKzc1LDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8
VCwgRXh0ZW4KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJy
YXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50Pj4gewogICAgIHVzaW5n
IEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHlu
YW1pY0V4dGVudD47CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBh
cnJheVJlZmVyZW5jZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGFycmF5UmVmZXJlbmNlLnNpemUoKSk7CkBAIC0yNjYsNiArMjY4LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjpwYWly
PFQsIFU+PiB7CiAKIHRlbXBsYXRlPHNpemVfdCBpbmRleCwgdHlwZW5hbWUuLi4gRWxlbWVudHM+
CiBzdHJ1Y3QgVHVwbGVFbmNvZGVyIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBzdGQ6OnR1cGxl
PEVsZW1lbnRzLi4uPiYgdHVwbGUpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0
PHNpemVvZi4uLihFbGVtZW50cykgLSBpbmRleD4odHVwbGUpOwpAQCAtMjc1LDYgKzI3OCw3IEBA
IHN0cnVjdCBUdXBsZUVuY29kZXIgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBFbGVtZW50cz4K
IHN0cnVjdCBUdXBsZUVuY29kZXI8MCwgRWxlbWVudHMuLi4+IHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qgc3Rk
Ojp0dXBsZTxFbGVtZW50cy4uLj4mKQogICAgIHsKICAgICB9CkBAIC0zMzgsNiArMzQyLDcgQEAg
c3RydWN0IFR1cGxlRGVjb2RlcjwwPiB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBFbGVt
ZW50cz4gc3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4+IHsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYgdHVwbGUpCiAgICAg
ewogICAgICAgICBUdXBsZUVuY29kZXI8c2l6ZW9mLi4uKEVsZW1lbnRzKSwgRWxlbWVudHMuLi4+
OjplbmNvZGUoZW5jb2RlciwgdHVwbGUpOwpAQCAtMzc0LDYgKzM3OSw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V1RGOjpLZXlWYWx1CiB0ZW1wbGF0ZTxib29sIGZpeGVkU2l6ZUVsZW1lbnRzLCB0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90
IG1pbkNhcGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2RlcjsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIs
IHNpemVfdCBtaW5DYXBhY2l0eT4gc3RydWN0IFZlY3RvckFyZ3VtZW50Q29kZXI8ZmFsc2UsIFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiB7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5PiYgdmVjdG9yKQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odmVjdG9yLnNpemUoKSk7CkBAIC00MTEsNiArNDE3LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXIsIHNpemVfdCBtaW4KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+
IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyPHRydWUsIFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYgdmVjdG9y
KQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odmVjdG9y
LnNpemUoKSk7CkBAIC03NTMsNiArNzYwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxDU3RyaW5nPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFN0
cmluZz4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBTdHJpbmcmKTsKICAgICBzdGF0aWMgT3B0aW9u
YWw8U3RyaW5nPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcAppbmRleCA4Yjc0MzE0YWMwNGE1NWE0OGJkMDkzNjI5YzM2MjIwNzFlMGYy
YzUwLi4xZDJlYTQ4NWE5OThhZTI2NDQ2YTNhZTYwMGUwNGYzMGNhOGUxZDUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAorI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUZs
YWdzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCIKQEAgLTkzMCw4ICs5MzEs
MTMgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImIGRlY29k
ZXIpCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKLQorICAgIGlmICghUnVuTG9vcDo6aXNNYWluKCkpIHsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2VOYW1l
XSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5pc1ZhbGlkKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9j
bGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKHByb3RlY3RlZFRoaXMsIG1lc3NhZ2VOYW1l
KTsKKyAgICAgICAgfSk7CisgICAgfQogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA0ODU1MjAx
MjQ3YzI1ZGY4NTUyYzVhNTRhMDQ2NzdiOGQ3MmI4MmNhLi5mZTljYTMxODYwNmZkZWRjNjFkMjFk
MDdkZjBmOGFiMWJmZTkzYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oCkBAIC0zMCwxMCArMzAsOSBAQAogCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUg
IkVuY29kZXIuaCIKLSNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1
ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KQEAgLTMxMiw2ICszMTEsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZv
aWQgZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKE1lc3NhZ2VSZWNlaXZlciYsIHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiYmKTsKKyAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRo
cmVhZC4KKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VO
YW1lKTsKIHByaXZhdGU6CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2VydmVy
LCBDbGllbnQmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyKTsKQEAg
LTMzOSw3ICszNDAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPik7CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2UoRGVjb2RlciYp
OwogICAgIHZvaWQgZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJik7Ci0gICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSk7CiAgICAgdm9pZCBkaWRG
YWlsVG9TZW5kU3luY01lc3NhZ2UoKTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYW55IHRo
cmVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggODBhMGY3NWM3
MDU3MmJmNGMyNDg1MjZmZWQyZmVmYjA5N2NkYzhmOS4uNGRlMDUwOThjNDYzMmFkNDVmNGU4NTNm
NjdlOWVlM2U3NzEzNmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAK
QEAgLTkwLDYgKzkwLDE3IEBAIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyU2l6ZSwgQ29uc3RydWN0V2l0aG91dEhlYWRlCiAgICAgICAgIG1hcmtJ
bnZhbGlkKCk7CiB9CiAKK0RlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogc3RyZWFtLCBz
aXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICA6IG1fYnVmZmVy
IHsgc3RyZWFtIH0KKyAgICAsIG1fYnVmZmVyUG9zIHsgbV9idWZmZXIgfQorICAgICwgbV9idWZm
ZXJFbmQgeyBtX2J1ZmZlciArIHN0cmVhbVNpemUgfQorICAgICwgbV9idWZmZXJEZWFsbG9jYXRv
cihbXSAoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9KQorICAgICwgbV9kZXN0aW5hdGlvbklE
KGRlc3RpbmF0aW9uSUQpCit7CisgICAgaWYgKCFkZWNvZGUobV9tZXNzYWdlTmFtZSkpCisgICAg
ICAgIHJldHVybjsKK30KKwogRGVjb2Rlcjo6fkRlY29kZXIoKQogewogICAgIEFTU0VSVChtX2J1
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggNjY5ODViYzM4N2Q3
NDM5MTM3MDFiMTE3YjkxODAwYjlhMjc3MWFiOC4uYjNjNmFjOGEyZDVhY2JhMmMyMTUyOGRmZWIx
OGM2NDE1Y2VkZDIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtNTEs
NiArNTEsNyBAQCBjbGFzcyBEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
LCBWZWN0b3I8QXR0YWNobWVudD4mJik7CiAgICAgZXhwbGljaXQgRGVjb2Rlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3Ip
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJik7CisgICAgRGVj
b2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1TaXplLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKTsKICAgICB+RGVjb2RlcigpOwogCiAgICAgRGVjb2Rlcihjb25zdCBEZWNv
ZGVyJikgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9I
YW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKaW5kZXggZWE4YWQ0NWMwOWViNjgyZTBlODYyM2I5MzRkNWUwZTljNzAyNjIyYS4uOTI5NjNl
MjFlMWQ3MTdmNjRhODIxOWM1Mjg5YmFmMDUzZjA5OTQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTY0LDYgKzE2NSwyOCBA
QCB2b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZQogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihjb25uZWN0
aW9uLCBXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2Jq
ZWN0LCBmdW5jdGlvbik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5
cGVuYW1lIE1GPgordm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYg
ZnVuY3Rpb24pCit7CisgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzeW5jUmVxdWVzdElEKSB8fCAhc3luY1JlcXVlc3RJRCkgeworICAgICAg
ICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBP
cHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+
IGFyZ3VtZW50czsKKyAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKKyAgICBpZiAoIWFyZ3VtZW50
cykgeworICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBb
c3luY1JlcXVlc3RJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYu
Li4gYXJncykgbXV0YWJsZSB7CisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoc3lu
Y1JlcXVlc3RJRCwgYXJncy4uLik7CisgICAgfTsKKyAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RG
TW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVu
Y3Rpb24pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBN
Rj4KIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29k
ZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1
ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTNhMDU2YTAyMDFjMmFkMGU3NDkwZWM3ZDdmZWJiZGQ3NzEwOTdi
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+Cisj
aW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IElQQyB7CisKKy8vIFNjb3BlZCBob2xkZXIgZm9yIG9iamVjdHMgdGhhdCBoYXZlIGFjdGl2ZSBt
ZXNzYWdlIHJlY2VpdmUgcXVldWVzLiBFbmZvcmNlcyB0aGF0CisvLyBvbmNlIGhvbGRlciBzdG9w
cyBob2xkaW5nIHRoZSBvYmplY3QsIHRoZSBtZXNzYWdlIHF1ZXVlIHNob3VsZCBiZSByZW1vdmVk
LgorLy8gVGhlIGNvbnZlbnRpb24gaXMgdG8gY2FsbCBzdG9wTGlzdGVuaW5nRm9ySVBDKCkgZm9y
IHRoZSBvYmplY3QuCisvLyBPcHRpb25hbGx5IHRoZSBvYmplY3QgY2FuIG9idGFpbiB0aGUgb3du
aW5nIHJlZmVyZW5jZSB0aGF0IHdhcyB1c2VkIHRvIGhvbGQgdGhlIG9iamVjdAorLy8gaW4gb3Jk
ZXIgdG8gYXR0ZW1wdCB0byBhdm9pZCBuZWVkbGVzcyBkZXN0cnVjdGlvbiBvZiB0aGUgb2JqZWN0
IGluIGhvbGRlciB0aHJlYWQuCisvLyBUaGlzIHVzZWZ1bCBpbiB0aGUgY2FzZSB0aGUgc3RvcCBp
bnZva2VzIGEgY2xlYW51cCB0YXNrIGluIHRoZSBtZXNzYWdlIGhhbmRsZXIKKy8vIHRocmVhZC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBIb2xkZXJUeXBlID0gUmVmUHRyPFQ+Pgor
Y2xhc3MgU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSgpID0gZGVmYXVsdDsKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4KKyAgICBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFUmJiBvYmpl
Y3QpCisgICAgICAgIDogbV9vYmplY3QoV1RGTW92ZShvYmplY3QpKQorICAgIHsKKyAgICB9Cisg
ICAgU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZShTY29wZWRBY3RpdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlJiYgb3RoZXIpCisgICAgICAgIDogbV9vYmplY3Qoc3RkOjpleGNoYW5nZShvdGhl
ci5tX29iamVjdCwgbnVsbHB0cikpCisgICAgeworICAgIH0KKyAgICBTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlJiBvcGVyYXRvcj0oU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZSYmIG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAg
ICAgICByZXNldCgpOworICAgICAgICAgICAgbV9vYmplY3QgPSBzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fb2JqZWN0LCBudWxscHRyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorICAgIH5TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKCkKKyAgICB7CisgICAg
ICAgIHJlc2V0KCk7CisgICAgfQorICAgIHZvaWQgcmVzZXQoKQorICAgIHsKKyAgICAgICAgaWYg
KCFtX29iamVjdCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3RvcExpc3RlbmluZ0Zv
cklQQ0FuZFJlbGVhc2UobV9vYmplY3QpOworICAgIH0KKyAgICBUKiBnZXQoKSBjb25zdCB7IHJl
dHVybiBtX29iamVjdC5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PgorICAgIHN0YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9iamVj
dCkgLT4gZGVjbHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKG9iamVjdC5yZWxlYXNl
Tm9uTnVsbCgpKSwgdm9pZCgpKQorICAgIHsKKyAgICAgICAgb2JqZWN0LT5zdG9wTGlzdGVuaW5n
Rm9ySVBDKG9iamVjdC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4KKyAgICBzdGF0aWMgYXV0byBzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZShV
JiBvYmplY3QpIC0+IGRlY2x0eXBlKG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhXVEZNb3Zl
KG9iamVjdCkpLCB2b2lkKCkpCisgICAgeworICAgICAgICBvYmplY3QtPnN0b3BMaXN0ZW5pbmdG
b3JJUEMoV1RGTW92ZShvYmplY3QpKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4K
KyAgICBzdGF0aWMgYXV0byBzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZShVJiBvYmplY3Qp
IC0+IGRlY2x0eXBlKG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQygpLCB2b2lkKCkpCisgICAg
eworICAgICAgICBvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKKyAgICAgICAgb2JqZWN0
ID0gbnVsbHB0cjsKKyAgICB9CisgICAgSG9sZGVyVHlwZSBtX29iamVjdDsKK307CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKHN0ZDo6dW5p
cXVlX3B0cjxUPiYmKSAtPiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFQsIHN0ZDo6
dW5pcXVlX3B0cjxUPj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlKFJlZjxUPiYmKSAtPiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1
ZXVlPFQsIFJlZlB0cjxUPj47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRmNWNkZjAwOGU1
YTdmMmQyZjEwMmEyMzVjM2MyMjUxNzMzNzZlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEs
NTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgSVBDIHsKKworU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBz
aXplX3Qgc2l6ZSkKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9idWZm
ZXIoc2l6ZSkKK3sKKyAgICAvLyBSZWFkIHN0YXJ0cyBmcm9tIDAgd2l0aCBsaW1pdCBvZiAwIGFu
ZCByZWFkZXIgc2xlZXBpbmcuCisgICAgc2hhcmVkU2VuZGVyT2Zmc2V0KCkuc3RvcmUoU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgICAvLyBXcml0ZSBzdGFydHMgZnJvbSAwIHdpdGgg
YSBsaW1pdCBvZiB0aGUgd2hvbGUgYnVmZmVyLgorICAgIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCku
c3RvcmUoMCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7Cit9CisKK3ZvaWQgU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYgc2VtYXBo
b3JlKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1fd2FrZVVwU2VtYXBob3JlID0gV1RG
TW92ZShzZW1hcGhvcmUpOworI2VuZGlmCisgICAgd2FrZVVwUmVjZWl2ZXIoKTsKK30KKwordm9p
ZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp3YWtlVXBSZWNlaXZlcigpCit7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgaWYgKG1fd2FrZVVwU2VtYXBob3JlKQorICAgICAgICBtX3dha2VVcFNl
bWFwaG9yZS0+c2lnbmFsKCk7CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5MzZi
OTAyNjVhZGNjYjg0NDIyMWE2MjBkNDY3YTEwYjdkZjA0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKQEAgLTAs
MCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRlY29kZXIu
aCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIK
KyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KK25hbWVzcGFjZSBJUEMgeworCisvLyBBIG1lc3NhZ2Ugc3Ry
ZWFtIGlzIGEgaGFsZi1kdXBsZXggdHdvLXdheSBzdHJlYW0gb2YgbWVzc2FnZXMgdG8gYSBiZXR3
ZWVuIGEgc2VuZGVyIGFuZCB0aGUKKy8vIGRlc3RpbmF0aW9uIHJlY2VpdmVyLgorLy8KKy8vIFN0
cmVhbUNsaWVudENvbm5lY3Rpb24gY2FuIHNlbmQgbWVzc2FnZXMgYW5kIHJlY2VpdmUgc3luY2hy
b25vdXMgcmVwbGllcworLy8gdGhyb3VnaCB0aGlzIG1lc3NhZ2Ugc3RyZWFtIG9yIHRocm91Z2gg
SVBDOjpDb25uZWN0aW9uLgorLy8KKy8vIFRoZSBkZXN0aW5hdGlvbiByZWNlaXZlciB3aWxsIHJl
Y2VpdmUgbWVzc2FnZXMgaW4gb3JkZXIgX2ZvciB0aGUgZGVzdGluYXRpb24gbWVzc2FnZXNfLgor
Ly8gVGhlIHdob2xlIElQQzo6Q29ubmVjdGlvbiBtZXNzYWdlIG9yZGVyIGlzIG5vdCBwcmVzZXJ2
ZWQuCisvLworLy8gVGhlIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gdHJ1c3RzIHRoZSBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLgorY2xhc3MgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBmaW5hbCB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtQ2xpZW50Q29ubmVjdGlvbik7CitwdWJsaWM6
CisgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiwgc2l6ZV90IGJ1ZmZlclNp
emUpOworCisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgc3RyZWFtQnVmZmVyKCkgeyByZXR1
cm4gbV9idWZmZXI7IH0KKyAgICB2b2lkIHNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9y
ZSYmKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGJvb2wgc2VuZChU
JiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQpOworCisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3lu
Y1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIFNlbmRT
eW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCBPYmpl
Y3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKK3ByaXZh
dGU6CisgICAgc3RydWN0IFNwYW4geworICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBz
aXplX3Qgc2l6ZTsKKyAgICB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1N
ZXNzYWdlU2l6ZSA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNv
bm5lY3Rpb25FbmNvZGVyOjptZXNzYWdlQWxpZ25tZW50OworICAgIGJvb2wgdHJ5U2VuZERlc3Rp
bmF0aW9uSURJZk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIHRp
bWVvdXQpOworICAgIHZvaWQgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmKTsK
KworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KTsK
KyAgICBlbnVtIGNsYXNzIFdha2VVcFJlY2VpdmVyIDogYm9vbCB7CisgICAgICAgIE5vLAorICAg
ICAgICBZZXMKKyAgICB9OworICAgIFdha2VVcFJlY2VpdmVyIHJlbGVhc2Uoc2l6ZV90IHdyaXRl
U2l6ZSk7CisgICAgdm9pZCB3YWtlVXBSZWNlaXZlcigpOworCisgICAgU3BhbiBhbGlnbmVkU3Bh
bihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBzaXplKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50
cnVzdGVkTGltaXQpIGNvbnN0OworCisgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNl
dCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNldChvZmZzZXQpOyB9CisgICAgc2l6
ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFs
aWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsg
fQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRTZW5kZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1
ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZl
ck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnJlY2VpdmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50
OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90
IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQorCisgICAg
Q29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0
aW9uSUQgeyAwIH07CisKKyAgICBzaXplX3QgbV9zZW5kZXJPZmZzZXQgeyAwIH07CisgICAgU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBP
cHRpb25hbDxTZW1hcGhvcmU+IG1fd2FrZVVwU2VtYXBob3JlOworI2VuZGlmCit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNl
Y29uZHMgdGltZW91dCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFUOjppc1N5bmMsICJNZXNzYWdl
IGlzIHN5bmMhIik7CisgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9u
aWNUaW1lOjpub3coKSArIHRpbWVvdXQ7CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElm
TmVlZGVkKGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1l
b3V0KTsKKyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB7CisgICAg
ICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG1lc3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBz
cGFuLT5kYXRhLCBzcGFuLT5zaXplIH07CisgICAgICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBt
ZXNzYWdlLmFyZ3VtZW50cygpKSB7CisgICAgICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJl
bGVhc2UobWVzc2FnZUVuY29kZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1
bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAg
ICAgICAgICAgICB3YWtlVXBSZWNlaXZlcigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92
ZSgqc3BhbikpOworICAgIGlmICghbV9jb25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwg
ZGVzdGluYXRpb25JRCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3lu
YyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmll
cjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpCit7CisgICAgc3RhdGljX2Fzc2Vy
dChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOworICAgIE1vbm90b25pY1RpbWUg
YWJzb2x1dGVUaW1lb3V0ID0gTW9ub3RvbmljVGltZTo6bm93KCkgKyB0aW1lb3V0OworICAgIGlm
ICghdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZChkZXN0aW5hdGlvbklELnRvVUludDY0KCks
IGFic29sdXRlVGltZW91dCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byBzcGFuID0g
dHJ5QWNxdWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHNlbmQgdGhyb3VnaCBzdHJlYW0uCisg
ICAgLy8gRklYTUU6IGltcGxlbWVudCByZWNlaXZlIHRocm91Z2ggc3RyZWFtLgorICAgIHNlbmRQ
cm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoKnNwYW4pKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fY29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5
KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKKyAgICBBU1NFUlQocmVzdWx0
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbmxpbmUgYm9vbCBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjp0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0KQoreworICAgIGlmIChkZXN0aW5hdGlv
bklEID09IG1fY3VycmVudERlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNv
ZGVyIHsgTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQsIHNwYW4tPmRhdGEsIHNw
YW4tPnNpemUgfTsKKyAgICBpZiAoIShlbmNvZGVyIDw8IGRlc3RpbmF0aW9uSUQpKSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBTaXplIG9mIHRoZSBtaW5pbXVtIGFsbG9jYXRp
b24gaXMgaW5jb3JyZWN0LiBMaWtlbHkgYW4gYWxpZ25tZW50IGlzc3VlLgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShlbmNvZGVy
LnNpemUoKSk7CisgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpXYWtlVXBSZWNlaXZlcjo6WWVzKQorICAgICAgICB3YWtlVXBSZWNlaXZlcigpOworICAgIG1f
Y3VycmVudERlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgIHJldHVybiB0cnVlOwor
fQorCitpbmxpbmUgdm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9m
U3RyZWFtTWVzc2FnZShTcGFuJiYgc3BhbikKK3sKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ciBlbmNvZGVyIHsgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UsIHNwYW4u
ZGF0YSwgc3Bhbi5zaXplIH07CisgICAgLy8gTm90IG5vdGlmeWluZyBvbiB3YWtlIHVwIHNpbmNl
IHRoZSBvdXQtb2Ytc3RyZWFtIG1lc3NhZ2Ugd2lsbCBkbyB0aGF0LgorICAgIGF1dG8gcmVzdWx0
ID0gcmVsZWFzZShlbmNvZGVyLnNpemUoKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHJlc3VsdCk7
Cit9CitpbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZShNb25vdG9uaWNUaW1lIHRpbWVvdXQpCit7Cisg
ICAgZm9yICg7OykgeworICAgICAgICBzaXplX3Qgc2VuZGVyTGltaXQgPSBjbGFtcGVkTGltaXQo
c2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpKTsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlbmRlck9mZnNldCwgc2VuZGVy
TGltaXQpOworICAgICAgICBpZiAocmVzdWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNpemUpIHsK
KyAgICAgICAgICAgIGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgICAgICAg
ICBpZiAobm93ID49IHRpbWVvdXQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgICAgICAgICBzaXplX3Qgb2xkU2VuZGVyTGltaXQgPSBzaGFyZWRSZWNl
aXZlck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhzZW5kZXJMaW1pdCwgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcsIHN0ZDo6bWVt
b3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICAg
ICAgaWYgKHNlbmRlckxpbWl0ID09IG9sZFNlbmRlckxpbWl0KQorICAgICAgICAgICAgICAgIG1f
YnVmZmVyLnNlbmRlcldhaXRTZW1hcGhvcmUoKS53YWl0Rm9yKHRpbWVvdXQgLSBub3cpOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc2VuZGVyTGltaXQgPSBjbGFtcGVkTGlt
aXQob2xkU2VuZGVyTGltaXQpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFu
KG1fc2VuZGVyT2Zmc2V0LCBzZW5kZXJMaW1pdCk7CisgICAgICAgICAgICB9CisjZWxzZQorICAg
ICAgICAgICAgVGhyZWFkOjp5aWVsZCgpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgaWYg
KHJlc3VsdC5zaXplID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIC8vIFRoZSBhbGlnbmVkU3BhbiB1c2VzIHRoZSBtaW5pbXVtTWVzc2Fn
ZVNpemUgdG8gY2FsY3VsYXRlIHRoZSBuZXh0IGJlZ2lubmluZyBwb3NpdGlvbiBpbiB0aGUgYnVm
ZmVyLAorICAgICAgICAvLyBhbmQgbm90IHRoZSBzaXplLiBUaGUgc2l6ZSBtaWdodCBiZSBtb3Jl
IG9yIGxlc3Mgd2hhdCBpcyBuZWVkZWQsIGRlcGVuZGluZyBvbiB3aGVyZSB0aGUgcmVhZGVyIGlz
LgorICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBjYXBhY2l0eSBmb3IgbWluaW11bSBtZXNzYWdl
IHNpemUsIHdhaXQgdW50aWwgbW9yZSBpcyBhdmFpbGFibGUuCisgICAgICAgIC8vIEluIHRoZSBj
YXNlIHdoZXJlIHNlbmRlck9mZnNldCA8IHJlY2VpdmVyT2Zmc2V0IHdlIGNhbiBhcnJpdmUgdG8g
YSBzaXR1YXRpb24gd2hlcmUKKyAgICAgICAgLy8gMCA8IHJlc3VsdC5zaXplIDwgbWluaW11bU1l
c3NhZ2VTaXplLgorICAgIH0KKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitpbmxpbmUg
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXIgU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6cmVsZWFzZShzaXplX3Qgc2l6ZSkKK3sKKyAgICBzaXplID0gc3RkOjptYXgoc2l6ZSwg
bWluaW11bU1lc3NhZ2VTaXplKTsKKyAgICBtX3NlbmRlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxp
Z25PZmZzZXQobV9zZW5kZXJPZmZzZXQpICsgc2l6ZSk7CisgICAgQVNTRVJUKG1fc2VuZGVyT2Zm
c2V0IDwgZGF0YVNpemUoKSk7CisgICAgLy8gSWYgdGhlIHJlY2VpdmVyIHdyb3RlIG92ZXIgdGhl
IHNlbmRlck9mZnNldCB3aXRoIHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgd2Ug
a25vdyBpdCBpcyBzbGVlcGluZy4KKyAgICBzaXplX3QgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNl
bmRlck9mZnNldCgpLmV4Y2hhbmdlKG1fc2VuZGVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9h
Y3FfcmVsKTsKKyAgICBpZiAocmVjZWl2ZXJMaW1pdCA9PSBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpCisgICAgICAgIHJldHVybiBXYWtl
VXBSZWNlaXZlcjo6WWVzOworICAgIEFTU0VSVCghKHJlY2VpdmVyTGltaXQgJiBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpKTsKKyAgICBy
ZXR1cm4gV2FrZVVwUmVjZWl2ZXI6Ok5vOworfQorCitpbmxpbmUgU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6U3BhbiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjphbGlnbmVkU3BhbihzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgQVNTRVJUKG9mZnNldCA8IGRhdGFTaXplKCkpOwor
ICAgIEFTU0VSVChsaW1pdCA8IGRhdGFTaXplKCkpOworICAgIHNpemVfdCBhbGlnbmVkID0gYWxp
Z25PZmZzZXQob2Zmc2V0KTsKKyAgICBzaXplX3QgcmVzdWx0U2l6ZSA9IDA7CisgICAgaWYgKG9m
ZnNldCA8IGxpbWl0KSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCAmJiBhbGlnbmVk
IDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0IHx8IGFsaWduZWQg
PCBsaW1pdCkKKyAgICAgICAgICAgIHJlc3VsdFNpemUgPSBzaXplKGFsaWduZWQsIGxpbWl0KTsK
KyAgICB9CisgICAgcmV0dXJuIHsgZGF0YSgpICsgYWxpZ25lZCwgcmVzdWx0U2l6ZSB9OworfQor
CitpbmxpbmUgc2l6ZV90IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNpemUoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxpbWl0KQoreworICAgIGlmICghbGltaXQpCisgICAgICAgIHJldHVybiBkYXRh
U2l6ZSgpIC0gMSAtIG9mZnNldDsKKyAgICBpZiAobGltaXQgPD0gb2Zmc2V0KQorICAgICAgICBy
ZXR1cm4gZGF0YVNpemUoKSAtIG9mZnNldDsKKyAgICByZXR1cm4gbGltaXQgLSBvZmZzZXQgLSAx
OworfQorCitpbmxpbmUgc2l6ZV90IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHVudHJ1c3RlZExp
bWl0IDwgKGRhdGFTaXplKCkgLSAxKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHVudHJ1c3RlZExp
bWl0LCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM1Zjdm
MzFlNTMzZGQzYmRiZThmNDViNjZiZWM4Y2Y3NTg3MzdhNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCkBAIC0w
LDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IEZmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK3N0YXRpYyBSZWY8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk+IGNyZWF0ZU1lbW9yeShzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvIG1lbW9yeSA9IFdl
YktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplKTsKKyAgICBpZiAoIW1lbW9yeSkKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gbWVtb3J5LnJlbGVhc2VOb25OdWxsKCk7Cit9CisK
K1N0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoc2l6ZV90IG1l
bW9yeVNpemUpCisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisg
ICAgLCBtX3NoYXJlZE1lbW9yeShjcmVhdGVNZW1vcnkobWVtb3J5U2l6ZSkpCit7CisgICAgQVNT
RVJUKG1fZGF0YVNpemUgPD0gbWF4aW11bVNpemUoKSk7Cit9CisKK1N0cmVhbUNvbm5lY3Rpb25C
dWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYm
IG1lbW9yeSwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNlbmRlcldhaXRTZW1hcGhv
cmUpCisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisgICAgLCBt
X3NoYXJlZE1lbW9yeShXVEZNb3ZlKG1lbW9yeSkpCisgICAgLCBtX3NlbmRlcldhaXRTZW1hcGhv
cmUoV1RGTW92ZShzZW5kZXJXYWl0U2VtYXBob3JlKSkKK3sKKyAgICBBU1NFUlQobV9kYXRhU2l6
ZSA8PSBtYXhpbXVtU2l6ZSgpKTsKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3RoZXIpID0gZGVmYXVs
dDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6flN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoKSA9
IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXImIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3RoZXIpCit7CisgICAgaWYg
KHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgIG1fZGF0YVNpemUgPSBvdGhlci5tX2RhdGFTaXpl
OworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9IFdURk1vdmUob3RoZXIubV9zaGFyZWRNZW1vcnkp
OworICAgICAgICBtX3NlbmRlcldhaXRTZW1hcGhvcmUgPSBXVEZNb3ZlKG90aGVyLm1fc2VuZGVy
V2FpdFNlbWFwaG9yZSk7CisgICAgfQorICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoIW1fc2hhcmVk
TWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICBXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgbV9zaGFyZWRNZW1v
cnktPnNpemUoKSB9OworICAgIGVuY29kZXIgPDwgaXBjSGFuZGxlOworICAgIGVuY29kZXIgPDwg
bV9zZW5kZXJXYWl0U2VtYXBob3JlOworfQorCitPcHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyPiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBPcHRpb25hbDxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBpcGNIYW5kbGU7
CisgICAgZGVjb2RlciA+PiBpcGNIYW5kbGU7CisgICAgaWYgKCFpcGNIYW5kbGUpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8U2VtYXBob3JlPiBzZW1hcGhvcmU7
CisgICAgZGVjb2RlciA+PiBzZW1hcGhvcmU7CisgICAgaWYgKCFzZW1hcGhvcmUpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgc2l6ZV90IGRhdGFTaXplID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihpcGNIYW5kbGUtPmRhdGFTaXplKTsKKyAgICBpZiAoZGF0YVNpemUgPCBoZWFkZXJT
aXplKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKGRhdGFTaXplID4g
aGVhZGVyU2l6ZSgpICsgbWF4aW11bVNpemUoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjptYXAoaXBj
SGFuZGxlLT5oYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3Jp
dGUpOworICAgIGlmIChzaGFyZWRNZW1vcnktPnNpemUoKSA8IGRhdGFTaXplKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHsg
c2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCksIGRhdGFTaXplLCAgV1RGTW92ZSgqc2VtYXBo
b3JlKSB9OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1Db25uZWN0aW9uQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1Db25uZWN0aW9uQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZmMGI4ZDA0MTM3MjAzYjU1ZWJkNDFj
ZmUxYjg4ZjA3OGQ5ZDA3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIklQ
Q1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPHd0Zi9B
dG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBJUEMgewor
CisvLyBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIGlzIGEgc2hhcmVkICJiaS1wYXJ0aXRlIiBjaXJj
dWxhciBidWZmZXIgc3VwcG9ydGluZworLy8gdmFyaWFibGUgbGVuZ3RoIG1lc3NhZ2VzLCBzcGVj
aWZpYyBkYXRhIGFsaWdubWVudCB3aXRoIG1hbmRhdGVkIG1pbmltdW0gc2l6ZS4KKy8vIFN0cmVh
bUNsaWVudENvbm5lY3Rpb24gYW5kIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gdXNlIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIgdG8gY29tbXVuaWNhdGUuCisvLworLy8gVGhlICJiaS1wYXJ0aXRlIiBp
cyBoZXJlIHRvIG1lYW4gdGhhdCB3cml0ZXMgYW5kIHJlYWRzIHRvIHRoZSBidWZmZXIgbXVzdCBi
ZQorLy8gY29udGludW91cy4KKy8vCisvLyBUaGUgY2xpZW50IChzZW5kZXIgb3IgcmVjZWl2ZXIp
ICJhY3F1aXJlcyIgc29tZSBhbW91bnQgb2YgYnVmZmVyIGRhdGEuIFRoZSBkYXRhIHBvaW50ZXIK
Ky8vIGxvY2F0aW9uIGRlcGVuZHMgb24gdGhlIGFtb3VudCBvZiBkYXRhIGJlaW5nIGFjcXVpcmVk
LiBUaGUgYnVmZmVyIHJldHVybnMgYWxsIHRoZSBhdmFpbGFibGUKKy8vIGNhcGFjaXR5IC0tIHRo
aXMgbWF5IGJlIGxlc3MgdGhhbiBhY3F1aXJlZC4KKy8vCisvLyBUaGUgY2xpZW50ICJyZWxlYXNl
cyIgdGhlIHNvbWUgYW1vdW50IG9mIGRhdGEsIGF0IGxlYXN0IHRoZSBhbW91bnQgYWNxdWlyZWQg
YnV0IHBvdGVudGlhbGx5CisvLyBtb3JlLgorLy8KKy8vIEJvdGggc2VuZGVyIGFuZCByZWNlaXZl
ciBtdXN0IHJlbGVhc2UgdGhlIHNhbWUgYW1vdW50IG9mIGRhdGEgYXQgdGhlIHNhbWUgc3RlcCBv
ZiB0aGUgYWNxdWlyZS9yZWxlYXNlIHNlcXVlbmNlLgorLy8gU3VwcG9zZSBzZW5kZXIgcmVsZWFz
ZXMgZmlyc3QgOCBhbmQgdGhlbiAxNjYgYnl0ZXMuIFVwb24gdGhlIGZpcnN0IGFjcXVpcmUsIHJl
Y2VpdmVyCisvLyBtdXN0IGFsc28gcmVsZWFzZSA4IGJ5dGVzIGFuZCB0aGVuIHVwb24gdGhlIHNl
Y29uZCBhY3F1aXJlIDE2NiBieXRlcy4KKy8vIER1ZSB0byBob3cgYWxpZ25tZW50IGFuZCBtaW5p
bXVtIGxlbmd0aCBhZmZlY3QgdGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSBtZW1vcnkgY2FuCisv
LyBiZSByZWZlcnJlZCB0bywgdGhlIHJlY2VpdmVyIGNhbm5vdCAicmVhZCB0d28gdGltZXMgc2lt
dWx0YW5lb3VzbHkiIGFuZCByZWxlYXNlIDE3NCBieXRlcy4KKy8vCisvLyBUaGUgY2lyY3VsYXIg
YnVmZmVyIGhhcyBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRo
ZSBkYXRhIGJldHdlZW4gW3NlbmRlck9mZnNldCwgcmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRl
ck9mZnNldCA9PQorLy8gcmVjZWl2ZXJPZmZzZXQsIHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4K
Ky8vICogUmVjZWl2ZXIgb3ducyB0aGUgZGF0YSBiZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2Vu
ZGVyT2Zmc2V0Wy4KKy8vICogVGhlIGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAx
IHZhbHVlcy4gVGhlIGxhc3QgdmFsdWUgaXMgcmVzZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRo
YXQgdGhlIGJ1ZmZlciBpcyBmdWxsLiBGSVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBs
ZW1lbnRhdGlvbiBpZgorLy8gaXQgd291bGQgdXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9m
IHRoZSBob2xlIGFzIHRoZSBpbmRpY2F0b3IuIFRoaXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWdu
ZWRTcGFuIGltcGxlbWVudGF0aW9uIHRvIHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgorLy8g
KiBBbGwgYXRvbWljIHZhcmlhYmxlIGxvYWRzIGFyZSB1bnRydXN0ZWQsIHNvIHRoZXkncmUgY2xh
bXBlZC4gVmlvbGF0aW9ucyBhcmUgbm90IHJlcG9ydGVkLAorLy8gdGhvdWdoLgorLy8gU2VlIFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlLgorY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5
U2l6ZSk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVy
JiYpOworICAgIH5TdHJlYW1Db25uZWN0aW9uQnVmZmVyKCk7CisgICAgU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciYgb3BlcmF0b3I9KFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisKKyAgICBzaXpl
X3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG9mZnNldCA8PSBkYXRhU2l6ZSgpKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBkYXRhU2l6ZSgp
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQor
CisgICAgdGVtcGxhdGU8c2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQ+CisgICAgc2l6ZV90IGFsaWdu
T2Zmc2V0KHNpemVfdCBvZmZzZXQsIHNpemVfdCBhY3F1aXJlU2l6ZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIG9mZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2Y8bWVzc2FnZUFsaWdubWVudD4ob2Zm
c2V0KTsKKyAgICAgICAgaWYgKG9mZnNldCArIGFjcXVpcmVTaXplID49IGRhdGFTaXplKCkpCisg
ICAgICAgICAgICBvZmZzZXQgPSAwOworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKwor
ICAgIEF0b21pYzxzaXplX3Q+JiBzZW5kZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZW5k
ZXJPZmZzZXQ7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgcmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVy
biBoZWFkZXIoKS5yZWNlaXZlck9mZnNldDsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBo
ZWFkZXJTaXplKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGFTaXplOyB9CisgICAgU2VtYXBob3JlJiBzZW5kZXJXYWl0U2VtYXBob3JlKCkgeyByZXR1cm4g
bV9zZW5kZXJXYWl0U2VtYXBob3JlOyB9CisKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhl
YWRlcjo6c2VuZGVyT2Zmc2V0IHdoZW4gcmVjZWl2ZXIgaXMgc2xlZXBpbmcsIGUuZy4gbm90IHJ1
bm5pbmcuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJ
c1NsZWVwaW5nVGFnID0gMSA8PCAzMTsKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRl
cjo6cmVjZWl2ZXJPZmZzZXQgd2hlbiBzZW5kZXIgaXMgd2FpdGluZywgZS5nLiB3YWl0aW5nIG9u
CisgICAgLy8gYSBzZW1hcGhvcmUuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVjZWl2
ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcgPSAxIDw8IDMxOworCisgICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgbWF4aW11bVNpemUoKSB7IHJldHVybiBzdGQ6Om1pbihzZW5kZXJPZmZzZXRS
ZWNlaXZlcklzU2xlZXBpbmdUYWcsIHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZykg
LSAxOyB9CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBPcHRp
b25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRl
OgorICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYm
LCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgc2VuZGVyV2FpdFNlbWFwaG9yZSk7CisK
KyAgICBzdHJ1Y3QgSGVhZGVyIHsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gcmVjZWl2ZXJPZmZz
ZXQ7CisgICAgICAgIC8vIFBhZGRpbmcgc28gdGhhdCB0aGUgdmFyaWFibGVzIG1vc3RseSBhY2Nl
c3NlZCBieSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGRvIG5vdCBzaGFyZSBhIGNhY2hlIGxpbmUuCisg
ICAgICAgIC8vIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBhdm9pZCBjYWNoZS1saW5lIGluZHVjZWQg
cmVkdWN0aW9uIG9mIHBhcmFsbGVsIGFjY2Vzcy4KKyAgICAgICAgYWxpZ25hcyhzaXplb2YodWlu
dDY0X3RbMl0pKSBBdG9taWM8c2l6ZV90PiBzZW5kZXJPZmZzZXQ7CisgICAgfTsKKyAgICBIZWFk
ZXImIGhlYWRlcigpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEhlYWRlcio+KG1f
c2hhcmVkTWVtb3J5LT5kYXRhKCkpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaGVh
ZGVyU2l6ZSgpIHsgcmV0dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHN0ZDo6bWF4X2Fs
aWduX3QpPihzaXplb2YoSGVhZGVyKSk7IH0KKworICAgIHNpemVfdCBtX2RhdGFTaXplIHsgMCB9
OworICAgIFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CisgICAgU2Vt
YXBob3JlIG1fc2VuZGVyV2FpdFNlbWFwaG9yZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI5MjMyZGVjZjZjNzkzYTQ1NzcxNjhlOTdlZmI1MWFhZmIzMmZkZWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5o
CkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBJUEMgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSwgdHlwZW5hbWU+IHN0cnVjdCBBcmd1bWVudENvZGVyOworCisvLyBJUEMgZW5jb2Rl
ciB3aGljaDoKKy8vICAtIEVuY29kZXMgdG8gYSBjYWxsZXIgYnVmZmVyIHdpdGggZml4ZWQgc2l6
ZSwgZG9lcyBub3QgcmVzaXplLCBzdG9wcyB3aGVuIHNpemUgcnVucyBvdXQKKy8vICAtIERvZXMg
bm90IGluaXRpYWxpemUgYWxpZ25tZW50IGdhcHMKKy8vCitjbGFzcyBTdHJlYW1Db25uZWN0aW9u
RW5jb2RlciBmaW5hbCB7CitwdWJsaWM6CisgICAgLy8gU3RyZWFtIG1lc3NhZ2UgbmVlZHMgdG8g
YmUgYXQgbGVhc3Qgc2l6ZSBvZiBTdHJlYW1TZXREZXN0aW5hdGlvbklEIG1lc3NhZ2UuCisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VTaXplID0gc2l6ZW9mKE1lc3Nh
Z2VOYW1lKSArIHNpemVvZih1aW50NjRfdCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
bWVzc2FnZUFsaWdubWVudCA9IGFsaWdub2YoTWVzc2FnZU5hbWUpOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc0lQQ0VuY29kZXIgPSB0cnVlOworCisgICAgU3RyZWFtQ29ubmVjdGlvbkVu
Y29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0
cmVhbUNhcGFjaXR5KQorICAgICAgICA6IG1fYnVmZmVyKHN0cmVhbSkKKyAgICAgICAgLCBtX2J1
ZmZlckNhcGFjaXR5KHN0cmVhbUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgKnRoaXMgPDwgbWVz
c2FnZU5hbWU7CisgICAgfQorCisgICAgflN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyKCkgPSBkZWZh
dWx0OworCisgICAgYm9vbCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCisgICAgeworICAgICAgICBzaXplX3Qg
YnVmZmVyUG9pbnRlciA9IHN0YXRpY19jYXN0PHNpemVfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4obV9idWZmZXIgKyBtX2VuY29kZWRTaXplKSk7CisgICAgICAgIHNpemVfdCBuZXdCdWZm
ZXJQb2ludGVyID0gcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm1lbnQsIGJ1ZmZlclBvaW50ZXIp
OworICAgICAgICBpZiAobmV3QnVmZmVyUG9pbnRlciA8IGJ1ZmZlclBvaW50ZXIpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGludHB0cl90IGFsaWduZWRTaXplID0gbV9lbmNv
ZGVkU2l6ZSArIChuZXdCdWZmZXJQb2ludGVyIC0gYnVmZmVyUG9pbnRlcik7CisgICAgICAgIGlm
ICghcmVzZXJ2ZShhbGlnbmVkU2l6ZSwgc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IG1fYnVmZmVyICsgYWxpZ25lZFNpemU7CisgICAg
ICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOworICAgICAgICBtX2VuY29kZWRTaXplID0g
YWxpZ25lZFNpemUgKyBzaXplOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiBvcGVyYXRv
cjw8KFQmJiB0KQorICAgIHsKKyAgICAgICAgQXJndW1lbnRDb2RlcjxzdGQ6OnJlbW92ZV9jb25z
dF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Piwgdm9pZD46OmVuY29kZSgqdGhpcywgc3Rk
Ojpmb3J3YXJkPFQ+KHQpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyBBU1NFUlQoaXNWYWxpZCgpKTsgcmV0dXJuIG1fZW5jb2RlZFNp
emU7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlckNhcGFjaXR5
OyB9CisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWQoKTsgfQorcHJp
dmF0ZToKKyAgICBib29sIHJlc2VydmUoc2l6ZV90IGFsaWduZWRTaXplLCBzaXplX3QgYWRkaXRp
b25hbFNpemUpCisgICAgeworICAgICAgICBzaXplX3Qgc2l6ZSA9IGFsaWduZWRTaXplICsgYWRk
aXRpb25hbFNpemU7CisgICAgICAgIGlmIChzaXplIDwgYWxpZ25lZFNpemUgfHwgc2l6ZSA+IG1f
YnVmZmVyQ2FwYWNpdHkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyQ2FwYWNpdHkgPSAwOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICB1aW50OF90KiBtX2J1ZmZlcjsKKyAgICBzaXplX3QgbV9idWZmZXJDYXBhY2l0
eTsKKyAgICBzaXplX3QgbV9lbmNvZGVkU2l6ZSB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWI0NDk0Yjc0ZmQ5Mjg1ODAzZTRlYTJl
ZjQ4YzExNzM2NTlkNzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKQEAgLTAsMCArMSwxMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgorCituYW1lc3BhY2UgSVBDIHsKKworU3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZShjb25zdCBjaGFyKiBuYW1lKQorICAgIDog
bV9uYW1lKG5hbWUpCit7Cit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6ZGlz
cGF0Y2goV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAgeworICAgICAg
ICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIG1fZnVuY3Rpb25zLmFwcGVuZChXVEZN
b3ZlKGZ1bmN0aW9uKSk7CisgICAgICAgIEFTU0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50
ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5vdCBzdXBwb3J0ZWQuCisgICAgfQorICAgIHdha2VVcFBy
b2Nlc3NpbmdUaHJlYWQoKTsKKworfQordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjph
ZGRTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9u
KQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX2Nv
bm5lY3Rpb25zLmFkZChjb25uZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFtX3Nob3VsZFF1aXQp
OyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBvcnRlZC4KKyAgICB9Cisg
ICAgd2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpOworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2UmIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKG1fcHJvY2Vzc2luZ1RocmVhZCk7CisgICAg
eworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIG1fY29ubmVjdGlvbnMu
cmVtb3ZlKGNvbm5lY3Rpb24pOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkUXVpdCk7IC8vIFJl
LWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVkLgorICAgIH0KKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsKKyNlbmRpZgorfQor
Cit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnN0b3AoKQoreworICAgIG1fc2hvdWxk
UXVpdCA9IHRydWU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKCFtX3Byb2Nlc3NpbmdU
aHJlYWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsK
KyAgICBtX3Byb2Nlc3NpbmdUaHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CisgICAgbV9wcm9j
ZXNzaW5nVGhyZWFkID0gbnVsbHB0cjsKKyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWU6Ondha2VVcCgpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtl
VXBTZW1hcGhvcmUuc2lnbmFsKCk7CisjZW5kaWYKK30KKworSVBDOjpTZW1hcGhvcmUmIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFNlbWFwaG9yZSgpCit7CisgICAgcmV0dXJuIG1f
d2FrZVVwU2VtYXBob3JlOworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondh
a2VVcFByb2Nlc3NpbmdUaHJlYWQoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmICht
X3Byb2Nlc3NpbmdUaHJlYWQpIHsKKyAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHRhc2sgPSBbdGhpc10oKSBtdXRh
YmxlIHsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgcHJvY2Vzc1N0cmVhbXMoKTsK
KyAgICAgICAgICAgIGlmIChtX3Nob3VsZFF1aXQpIHsKKyAgICAgICAgICAgICAgICBwcm9jZXNz
U3RyZWFtcygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLndhaXQoKTsKKyAgICAgICAgfQorICAgIH07CisgICAg
bV9wcm9jZXNzaW5nVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUobV9uYW1lLCBXVEZNb3ZlKHRhc2sp
LCBUaHJlYWRUeXBlOjpHcmFwaGljcywgVGhyZWFkOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSk7Cisj
ZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpwcm9jZXNzU3RyZWFt
cygpCit7CisgICAgY29uc3RleHByIHNpemVfdCBkZWZhdWx0TWVzc2FnZUxpbWl0ID0gMTAwMDsK
KyAgICBib29sIGhhc01vcmVUb1Byb2Nlc3MgPSBmYWxzZTsKKyAgICBkbyB7CisgICAgICAgIERl
cXVlPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gZnVuY3Rpb25zOworICAgICAgICBIYXNoU2V0PFJl
ZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4+IGNvbm5lY3Rpb25zOworICAgICAgICB7Cisg
ICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAgICAgICBm
dW5jdGlvbnMuc3dhcChtX2Z1bmN0aW9ucyk7CisgICAgICAgICAgICBjb25uZWN0aW9ucyA9IG1f
Y29ubmVjdGlvbnM7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1
bmN0aW9ucykKKyAgICAgICAgICAgIFdURk1vdmUoZnVuY3Rpb24pKCk7CisKKyAgICAgICAgaGFz
TW9yZVRvUHJvY2VzcyA9IGZhbHNlOworICAgICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBj
b25uZWN0aW9ucykKKyAgICAgICAgICAgIGhhc01vcmVUb1Byb2Nlc3MgfD0gY29ubmVjdGlvbi0+
ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhkZWZhdWx0TWVzc2FnZUxpbWl0KSA9PSBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6SGFzTW9yZU1lc3NhZ2VzOworICAgIH0gd2hpbGUgKGhhc01vcmVU
b1Byb2Nlc3MpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUyNmEzNTI2NjUxZGRm
ZjM5MGE3ZGY3MWZjOTVkYTVhNDFkY2M1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUu
aCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8YXRvbWlj
PgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNo
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworY2xhc3MgU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIg
eworcHVibGljOgorICAgIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUoY29uc3QgY2hhciopOwor
ICAgIH5TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlKCkgPSBkZWZhdWx0OworICAgIHZvaWQgYWRk
U3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYpOworICAgIHZvaWQg
cmVtb3ZlU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYpOworCisg
ICAgdm9pZCBkaXNwYXRjaChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9p
ZCBzdG9wKCk7CisKKyAgICB2b2lkIHdha2VVcCgpOworCisgICAgU2VtYXBob3JlJiB3YWtlVXBT
ZW1hcGhvcmUoKTsKK3ByaXZhdGU6CisgICAgdm9pZCB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7
CisgICAgdm9pZCBwcm9jZXNzU3RyZWFtcygpOworCisgICAgY29uc3QgY2hhciogY29uc3QgbV9u
YW1lOworICAgIFNlbWFwaG9yZSBtX3dha2VVcFNlbWFwaG9yZTsKKyAgICBSZWZQdHI8VGhyZWFk
PiBtX3Byb2Nlc3NpbmdUaHJlYWQ7CisKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX3Nob3VsZFF1
aXQgeyBmYWxzZSB9OworCisgICAgTG9jayBtX2xvY2s7CisgICAgRGVxdWU8RnVuY3Rpb248dm9p
ZCgpPj4gbV9mdW5jdGlvbnM7CisgICAgSGFzaFNldDxSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U+PiBtX2Nvbm5lY3Rpb25zOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODIy
MzE2MDczZjgyNjg0YzhiZDQ1ODgzMzhmNDFlMjIyNjhmYzk2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAg
LTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKworbmFtZXNwYWNlIElQQyB7
CisKK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFt
LCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUpCisgICAgOiBtX2Nvbm5lY3Rp
b24oY29ubmVjdGlvbikKKyAgICAsIG1fd29ya1F1ZXVlKHdvcmtRdWV1ZSkKKyAgICAsIG1fYnVm
ZmVyKFdURk1vdmUoc3RyZWFtKSkKK3sKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3Nh
Z2VSZWNlaXZlUXVldWUoKnRoaXMsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAg
bV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJO
YW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX2Nvbm5l
Y3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBtX3dvcmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKK30K
Kwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UoQ29ubmVj
dGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmIG1lc3NhZ2UpCit7CisgICAgeworICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOwor
ICAgICAgICBtX291dE9mU3RyZWFtTWVzc2FnZXMuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOwor
ICAgIH0KKyAgICBtX3dvcmtRdWV1ZS53YWtlVXAoKTsKK30KKworT3B0aW9uYWw8U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlB
cXVpcmUoKQoreworICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0
KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICBpZiAocmVjZWl2ZXJMaW1p
dCA9PSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBp
bmdUYWcpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byByZXN1bHQgPSBh
bGlnbmVkU3BhbihtX3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0KTsKKyAgICBpZiAocmVz
dWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNpemUpIHsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9
IHNoYXJlZFNlbmRlck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhyZWNlaXZlckxpbWl0
LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdU
YWcsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwp
OworICAgICAgICBBU1NFUlQoIShyZWNlaXZlckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKSk7CisgICAgICAgIHJlY2VpdmVy
TGltaXQgPSBjbGFtcGVkTGltaXQocmVjZWl2ZXJMaW1pdCk7CisgICAgICAgIHJlc3VsdCA9IGFs
aWduZWRTcGFuKG1fcmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworICAgIH0KKworICAg
IGlmIChyZXN1bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZTo6cmVsZWFzZShzaXplX3QgcmVhZFNpemUpCit7CisgICAgQVNTRVJUKHJl
YWRTaXplKTsKKyAgICByZWFkU2l6ZSA9IHN0ZDo6bWF4KHJlYWRTaXplLCBtaW5pbXVtTWVzc2Fn
ZVNpemUpOworICAgIHNpemVfdCByZWNlaXZlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZz
ZXQobV9yZWNlaXZlck9mZnNldCkgKyByZWFkU2l6ZSk7CisKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBzaXplX3Qgb2xkUmVjZWl2ZXJPZmZzZXQgPSBzaGFyZWRSZWNlaXZlck9mZnNldCgpLmV4
Y2hhbmdlKHJlY2VpdmVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAv
LyBJZiB0aGUgc2VuZGVyIHdyb3RlIG92ZXIgcmVjZWl2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBz
ZW5kZXIgaXMgd2FpdGluZy4KKyAgICBpZiAob2xkUmVjZWl2ZXJPZmZzZXQgPT0gU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcpCisgICAgICAg
IG1fYnVmZmVyLnNlbmRlcldhaXRTZW1hcGhvcmUoKS5zaWduYWwoKTsKKyAgICBlbHNlCisgICAg
ICAgIEFTU0VSVCghKG9sZFJlY2VpdmVyT2Zmc2V0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6
cmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcpKTsKKyNlbHNlCisgICAgc2hhcmVkUmVj
ZWl2ZXJPZmZzZXQoKS5zdG9yZShyZWNlaXZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfcmVs
ZWFzZSk7CisgICAgLy8gSVBDOjpTZW1hcGhvcmUgbm90IGltcGxlbWVudGVkIGZvciB0aGUgcGxh
dGZvcm0uIENsaWVudCB3aWxsIHBvbGwgYW5kIHlpZWxkLgorICAgIFVOVVNFRF9WQVJJQUJMRShv
bGRSZWNlaXZlck9mZnNldCk7CisjZW5kaWYKKworICAgIG1fcmVjZWl2ZXJPZmZzZXQgPSByZWNl
aXZlck9mZnNldDsKK30KKworU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4gU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
aW1pdCkKK3sKKyAgICBBU1NFUlQob2Zmc2V0IDwgZGF0YVNpemUoKSk7CisgICAgQVNTRVJUKGxp
bWl0IDwgZGF0YVNpemUoKSk7CisgICAgc2l6ZV90IGFsaWduZWQgPSBhbGlnbk9mZnNldChvZmZz
ZXQpOworICAgIHNpemVfdCByZXN1bHRTaXplID0gMDsKKyAgICBpZiAob2Zmc2V0IDwgbGltaXQp
IHsKKyAgICAgICAgaWYgKG9mZnNldCA8PSBhbGlnbmVkICYmIGFsaWduZWQgPCBsaW1pdCkKKyAg
ICAgICAgICAgIHJlc3VsdFNpemUgPSBzaXplKGFsaWduZWQsIGxpbWl0KTsKKyAgICB9IGVsc2Ug
aWYgKG9mZnNldCA+IGxpbWl0KSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBh
bGlnbmVkIDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBs
aW1pdCk7CisgICAgfQorICAgIHJldHVybiB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUg
fTsKK30KKworc2l6ZV90IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaXplKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAgICBpZiAob2Zmc2V0IDw9IGxpbWl0KQorICAgICAg
ICByZXR1cm4gbGltaXQgLSBvZmZzZXQ7CisgICAgcmV0dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7
Cit9CisKK3NpemVfdCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y2xhbXBlZExpbWl0KHNp
emVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3QKK3sKKyAgICBBU1NFUlQodW50cnVzdGVkTGltaXQg
PCAoZGF0YVNpemUoKSAtIDEpKTsKKyAgICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQs
IGRhdGFTaXplKCkgLSAxKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1ODFjNjkwMWQ1MTI1
YTA2NGJhNGUzYTcwNjhlNDJhMTlkZjkxYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSwyODQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNs
dWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIFN0
cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU7CisKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlPiwgcHJvdGVjdGVkIE1lc3NhZ2VSZWNlaXZlUXVldWUgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKTsKK3B1YmxpYzoKKyAgICB+U3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2UoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgICBDb25uZWN0
aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisKKyAgICBlbnVtIERp
c3BhdGNoUmVzdWx0IDogYm9vbCB7CisgICAgICAgIEhhc05vTWVzc2FnZXMsCisgICAgICAgIEhh
c01vcmVNZXNzYWdlcworICAgIH07CisgICAgdmlydHVhbCBEaXNwYXRjaFJlc3VsdCBkaXNwYXRj
aFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNzYWdlTGltaXQpID0gMDsKKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICB2b2lkIHNlbmRTeW5jUmVwbHkodWludDY0X3Qg
c3luY1JlcXVlc3RJRCwgQXJndW1lbnRzJiYuLi4pOworCitwcm90ZWN0ZWQ6CisgICAgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2UoSVBDOjpDb25uZWN0aW9uJiwgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJik7CisKKyAgICB2b2lkIHN0YXJ0UmVj
ZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7
CisgICAgdm9pZCBzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCk7CisKKyAgICAvLyBNZXNzYWdlUmVjZWl2ZVF1ZXVlCisgICAgdm9p
ZCBlbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYp
IGZpbmFsOworCisgICAgc3RydWN0IFNwYW4geworICAgICAgICB1aW50OF90KiBkYXRhOworICAg
ICAgICBzaXplX3Qgc2l6ZTsKKyAgICB9OworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFxdWlyZSgp
OworCisgICAgdm9pZCByZWxlYXNlKHNpemVfdCByZWFkU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VTaXplID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6
Om1pbmltdW1NZXNzYWdlU2l6ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNzYWdl
QWxpZ25tZW50ID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1lc3NhZ2VBbGlnbm1lbnQ7Cisg
ICAgU3BhbiBhbGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHNp
emVfdCBzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90IGNsYW1w
ZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0OworICAgIHNpemVfdCB3cmFwT2Zm
c2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zm
c2V0KTsgfQorICAgIHNpemVfdCBhbGlnbk9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5hbGlnbk9mZnNldDxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQsIG1pbmlt
dW1NZXNzYWdlU2l6ZSk7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkU2VuZGVyT2Zmc2V0
KCkgeyByZXR1cm4gbV9idWZmZXIuc2VuZGVyT2Zmc2V0KCk7IH0KKyAgICBBdG9taWM8c2l6ZV90
PiYgc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5yZWNlaXZlck9mZnNl
dCgpOyB9CisgICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEo
KTsgfQorICAgIHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFT
aXplKCk7IH0KKworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiBtX3dvcmtRdWV1ZTsKKworICAgIHNpemVfdCBtX3Jl
Y2VpdmVyT2Zmc2V0IHsgMCB9OworICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgbV9idWZmZXI7
CisKKyAgICBMb2NrIG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2s7CisgICAgRGVxdWU8c3RkOjp1
bmlxdWVfcHRyPERlY29kZXI+PiBtX291dE9mU3RyZWFtTWVzc2FnZXM7CisKKyAgICBmcmllbmQg
Y2xhc3MgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3VtZW50cz4KK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5j
UmVwbHkodWludDY0X3Qgc3luY1JlcXVlc3RJRCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgc2VuZGluZyB0byBidWZmZXIuCisgICAgYXV0byBl
bmNvZGVyID0gbWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KElQQzo6TWVzc2FnZU5hbWU6OlN5bmNN
ZXNzYWdlUmVwbHksIHN5bmNSZXF1ZXN0SUQpOworICAgICgqZW5jb2RlciA8PCAuLi4gPDwgYXJn
dW1lbnRzKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVy
KSk7Cit9CisKKy8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gcmVwcmVzZW50cyB0aGUgY29ubmVj
dGlvbiBiZXR3ZWVuIHN0cmVhbSBzZW5kZXIgYW5kIHJlY2VpdmVyLCBhcyB1c2VkIGJ5IHRoZSBy
ZWNlaXZlci4KKy8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb246CisvLyAgKiBIb2xkcyB0aGUgbWVz
c2FnZXMgdG93YXJkcyB0aGUgcmVjZWl2ZXIuCisvLyAgKiBTZW5kcyB0aGUgcmVwbGllcyBiYWNr
IHRvIHRoZSBzZW5kZXIgdmlhIHRoZSBzdHJlYW0gb3Igbm9ybWFsIENvbm5lY3Rpb24gZmFsbGJh
Y2suCisvLworLy8gUmVjZWl2ZXIgdGVtcGxhdGUgY29udHJhY3Q6CisvLyAgIHZvaWQgZGlkUmVj
ZWl2ZVN0cmVhbU1lc3NhZ2UoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBEZWNvZGVyJik7
CisvLworLy8gVGhlIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gZG9lcyBub3QgdHJ1c3QgdGhlIFN0
cmVhbUNsaWVudENvbm5lY3Rpb24uCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK2NsYXNz
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlv
bj4gY3JlYXRlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIm
JiBzdHJlYW1CdWZmZXIsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24o
Y29ubmVjdGlvbiwgV1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpKTsKKyAgICB9Cisg
ICAgflN0cmVhbVNlcnZlckNvbm5lY3Rpb24oKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICB2b2lk
IHN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpOworICAgIC8vIFN0b3BzIHRoZSBtZXNzYWdlIHJlY2VpcHQuIE5vdGU6
IGFscmVhZHkgcmVjZWl2ZWQgbWVzc2FnZXMgbWlnaHQgc3RpbGwgYmUgZGVsaXZlcmVkLgorICAg
IHZvaWQgc3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCk7CisKKyAgICAvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSBvdmVycmlkZXMu
CisgICAgRGlzcGF0Y2hSZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2Fn
ZUxpbWl0KSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZm
ZXIsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICAgICAgOiBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciks
IHdvcmtRdWV1ZSkKKyAgICB7CisgICAgfQorICAgIGJvb2wgcHJvY2Vzc1NldFN0cmVhbURlc3Rp
bmF0aW9uSUQoRGVjb2RlciYmLCBSZWZQdHI8UmVjZWl2ZXI+JiBjdXJyZW50UmVjZWl2ZXIpOwor
ICAgIGJvb2wgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiwgUmVjZWl2ZXImKTsKKyAg
ICBib29sIGRpc3BhdGNoT3V0T2ZTdHJlYW1NZXNzYWdlKERlY29kZXImJik7CisgICAgTG9jayBt
X3JlY2VpdmVyc0xvY2s7CisgICAgdXNpbmcgUmVjZWl2ZXJzTWFwID0gSGFzaE1hcDxzdGQ6OnBh
aXI8dWludDhfdCwgdWludDY0X3Q+LCBSZWY8UmVjZWl2ZXI+PjsKKyAgICBSZWNlaXZlcnNNYXAg
bV9yZWNlaXZlcnM7CisKKyAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEID0gMDsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPFJlY2VpdmVyPjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYgcmVjZWl2
ZXIsIFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7
CisgICAgeworICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9yZWNlaXZl
cnMuY29udGFpbnMoa2V5KSk7CisgICAgICAgIG1fcmVjZWl2ZXJzLmFkZChrZXksIG1ha2VSZWYo
cmVjZWl2ZXIpKTsKKyAgICB9CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0
UmVjZWl2aW5nTWVzc2FnZXNJbXBsKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
PFJlY2VpdmVyPjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KHJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICBBU1NFUlQobV9yZWNlaXZlcnMuY29udGFpbnMoa2V5
KSk7CisgICAgbV9yZWNlaXZlcnMucmVtb3ZlKGtleSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFJlY2VpdmVyPgorU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OkRpc3BhdGNoUmVzdWx0IFN0
cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNp
emVfdCBtZXNzYWdlTGltaXQpCit7CisgICAgUmVmUHRyPFJlY2VpdmVyPiBjdXJyZW50UmVjZWl2
ZXI7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBXVEY6OmlzVmFsaWQoUmVjZWl2ZXJOYW1lKS4K
KyAgICB1aW50OF90IGN1cnJlbnRSZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihS
ZWNlaXZlck5hbWU6OkludmFsaWQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNz
YWdlTGltaXQ7ICsraSkgeworICAgICAgICBhdXRvIHNwYW4gPSB0cnlBcXVpcmUoKTsKKyAgICAg
ICAgaWYgKCFzcGFuKQorICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01l
c3NhZ2VzOworICAgICAgICBJUEM6OkRlY29kZXIgZGVjb2RlciB7IHNwYW4tPmRhdGEsIHNwYW4t
PnNpemUsIG1fY3VycmVudERlc3RpbmF0aW9uSUQgfTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlz
VmFsaWQoKSkgeworICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJu
IERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICB9CisgICAgICAgIGlmIChk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9u
SUQpIHsKKyAgICAgICAgICAgIGlmICghcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoV1RG
TW92ZShkZWNvZGVyKSwgY3VycmVudFJlY2VpdmVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
RGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1l
OjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKSB7CisgICAgICAgICAgICBpZiAoIWRpc3BhdGNo
T3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIGlmIChjdXJyZW50UmVjZWl2ZXJOYW1lICE9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkgeworICAgICAgICAg
ICAgY3VycmVudFJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpKTsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxw
dHI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFjdXJyZW50UmVjZWl2ZXIpIHsKKyAgICAgICAg
ICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4oY3VycmVu
dFJlY2VpdmVyTmFtZSksIG1fY3VycmVudERlc3RpbmF0aW9uSUQpOworICAgICAgICAgICAgaWYg
KCFSZWNlaXZlcnNNYXA6OmlzVmFsaWRLZXkoa2V5KSkgeworICAgICAgICAgICAgICAgIG1fY29u
bmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdl
TmFtZSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVz
c2FnZXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgICAgICBjdXJyZW50UmVjZWl2ZXIgPSBtX3JlY2Vp
dmVycy5nZXQoa2V5KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNlaXZlcikg
eworICAgICAgICAgICAgLy8gVmFsaWQgc2NlbmFyaW8gaXMgd2hlbiByZWNlaXZlciBoYXMgYmVl
biByZW1vdmVkLCBidXQgdGhlcmUgYXJlIG1lc3NhZ2VzIGZvciBpdCBpbiB0aGUgYnVmZmVyLgor
ICAgICAgICAgICAgLy8gRklYTUU6IFNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgcmVjZWl2ZXIsIHdl
IGRvbid0IGtub3cgaG93IHRvIGRlY29kZSB0aGUgbWVzc2FnZS4KKyAgICAgICAgICAgIC8vIFRo
aXMgbWVhbnMgd2UgbXVzdCB0aW1lb3V0IGV2ZXJ5IHJlY2VpdmVyIGluIHRoZSBzdHJlYW0gY29u
bmVjdGlvbi4KKyAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBhc3NlcnQgdGhhdCB0aGUgcmVj
ZWl2ZXJzIGFyZSBlbXB0eSwgYXMgd2Ugb25seSBoYXZlIHVwIHRvIG9uZSByZWNlaXZlciBpbgor
ICAgICAgICAgICAgLy8gYSBzdHJlYW0gY29ubmVjdGlvbiB1bnRpbCBwb3NzaWJpbGl0eSBvZiBz
a2lwcGluZyBpcyBpbXBsZW1lbnRlZCBwcm9wZXJseS4KKyAgICAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3JlY2Vp
dmVycy5pc0VtcHR5KCkpOworICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNO
b01lc3NhZ2VzOworICAgICAgICB9CisgICAgICAgIGlmICghZGlzcGF0Y2hTdHJlYW1NZXNzYWdl
KFdURk1vdmUoZGVjb2RlciksICpjdXJyZW50UmVjZWl2ZXIpKQorICAgICAgICAgICAgcmV0dXJu
IERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgIH0KKyAgICByZXR1cm4gRGlzcGF0
Y2hSZXN1bHQ6Okhhc01vcmVNZXNzYWdlczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2
ZXI+Citib29sIFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9jZXNzU2V0U3Ry
ZWFtRGVzdGluYXRpb25JRChEZWNvZGVyJiYgZGVjb2RlciwgUmVmUHRyPFJlY2VpdmVyPiYgY3Vy
cmVudFJlY2VpdmVyKQoreworICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGVzdGluYXRpb25JRCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9u
LT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChtX2N1cnJlbnREZXN0aW5h
dGlvbklEICE9IGRlc3RpbmF0aW9uSUQpIHsKKyAgICAgICAgbV9jdXJyZW50RGVzdGluYXRpb25J
RCA9IGRlc3RpbmF0aW9uSUQ7CisgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7Cisg
ICAgfQorICAgIHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERlY29k
ZXImJiBkZWNvZGVyLCBSZWNlaXZlciYgcmVjZWl2ZXIpCit7CisgICAgcmVjZWl2ZXIuZGlkUmVj
ZWl2ZVN0cmVhbU1lc3NhZ2UoKnRoaXMsIGRlY29kZXIpOworICAgIGlmICghZGVjb2Rlci5pc1Zh
bGlkKCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2Uo
RGVjb2RlciYmIGRlY29kZXIpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3Nh
Z2U7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1N
ZXNzYWdlc0xvY2spOworICAgICAgICBpZiAobV9vdXRPZlN0cmVhbU1lc3NhZ2VzLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbWVzc2FnZSA9IG1fb3V0T2ZT
dHJlYW1NZXNzYWdlcy50YWtlRmlyc3QoKTsKKyAgICB9CisgICAgaWYgKCFtZXNzYWdlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8UmVjZWl2ZXI+IHJlY2VpdmVyOworICAg
IHsKKyAgICAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90
PihtZXNzYWdlLT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCBtZXNzYWdlLT5kZXN0aW5hdGlvbklE
KCkpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7Cisg
ICAgICAgIHJlY2VpdmVyID0gbV9yZWNlaXZlcnMuZ2V0KGtleSk7CisgICAgfQorICAgIGlmIChy
ZWNlaXZlcikgeworICAgICAgICByZWNlaXZlci0+ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKnRo
aXMsICptZXNzYWdlKTsKKyAgICAgICAgaWYgKCFtZXNzYWdlLT5pc1ZhbGlkKCkpIHsKKyAgICAg
ICAgICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVz
c2FnZS0+bWVzc2FnZU5hbWUoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisgICAgLy8gSWYgcmVjZWl2ZXIgZG9lcyBub3QgZXhpc3QgaWYgaXQgaGFzIGJl
ZW4gcmVtb3ZlZCBidXQgbWVzc2FnZXMgYXJlIHN0aWxsIHBlbmRpbmcgdG8gYmUKKyAgICAvLyBw
cm9jZXNzZWQuIEl0J3Mgb2sgdG8gc2tpcCBzdWNoIG1lc3NhZ2VzLgorICAgIC8vIEZJWE1FOiBO
b3RlLCBjb3JyZXNwb25kaW5nIHNraXAgaXMgbm90IHBvc3NpYmxlIGF0IHRoZSBtb21lbnQgZm9y
IHN0cmVhbSBtZXNzYWdlcy4KKyAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBvc2l0
aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvY29jb2EvTWFjaFBvcnQuaAppbmRleCA3ODU0ZmE4ZjE4NjhmYjhlNDU2MjI4OWZkZGY2
ZjI3OTVhZjJkOTBkLi44M2Q5OWYwY2JjOGZlMDQ4MjBiNDc4M2M5YzA3NmFiNTdhM2VhYjJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmgKQEAgLTI1LDkg
KzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAj
aW5jbHVkZSAiQXR0YWNobWVudC5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJF
bmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBJUEMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggNWFkZmQ4MmJlY2E0NmRiMDI0NDdl
OGJjYjZkMzg0YzJjMDE1NmE2MC4uOTBiODAyYzgwOTZkNzZjMzJiNGI5N2ZiODEyZWFmOTFmZjEz
M2U4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rp
b25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9u
V2luLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0
Zi9SYW5kb21OdW1iZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CmluZGV4IGQ1NDMwMjI3NTNhZGYzMTkzNjI0MGNmMmE0OGY1MWI3MjM5ZDVlYzUuLjQwY2YzODA4
OGFhNzRhOGMxZDljOGJiZThjZDllZDA3MzNiZWVhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjQsOCArMjQsOSBAQCBpbXBvcnQgY29sbGVjdGlvbnMK
IGltcG9ydCByZQogaW1wb3J0IHN5cwogCitmcm9tIG1vZGVsIGltcG9ydCBNZXNzYWdlUmVjZWl2
ZXIsIE1lc3NhZ2UKIGZyb20gd2Via2l0IGltcG9ydCBwYXJzZXIKLWZyb20gd2Via2l0Lm1vZGVs
IGltcG9ydCBCVUlMVElOX0FUVFJJQlVURSwgQVNZTkNfQVRUUklCVVRFLCBTWU5DSFJPTk9VU19B
VFRSSUJVVEUsIE1BSU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUKK2Zyb20gd2Via2l0Lm1vZGVs
IGltcG9ydCBCVUlMVElOX0FUVFJJQlVURSwgQVNZTkNfQVRUUklCVVRFLCBTWU5DSFJPTk9VU19B
VFRSSUJVVEUsIE1BSU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUsIFNUUkVBTV9BVFRSSUJVVEUs
IFdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFCiAKIF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CkBAIC01MywxMyArNTQsMTEgQEAgX2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKIAogIiIiCiAKLVdB
TlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFID0gJ1dhbnRzQ29ubmVjdGlvbicKIFdBTlRTX0RJU1BB
VENIX01FU1NBR0VfQVRUUklCVVRFID0gJ1dhbnRzRGlzcGF0Y2hNZXNzYWdlJwogV0FOVFNfQVNZ
TkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUgPSAnV2FudHNBc3luY0Rpc3BhdGNoTWVzc2Fn
ZScKIExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUgPSAnTGVnYWN5UmVjZWl2ZXInCiBOT1RfUkVG
Q09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUgPSAnTm90UmVmQ291bnRlZCcKIAotCiBkZWYgcmVj
ZWl2ZXJfZW51bWVyYXRvcl9vcmRlcl9rZXkocmVjZWl2ZXJfbmFtZSk6CiAgICAgaWYgcmVjZWl2
ZXJfbmFtZSA9PSAnSVBDJzoKICAgICAgICAgcmV0dXJuIDEKQEAgLTIxMyw3ICsyMTIsNyBAQCBk
ZWYgbWVzc2FnZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFj
a1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpNYWluVGhyZWFkO1xu
JykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2Fs
bFRocmVhZDo6Q29uc3RydWN0aW9uVGhyZWFkO1xuJykKLSAgICAgICAgaWYgbWVzc2FnZS5oYXNf
YXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRl
KEFTWU5DX0FUVFJJQlVURSk6CisgICAgICAgIGlmIChtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lO
Q0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklC
VVRFKSkgYW5kIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJicpCiAgICAgICAgICAgICBp
ZiBsZW4oc2VuZF9wYXJhbWV0ZXJzKToKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcs
ICVzJyAlIGNvbXBsZXRpb25faGFuZGxlcl9wYXJhbWV0ZXJzKQpAQCAtMjYxLDYgKzI2MCw3IEBA
IGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgcmV0dXJu
IGZyb3plbnNldChbCiAgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAnSVBD
OjpGb250UmVmZXJlbmNlJywKKyAgICAgICAgJ0lQQzo6U2VtYXBob3JlJywKICAgICAgICAgJ01h
Y2hTZW5kUmlnaHQnLAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCkBA
IC01NzMsMTAgKzU3MywxNSBAQCBkZWYgc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwg
bWVzc2FnZSk6CiAgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdBc3luYycKIAogICAgIHdh
bnRzX2Nvbm5lY3Rpb24gPSBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklC
VVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUp
CisgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9ICIsICpyZXBseUVuY29kZXIiCisgICAgaWYgcmVj
ZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToKKyAgICAgICAgbWF5YmVfcmVw
bHlfZW5jb2RlciA9ICcnCisgICAgZWxpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05P
VVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToK
KyAgICAgICAgbWF5YmVfcmVwbHlfZW5jb2RlciA9ICcsIHJlcGx5RW5jb2RlcicKIAogICAgIHJl
c3VsdCA9IFtdCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OiVzOjolczo6bmFtZSgpKSB7XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1l
c3NhZ2UubmFtZSkpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBJUEM6OiVzPE1lc3NhZ2Vz
Ojolczo6JXM+KCVzZGVjb2RlciwgJXNyZXBseUVuY29kZXIsIHRoaXMsICYlcyk7XG4nICUgKGRp
c3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICdjb25uZWN0aW9u
LCAnIGlmIHdhbnRzX2Nvbm5lY3Rpb24gZWxzZSAnJywgJycgaWYgbWVzc2FnZS5oYXNfYXR0cmli
dXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5D
X0FUVFJJQlVURSkgZWxzZSAnKicsIGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIsIG1lc3NhZ2Up
KSkKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4o
JXNkZWNvZGVyJXMsIHRoaXMsICYlcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZl
ci5uYW1lLCBtZXNzYWdlLm5hbWUsICdjb25uZWN0aW9uLCAnIGlmIHdhbnRzX2Nvbm5lY3Rpb24g
ZWxzZSAnJywgbWF5YmVfcmVwbHlfZW5jb2RlciwgaGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwg
bWVzc2FnZSkpKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuO1xuJykKICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgfVxuJykKICAgICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9u
KCcnLmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCkBAIC04NzcsNyArODgyLDcgQEAg
ZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgIGlmIG1lc3Nh
Z2UucmVwbHlfcGFyYW1ldGVycyAhPSBOb25lIGFuZCAobWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZ
TkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJ
QlVURSkpOgogICAgICAgICAgICAgZGVsYXllZF9vcl9hc3luY19tZXNzYWdlcy5hcHBlbmQobWVz
c2FnZSkKIAotICAgIGlmIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXM6CisgICAgaWYgZGVsYXll
ZF9vcl9hc3luY19tZXNzYWdlcyBhbmQgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFN
X0FUVFJJQlVURSk6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBNZXNzYWdlcyB7
XG5cbm5hbWVzcGFjZSAlcyB7XG5cbicgJSByZWNlaXZlci5uYW1lKQogCiAgICAgICAgIGZvciBt
ZXNzYWdlIGluIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXM6CkBAIC05MjUsMjUgKzkzMCw0NCBA
QCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIGFzeW5jX21lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQogCi0gICAgaWYgYXN5
bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQ
QVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6
OmRpZFJlY2VpdmUlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVj
ZWl2ZXIuaGFzX2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkK
KyAgICBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAgICAg
ICByZXN1bHQuYXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29k
ZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQot
ICAgICAgICBpZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNF
SVZFUl9BVFRSSUJVVEUpOgorICAgICAgICBhc3NlcnQocmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShO
T1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpKQorICAgICAgICBhc3NlcnQobm90IHJl
Y2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKQor
ICAgICAgICBhc3NlcnQobm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElT
UEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKQorCisgICAgICAgIHJlc3VsdCArPSBbYXN5bmNfbWVz
c2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIGFzeW5jX21l
c3NhZ2VzXQorICAgICAgICByZXN1bHQgKz0gW3N5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2
ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIHN5bmNfbWVzc2FnZXNdCisKKyAgICAgICAgaWYg
KHJlY2VpdmVyLnN1cGVyY2xhc3MpOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVz
OjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTtcbicgJSAocmVj
ZWl2ZXIuc3VwZXJjbGFzcykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpO1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7XG4nKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykKKyAgICAgICAgcmVzdWx0
LmFwcGVuZCgnfVxuJykKKyAgICBlbGlmIGFzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19h
dHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhh
c19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgorICAg
ICAgICByZWNlaXZlX3ZhcmlhbnQgPSByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRy
aWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJworICAgICAgICByZXN1bHQu
YXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNl
aXZlX3ZhcmlhbnQpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgICAgICBpZiBu
b3QgKHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklC
VVRFKSBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpKToKICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKTtcbicpCiAKICAgICAgICAgcmVzdWx0ICs9IFthc3luY19tZXNzYWdlX3N0YXRlbWVudChy
ZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gYXN5bmNfbWVzc2FnZXNdCisKICAgICAg
ICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJ
QlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRpc3Bh
dGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKSlcbicpCiAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgICAgICAgIHJldHVybjtcbicpCiAgICAgICAgIGlmIChyZWNlaXZlci5zdXBlcmNs
YXNzKToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xhc3MpKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNsYXNzLCByZWNlaXZlX3Zhcmlh
bnQpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNF
RF9QQVJBTShjb25uZWN0aW9uKTtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
VU5VU0VEX1BBUkFNKGRlY29kZXIpO1xuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicp
CiAKLSAgICBpZiBzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNf
RElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgorICAgIGlmIG5vdCByZWNlaXZlci5oYXNfYXR0
cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpIGFuZCAoc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5o
YXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSk6CiAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJ1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlk
UmVjZWl2ZVN5bmMlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29k
ZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0
dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgne1xuJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXNfdW5pdHRlc3QucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzX3VuaXR0ZXN0LnB5CmluZGV4IDQ4ZDhlMWI2MjdjYzMxYjE4ZmExYzUwZmFiZWVlZDk3
MWJkMTViZTkuLmU4OWUxN2UxNDA3YjViNTY2YmMxOTJjNDBhOTlhMjhkOGJmOGRjZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQpA
QCAtNDYsNiArNDYsOCBAQCBfdGVzdF9yZWNlaXZlcl9uYW1lcyA9IFsKICAgICAnVGVzdFdpdGhJ
Zk1lc3NhZ2UnLAogICAgICdUZXN0V2l0aFNlbWFwaG9yZScsCiAgICAgJ1Rlc3RXaXRoSW1hZ2VE
YXRhJywKKyAgICAnVGVzdFdpdGhTdHJlYW0nLAorICAgICdUZXN0V2l0aFN0cmVhbUJ1ZmZlcicK
IF0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQppbmRleCA0ODAwZmE0ZWZj
YTk2NzhhODlhZmM3ZTQzNGYyNmIzNDZjZThjZjZjLi41MDdlMDQyYTU3N2ZmOGEwMjMzNzJjM2E2
MDdhYjEwOGE1ZmE5Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21vZGVsLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKQEAg
LTI4LDYgKzI4LDggQEAgQlVJTFRJTl9BVFRSSUJVVEUgPSAiQnVpbHRpbiIKIEFTWU5DX0FUVFJJ
QlVURSA9ICJBc3luYyIKIE1BSU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUgPSAiTWFpblRocmVh
ZENhbGxiYWNrIgogU1lOQ0hST05PVVNfQVRUUklCVVRFID0gJ1N5bmNocm9ub3VzJworU1RSRUFN
X0FUVFJJQlVURSA9ICJTdHJlYW0iCitXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSA9ICdXYW50
c0Nvbm5lY3Rpb24nCiAKIGNsYXNzIE1lc3NhZ2VSZWNlaXZlcihvYmplY3QpOgogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBuYW1lLCBzdXBlcmNsYXNzLCBhdHRyaWJ1dGVzLCBtZXNzYWdlcywgY29u
ZGl0aW9uKToKQEAgLTczLDcgKzc1LDkgQEAgaXBjX3JlY2VpdmVyID0gTWVzc2FnZVJlY2VpdmVy
KG5hbWU9IklQQyIsIHN1cGVyY2xhc3M9Tm9uZSwgYXR0cmlidXRlcz1bQlVJTFRJTl8KICAgICBN
ZXNzYWdlKCdXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZycsIFtdLCBbXSwgYXR0cmlidXRl
cz1bQlVJTFRJTl9BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1O
b25lKSwKICAgICBNZXNzYWdlKCdTeW5jTWVzc2FnZVJlcGx5JywgW10sIFtdLCBhdHRyaWJ1dGVz
PVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdJbml0
aWFsaXplQ29ubmVjdGlvbicsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVd
LCBjb25kaXRpb249IlBMQVRGT1JNKENPQ09BKSIpLAotICAgIE1lc3NhZ2UoJ0xlZ2FjeVNlc3Np
b25TdGF0ZScsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRp
b249Tm9uZSkKKyAgICBNZXNzYWdlKCdMZWdhY3lTZXNzaW9uU3RhdGUnLCBbXSwgW10sIGF0dHJp
YnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2Uo
J1NldFN0cmVhbURlc3RpbmF0aW9uSUQnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRU
UklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2UoJ1Byb2Nlc3NPdXRPZlN0cmVh
bU1lc3NhZ2UnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0
aW9uPU5vbmUpCiBdLCBjb25kaXRpb249Tm9uZSkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9NYWtlZmlsZQppbmRleCAyMWIzMGFlMjBmYTEwMzNmYTY2NGUwM2FkYmQ4
ODA4NmE2YzcyYzQyLi5lMTk3YmQzYzI2N2FlNDExYTQ1MDBkMGZmNjkzOTg2MDNhNDUwODA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKQEAgLTYsNiAr
Niw4IEBAIFRFU1RTID0gXAogICAgIFRlc3RXaXRoSWZNZXNzYWdlIFwKICAgICBUZXN0V2l0aFNl
bWFwaG9yZSBcCiAgICAgVGVzdFdpdGhJbWFnZURhdGEgXAorCVRlc3RXaXRoU3RyZWFtIFwKKwlU
ZXN0V2l0aFN0cmVhbUJ1ZmZlciBcCiAjCiAKIGFsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcAppbmRleCA3ZDVhZmM5MThlNWIw
NWI4ZjdhNWNkNjIzODUyYjVjMGUwYzE4YTAzLi4yZTdjYTE1ZTc0ZWJiZGE4NmM3OWY4ZmMwYjhm
MzhiNGI1Zjc1ODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL01lc3NhZ2VOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCkBAIC0xMzQsNiArMTM0LDEwIEBAIGNvbnN0IGNoYXIqIGRl
c2NyaXB0aW9uKE1lc3NhZ2VOYW1lIG5hbWUpCiAgICAgICAgIHJldHVybiAiSW5pdGlhbGl6ZUNv
bm5lY3Rpb24iOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZToKICAg
ICAgICAgcmV0dXJuICJMZWdhY3lTZXNzaW9uU3RhdGUiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6
OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2U6CisgICAgICAgIHJldHVybiAiUHJvY2Vzc091dE9m
U3RyZWFtTWVzc2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRp
b25JRDoKKyAgICAgICAgcmV0dXJuICJTZXRTdHJlYW1EZXN0aW5hdGlvbklEIjsKICAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OgogICAgICAgICByZXR1cm4gIlN5bmNNZXNz
YWdlUmVwbHkiOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0
QXN5bmNNZXNzYWdlUmVwbHk6CkBAIC0yMjQsNiArMjI4LDggQEAgUmVjZWl2ZXJOYW1lIHJlY2Vp
dmVyTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICAgICAgcmV0dXJuIFJlY2VpdmVy
TmFtZTo6VGVzdFdpdGhvdXRBdHRyaWJ1dGVzOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRp
YWxpemVDb25uZWN0aW9uOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0
ZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlOgorICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQ6CiAgICAgY2FzZSBNZXNz
YWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseToKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6
SVBDOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNN
ZXNzYWdlUmVwbHk6CkBAIC00MDEsNiArNDA3LDEwIEBAIGJvb2wgaXNWYWxpZE1lc3NhZ2VOYW1l
KE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogI2VuZGlmCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09
IElQQzo6TWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRP
ZlN0cmVhbU1lc3NhZ2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFt
ZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklEKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6U3lu
Y01lc3NhZ2VSZXBseSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVz
c2FnZU5hbWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VO
YW1lcy5oCmluZGV4IGVmZWEyMzAyZDY4N2JlNGY1MjI2OTBmNzhhM2M2NGY2MzZlMzFmZDguLmEy
MmJkMWNmZDdmNzNiZTllYWIxY2JiYzBmZjBjNmVmMDZhMDY0MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaApAQCAtOTMsNiArOTMs
OCBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3QgewogICAgICwgVGVzdFdpdGhv
dXRBdHRyaWJ1dGVzX1RvdWNoRXZlbnQKICAgICAsIEluaXRpYWxpemVDb25uZWN0aW9uCiAgICAg
LCBMZWdhY3lTZXNzaW9uU3RhdGUKKyAgICAsIFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UKKyAg
ICAsIFNldFN0cmVhbURlc3RpbmF0aW9uSUQKICAgICAsIFN5bmNNZXNzYWdlUmVwbHkKICAgICAs
IFRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHkKICAgICAsIFRlc3RXaXRo
U3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb25SZXBseQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJl
YW0ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQwZjUyOGM2OWNkZWZkZGE5YzQ4Njc5MTM4YzYz
OGI4YWMwY2IzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRlc3RzIFN0cmVhbSByZWNl
aXZlciBhdHRyaWJ1dGUuCittZXNzYWdlcyAtPiBUZXN0V2l0aFN0cmVhbSBOb3RSZWZDb3VudGVk
IFN0cmVhbSB7CisgICAgdm9pZCBTZW5kU3RyaW5nKFN0cmluZyB1cmwpCisgICAgdm9pZCBTZW5k
U3RyaW5nU3luY2hyb25pemVkKFN0cmluZyB1cmwpIC0+IChpbnQ2NF90IHJldHVybikKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJl
YW1CdWZmZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3Rz
L1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExNzBhYzg5YTI1
ZjAzOTIxOWZlNDE4MTA1YjJjMWQwNGFlMGM3ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2Vz
LmluCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworIyBUZXN0cyBTdHJlYW0gcmVjZWl2ZXIgYXR0cmlidXRlLgorbWVzc2FnZXMgLT4gVGVz
dFdpdGhTdHJlYW1CdWZmZXIgIHsKKyAgICB2b2lkIFNlbmRTdHJlYW1CdWZmZXIoSVBDOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1
ZmZlck1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzljOTI0MGE0ZWIxYWI1NTc0MDk2
MDIyOTFkYzEyNzMxOTg3ZjA1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
CkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
ICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXIuaCIKKworI2luY2x1ZGUgIkRlY29kZXIu
aCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgVGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVy
OjpTZW5kU3RyZWFtQnVmZmVyOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdl
PE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcj4oZGVjb2Rl
ciwgdGhpcywgJlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpzZW5kU3RyZWFtQnVmZmVyKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5V
U0VEX1BBUkFNKGRlY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmEyNGViZGQyMDBmMzM5MDQ3N2RmYWY3Y2Q4NTcxOTFiZDUzYjI4NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJl
YW1CdWZmZXJNZXNzYWdlcy5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRo
U3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIElQQyB7
CitjbGFzcyBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOworfQorCituYW1lc3BhY2UgTWVzc2FnZXMg
eworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyIHsKKworc3RhdGljIGlubGluZSBJUEM6
OlJlY2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpS
ZWNlaXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOworfQorCitjbGFzcyBTZW5kU3RyZWFt
QnVmZmVyIHsKK3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0
IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2Fn
ZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVm
ZmVyX1NlbmRTdHJlYW1CdWZmZXI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRTdHJlYW1CdWZmZXIoY29uc3QgSVBDOjpTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiBzdHJlYW0pCisgICAgICAgIDogbV9hcmd1bWVudHMoc3RyZWFtKQor
ICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAg
IEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3Ry
ZWFtQnVmZmVyCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVw
bGllcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVh
bUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZmEyYWQ3ZDUwNjMwMGYzY2Ni
MzkwZjE5NzI1OWQ5MGU2OTNmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgK
QEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1l
c3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyIHsKKworCit9
IC8vIG5hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbUJ1ZmZlcgorfSAvLyBuYW1lc3BhY2UgTWVzc2Fn
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM5
ODg1NWFkNTZlOTUxOTk3YzlkMmFiM2Y4ODgwOTRjODg5MjMyNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdl
UmVjZWl2ZXIuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW0uaCIKKworI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1l
c3NhZ2UuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFRlc3RX
aXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYg
KGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRT
dHJpbmc6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRl
c3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06
OnNlbmRTdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hy
b25pemVkOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpU
ZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9uaXplZD4oZGVjb2RlciwgdGhpcywgJlRl
c3RXaXRoU3RyZWFtOjpzZW5kU3RyaW5nU3luY2hyb25pemVkKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW1NZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBiZmViYWIyMzcyYzFmNjYw
NWM1NTg5NDU5MzhiZjFlNGU3YWFmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oCkBAIC0wLDAgKzEs
ODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICog
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VO
YW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworCituYW1lc3BhY2UgTWVzc2Fn
ZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJl
Y2VpdmVyTmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNl
aXZlck5hbWU6OlRlc3RXaXRoU3RyZWFtOworfQorCitjbGFzcyBTZW5kU3RyaW5nIHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OworCisg
ICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5h
bWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmc7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c1N5bmMgPSBmYWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB1
cmwpCisgICAgICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25z
dCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9h
cmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsK
K307CisKK2NsYXNzIFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQgeworcHVibGljOgorICAgIHVzaW5n
IEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CisKKyAgICBzdGF0aWMgSVBD
OjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhT
dHJlYW1fU2VuZFN0cmluZ1N5bmNocm9uaXplZDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlz
U3luYyA9IHRydWU7CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8aW50NjRfdCY+Owor
ICAgIHVzaW5nIFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxpbnQ2NF90PjsKKyAgICBleHBs
aWNpdCBTZW5kU3RyaW5nU3luY2hyb25pemVkKGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6
IG1fYXJndW1lbnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBh
cmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2l0aFN0cmVhbQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNz
YWdlc1JlcGxpZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdp
dGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmM1YTA3OGRlMDFlYzE0MzBm
ODk0ZjIwY2I5YzJmOTE1NWU3Y2FiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oCkBAIC0w
LDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNl
IE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbSB7CisKKworfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdpdGhTdHJlYW0KK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCBmOWJhNWRjNzgyNGIxZTViMDNlNTNmOThiN2E3ZjhlNGRlZjIxYzY0Li40NTg5MjZmMjViZDZk
NTE2MmE3NTljZTBjNzNmOGVhMWViMTdkNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE1MCw2ICsxNTAs
MTAgQEAgUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAgQG5vLXVuaWZ5CiBQbGF0
Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZS5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5jcHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAg
QG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgQG5v
LXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5
CiBQbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkKIAogUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggYzMzMDc4MjVi
MjAwODZkZWQ0Yzg2YzY0ODhjZTVkZDU3ZWMwYzM1OC4uODk1MjA4YzNiYzIyNmQ2ZmIxMjg2MWRh
NDM3Y2RhMzgxZjQ4ZDYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9u
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCAzMDFkMGVkODMw
ZGJlZDkwOGNiYjI3ODg2ZjA0YThmZWVhOWZkODllLi4yM2FiMTBkNjNhNGY0YTNmZDIwY2VkNGQ3
MzAxNzNmNDc1ZGM3ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJV2Vic2l0
ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkZv
cm1EYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1l
VGFza1BhcmFtZXRlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5oCmluZGV4IDdhMzhkZTU1NjhjZDQ3ODc5NWNlYTU2YzMxMjI2MjBkNDVjNjU3
M2MuLmZkNTFlNWI5YjEyOGMyNzhmMTU2OWE3NThiODYwOTAzYTA2ZDM5NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMjUsNiArMjUs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5j
bHVkZSAiUG9saWN5RGVjaXNpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZkODMyY2RhODhiMWI3ZTM4YjVhZTkzZjRlNDgxM2I0
MTljZWU2NDcuLjVmNzJjZTJhMThjZjM4YmNhYzIyMmMwMDI4YjRlMjc3ZTFjMjUzYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMz
NSw2ICsxMzM1LDE2IEBACiAJCTdCNDgzRjIwMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVj
ZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjQ4M0YxQzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9
OwogCQk3QjQ4M0YyMTI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0Yx
RDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi87IH07CiAJ
CTdCNDgzRjIyMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUUyNUNEREE5
QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi87IH07CisJCTdCNzMxMjNBMjVD
Qzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYg
LyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovOyB9OworCQk3QjczMTIzQjI1Q0M4NTI1MDAz
QjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi87IH07CisJCTdCNzMxMjNDMjVDQzg1MjUw
MDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMzI1Q0M4NTIzMDAzQjI3OTYgLyogU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9OworCQk3QjczMTIzRDI1Q0M4NTI1MDAzQjI3OTYg
LyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlci5jcHAgKi87IH07CisJCTdCNzMxMjNFMjVDQzg1MjUwMDNCMjc5NiAvKiBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNTI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5oICovOyB9OworCQk3QjczMTIzRjI1Q0M4NTI1MDAzQjI3OTYgLyogU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5jcHAgKi87IH07CisJCTdCNzMxMjQwMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCNzMxMjM3MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0
aW9uLmNwcCAqLzsgfTsKKwkJN0I3MzEyNDEyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgg
Ki87IH07CisJCTdCNzMxMjQyMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5j
b2Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3
MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi87IH07
CisJCTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QkFCMTEwRjI1REQwMkIyMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZS5oICovOyB9OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBX
S1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdD
MUJBMzNFMUE0QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkg
LyogQVBJRGljdGlvbmFyeS5oICovOyB9OwpAQCAtNDU0NCw2ICs0NTU0LDE1IEBACiAJCTdCNDgz
RjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYg
LyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIz
MjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzMyNUNDODUyMzAwM0Iy
Nzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzUyNUND
ODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0I3MzEyMzcyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtU2VydmVyQ29ubmVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM4MjVDQzg1MjQw
MDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25F
bmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY1MjU0QUZE
RUEwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY3MjU0QUZFMTcw
MDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00NTUxLDYgKzQ1NzAsNyBAQAogCQk3QjkwNDE2OTI1NEFGRUE3MDA2
RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjkwNDE2QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEFjdGl2
ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JF
NzI2NTcyNTc0RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5j
dGlvbnNHZW5lcmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCRTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBD
MkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTg1LDEwICs3MDA1LDIw
IEBACiAJCQkJMUEzRUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5o
ICovLAogCQkJCTFBQUIwMzc3MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmNwcCAq
LywKIAkJCQkxQUFCMDM3ODE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oICovLAor
CQkJCTdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlLmggKi8sCiAJCQkJMkRDMTgwMDFEOTBEREQxNUZDNjk5MUE5IC8qIFNoYXJlZEJ1ZmZl
ckNvcHkuY3BwICovLAogCQkJCTVDQzVEQjkxMjE0ODhFMTYwMDZDQjhBOCAvKiBTaGFyZWRCdWZm
ZXJDb3B5LmggKi8sCiAJCQkJMkRDMTg1NUVEQkZCODUwQkEwQjZEMDZEIC8qIFNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuY3BwICovLAogCQkJCTJEQzE4ODFBQ0JDQUI1RDU3QzVDNkVGMCAvKiBT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggKi8sCisJCQkJN0I3MzEyMzYyNUNDODUyNDAwM0Iy
Nzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwICovLAorCQkJCTdCNzMxMjMzMjVDQzg1
MjMwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggKi8sCisJCQkJN0I3MzEyMzQy
NUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwICovLAorCQkJCTdC
NzMxMjMxMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8sCisJ
CQkJN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgg
Ki8sCisJCQkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUuY3BwICovLAorCQkJCTdCNzMxMjM1MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlLmggKi8sCisJCQkJN0I3MzEyMzcyNUNDODUyNDAwM0IyNzk2IC8qIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5
NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi8sCiAJCQkJMUFFMDBENjkxODMyN0MxMjAw
MDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFFMDBENkExODMyN0MxMjAw
MDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oICovLAogCQkJKTsKQEAgLTEyMDExLDYgKzEyMDQx
LDcgQEAKIAkJCQlCQzJEMDIxNzEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdh
dGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUI0QThEMTI5NkYwQTIwMDIzOTUyRiAv
KiBTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUU1NTJDNTE2QUUwNjVG
MDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0JBQjExMTAyNUREMDJCMzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU0RDA0MjFGMUQ3MkQwMDdFM0Mz
NiAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzFDMUMxOEM1NzEx
OTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTIwNjAsNiArMTIwOTEsMTEgQEAKIAkJCQk5MzZCMDU5ODIzMDM5MDk3
MDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNjhF
RURGMjMwM0E5RUQwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0NjVGNEUwNjIzMEIyRTk1MDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5
NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIz
QTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0I3MzEyNDIyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNv
ZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIzRTI1Q0M4NTI1MDAzQjI3OTYgLyogU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyNDEyNUND
ODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRTAwRDZDMTgzMjdDMTIwMDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTI5NkJEODVEMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3RkQzMTg2MjJCMzUxNkMwMDhEMEU4QiAvKiBTdWJGcmFt
ZVNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTM4ODYsNiArMTM5
MjIsMTAgQEAKIAkJCQk5M0Q2Qjc4MjI1NENDQ0Y0MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzMzRERUQx
NkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTkzNjhFRURFMjMwM0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdl
clNldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIzRjI1Q0M4
NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk3QjczMTIzRDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIzQjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTI0MDI1Q0M4
NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDkyQTc4MzIxMkI2QTcxMDBGNDkzRkQgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJEMTFCNzUxMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNl
MS1tbS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUyMjEyNkEyODIwMDZGODg3OCAvKiBV
bmlmaWVkU291cmNlMS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuY3BwCmluZGV4IGMwNTI5MjFlMDE3ZThjM2M2MjE0ODRlMTM5N2I4M2Iz
ZmJmZmQxYjAuLmY4OWVmYzQyNjAyY2E0YTc0M2U0MjZiNjdjYjhhNGI5MTI4NzQwMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtNDksMTMgKzQ5LDE2
IEBAIFJlZlB0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwogfQog
CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjE7CisK
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyIHJlbmRlcmluZ0JhY2tlbmQpCiAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5QmFzZShhdHRyaWJ1dGVzKQogICAgICwgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24pCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpLCBkZWZhdWx0U3RyZWFtU2l6ZSkKIHsKICAgICBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0gICAgY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBo
aWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBy
ZW5kZXJpbmdCYWNrZW5kKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVu
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRy
aWJ1dGVzLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCwg
bV9zdHJlYW1Db25uZWN0aW9uLnN0cmVhbUJ1ZmZlcigpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpE
aXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCkBA
IC0xODQsNyArMTg3LDcgQEAgR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Z2V0RXJyb3IoKQogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZXJyb3JXaGVuQ29udGV4dElz
TG9zdCwgTk9fRVJST1IpOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25z
LCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUmJiBz
ZW1hcGhvcmUsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3Rl
ZEV4dGVuc2lvbnMpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTkzLDYgKzE5Niw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2YWlsYWJsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgQVNTRVJUKCFtX2RpZEluaXRpYWxpemUpOworICAgIG1fc3RyZWFt
Q29ubmVjdGlvbi5zZXRXYWtlVXBTZW1hcGhvcmUoV1RGTW92ZShzZW1hcGhvcmUpKTsKICAgICBt
X2RpZEluaXRpYWxpemUgPSB0cnVlOwogICAgIGluaXRpYWxpemUoYXZhaWxhYmxlRXh0ZW5zaW9u
cywgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCmluZGV4IDVjZTU3Njc2YjA5MDVhNjU3NDA0MmE5ZjU0MzhhNDcxZmI3ZWY5OTAu
LjMzMmI0NDA1ZmI2Yzc0MGIzZWQ0ZGJhNTg1Y2JhZDIxYjY0MDVhMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBAIC0yOSwxMSArMjksMTIgQEAKIAogI2luY2x1
ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oPgpAQCAtMzM1LDE5
ICszMzYsMTggQEAgcHJvdGVjdGVkOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKICAgICB7Ci0gICAgICAgIGNv
bm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLnRvVUludDY0KCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl
dHVybiBtX3N0cmVhbUNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKICAgICB9CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9u
OjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkm
JiByZXBseSkKICAgICB7Ci0gICAgICAgIHJldHVybiBjb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLnRvVUludDY0KCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIHJldHVybiBtX3N0
cmVhbUNvbm5lY3Rpb24uc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwogICAg
IH0KICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2dw
dVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCk7IH0KIAogcHJpdmF0ZToKICAgICAvLyBN
ZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIHdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNj
ZWVkLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRl
bnNpb25zKTsKKyAgICB2b2lkIHdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFw
aG9yZSYmLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRF
eHRlbnNpb25zKTsKICAgICB2b2lkIHdhc0xvc3QoKTsKICAgICB2b2lkIHdhc0NoYW5nZWQoKTsK
IApAQCAtMzYxLDggKzM2MSw4IEBAIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24q
IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgYm9vbCBtX2RpZEluaXRpYWxpemUgeyBmYWxz
ZSB9OwogICAgIEdDR0xlbnVtIG1fZXJyb3JXaGVuQ29udGV4dElzTG9zdCA9IE5PX0VSUk9SOwot
CiAgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIHsgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAg
SVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uIG1fc3RyZWFtQ29ubmVjdGlvbjsKIH07CiAKIC8v
IFRoZSBHQ0dMIHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxp
c3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhN2M2NDEy
YWM5NDZlMjU4Y2UwMTM4YmM0N2JjMzg2MjE5NTAyMWQ3Li5mNDNlYzBhMmVhYTM4NGU0ZWRlOGRk
NDQwZDllZmUwMjhhY2I3YmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgdm9pZCBXYXNDcmVhdGVkKGJvb2wg
ZGlkU3VjY2VlZCwgU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0YWJs
ZUV4dGVuc2lvbnMpCisgICAgdm9pZCBXYXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpT
ZW1hcGhvcmUgc3RyZWFtV2FrZVVwU2VtYXBob3JlLCBTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9u
cywgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKICAgICB2b2lkIFdhc0xvc3QoKQogICAg
IHZvaWQgV2FzQ2hhbmdlZCgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIuaAppbmRleCA3YWFkN2RhMjA3MGRlODNkMTRjNzFkZDk4MjQ3NGFhZjEwNmE3ZGI1Li5m
MTM0MWRjZDI3NmQwYzEwMWU0NGJkZGExN2NlNDBiOGEzY2IzNjE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVz
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNw
ZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oCmluZGV4IGJi
ZTdmYzI2Y2YzMjM0NjY5NWU2MWZkMDFkNmEwYjIzMmRlMGQxODguLmE2MTFkYWJmNGViYjU2ZTdh
NDI1OTRkZDdiZDNiYjBjODFhNWM4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5j
bHVkZSAiTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYk1ETlNSZWdpc3Rl
ci5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDc0ZTZlN2Y5NWNiYWQ0ODYwYzUxMWZjZjQ3ZDI4NjZjYjk3ODA5NDYuLjhlMGM1NDlkNzBhOTUw
NDM4ZmRiNTc4YmFhZTU5NGU4MWEwYzg1ZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wMi0wNSAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIEdQVSBwcm9j
ZXNzIElQQyBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIGFzeW5jaHJvbm91cyBtZXNzYWdl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NjQx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM0MDY1MT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBHZW9mZiBHYXJlbi4KKworICAgICAgICBNYXJrIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG1l
c3NhZ2UgcmVjZWl2ZXIgYXMgIlN0cmVhbSIsCisgICAgICAgIGEgbmV3IHZhcmlhbnQgb2YgcmVj
ZWl2ZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIwMjEt
MDItMTkgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBQQ006
IFJlcXVlc3Qgc2VydmVyIHB1YmxpYyBrZXkgdG8gZ2VuZXJhdGUgc2VjcmV0IHRva2VuCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRz
L2dlbmVyYXRlLWdwdXAtd2ViZ2wKaW5kZXggZmU4ZmE5YWU1MTc0MGJkYTYzZjUxNTNmZGE4ZjE2
ZDdlNjJiNWZiZi4uMGZhZjJjZGZhMDlmNDc3YmZjZDVlNDIxNjgxOGMwY2VkOTVkZWMyNSAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbApAQCAtODksNyArODksNyBAQCBjb250ZXh0X21lc3Nh
Z2VzX3RlbXBsYXRlID0gKAogICAgIHRlbXBsYXRlX3ByZWFtYmxlCiAgICAgKyAiIiIjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQge3sKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBSZXNoYXBlKGlu
dDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZv
aWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBT
eW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGUwNzI0MmM0M2RmNWY3ODI2MDgzYWVhOWE0YmFiNTFiNWI1Nzdl
MTEuLjU0ZjAzMTRjZDc2MjQzNTljYmY3ZGVkZDc1YzE5ZmIxZjcxYmNiMjQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wMi0xNyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYkdMIEdQVSBwcm9jZXNzIElQQyBzaG91bGQgdXNlIHNoYXJlZCBt
ZW1vcnkgZm9yIGFzeW5jaHJvbm91cyBtZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
MjM0MDY1MT4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBN
YXJrIGZldyB0ZXN0cyBhcyBub3QgdGltaW5nIG91dCBub3cgdGhhdCB0aGUgaW1wbGVtZW50YXRp
b24gaXMgbm90IHNvIHNsb3cuCisKKyAgICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRp
b25zOgorCiAyMDIxLTAyLTE5ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUENNOiBSZXF1ZXN0IHNlcnZlciBwdWJsaWMga2V5IHRvIGdlbmVyYXRlIHNlY3Jl
dCB0b2tlbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0
aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWU3
N2UyYmQ0YTk5NjU3ZDllMDk4ZWI1MDllMjAzYTkxZWIyNmYzNC4uMWEyZWVhOGQ0NjhlZTAyM2I5
YjQ3Y2Q4YTFiMWI0NDUwYmU2MjY5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nl
c3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0zMCw3ICszMCw3IEBAIGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQt
bXNlLWZsaXBZLXRydWUuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9jYW52YXMvd2ViZ2wvdGV4SW1h
Z2UyRC12aWRlby1mbGlwWS1mYWxzZS5odG1sIFsgVGltZW91dCBdCiBmYXN0L2NhbnZhcy93ZWJn
bC90ZXhJbWFnZTJELXZpZGVvLWZsaXBZLXRydWUuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9jYW52
YXMvd2ViZ2wvdGV4dHVyZS1hY3RpdmUtYmluZC5odG1sIFsgRmFpbHVyZSBdCi1mYXN0L2NhbnZh
cy93ZWJnbC91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFRpbWVvdXQgXQorZmFzdC9jYW52
YXMvd2ViZ2wvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBTbG93IF0KIGZhc3QvY2FudmFz
L3dlYmdsL3dlYmdsY29udGV4dGNoYW5nZWRldmVudC5odG1sIFsgVGltZW91dCBdCiAKIGZhc3Qv
ZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC5odG1sIFsgRmFpbHVyZSBdCkBAIC0yMjAs
NyArMjIwLDYgQEAgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVy
ZS1mbG9hdC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZQogd2ViZ2wvMS4wLjMvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJl
IF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1m
bG9hdC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFp
bHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxz
Lmh0bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3N0YXRlL2dsLW9iamVj
dC1nZXQtY2FsbHMuaHRtbCBbIFRpbWVvdXQgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMtcmdiNTY1Lmh0bWwg
WyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleC1pbWFnZS1h
bmQtc3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXJnYmE0NDQ0Lmh0bWwgWyBGYWlsdXJlIF0KQEAg
LTIzNCwxMyArMjMzLDEyIEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleC1p
bWFnZS13ZWJnbC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0
dXJlcy90ZXhwYXJhbWV0ZXItdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25m
b3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLWFjdGl2ZS1iaW5kLTIuaHRtbCBbIEZhaWx1cmUgXQog
d2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1hY3RpdmUtYmluZC5odG1s
IFsgRmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXNh
bXBsZXJzLXRlc3QuaHRtbCBbIFRpbWVvdXQgXQord2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdW5p
Zm9ybXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBTbG93IF0KIHdlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1jYW52YXMuaHRtbCBb
IEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVy
ZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1h
bmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLWNhbnZhcy5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJl
LWhhbGYtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25m
b3JtYW5jZS9yZWFkaW5nL3JlYWQtcGl4ZWxzLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQotd2ViZ2wv
Mi4wLjAvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJhdy1jYWxscy5odG1sIFsgVGltZW91
dCBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0
bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90
ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4w
L2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9zaG9y
dF81XzZfNS5odG1sIFsgRmFpbHVyZSBdCkBAIC0yNjAsNyArMjU4LDcgQEAgd2ViZ2wvMi4wLjAv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRf
NV82XzUuaHRtbAogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvdmlkZW8vdGV4LTJk
LXJnYmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRf
NF80XzRfNC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJl
cy92aWRlby90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBbIEZh
aWx1cmUgXQotd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVy
cy10ZXN0Lmh0bWwgWyBUaW1lb3V0IF0KK3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3VuaWZvcm1z
L3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgU2xvdyBdCiB3ZWJnbC8yLjAuMC9jb25mb3Jt
YW5jZTIvcmVhZGluZy9yZWFkLXBpeGVscy1wYWNrLXBhcmFtZXRlcnMuaHRtbCBbIEZhaWx1cmUg
XQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRt
bCBbIFRpbWVvdXQgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90
ZXgtMmQtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwgWyBGYWlsdXJlIF0K
</data>
<flag name="commit-queue"
          id="439676"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420959</attachid>
            <date>2021-02-19 06:01:59 -0800</date>
            <delta_ts>2021-02-19 22:22:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210219160157.patch</filename>
            <type>text/plain</type>
            <size>168311</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdjMDJiMWVhMmViNDRlNzE5
ZDgyNGY0ODU0Y2YwZDhiNjBiMzNmYWEuLjBkMzJmZTUzMzVhNjgzNmE0MzRiZTNiNWM1NGEzNTNh
MjUzODM4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNzYWdl
IGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFuZCBi
dWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2FnZXMK
KyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRoZW4g
cGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBpbXBs
ZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBzZW1p
LWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci4g
VGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJlYW0g
Y29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1lc3Nh
Z2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJvdWdo
IG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAgICAg
ICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZlciBh
bmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVjdGlv
bi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3ltbWV0
cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2VzIGFu
ZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJlY2Vp
dmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNlaXZl
ZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAgcHJv
Y2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVudGx5
IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hyb25v
dXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQgdGhy
b3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhhdmlu
ZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAgIGlu
IHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0IGlu
IGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBvbmUg
Mm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJlIHdp
bGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24KKyAg
ICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFyIHRo
cmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJvcHRp
bWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAgcHJv
Y2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2UgdG8g
aGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGljaXBh
dGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8gc2Ft
ZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1pemF0
aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFzIHBh
cnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAgIElu
IEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sgcXVl
dWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQgd2ls
bCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24gcGVy
IGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAgICBT
ZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRpb24g
d2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYgdGhl
IG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUgaXQg
dGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91dCBv
ZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9uIGFy
cml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAgICBt
ZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2lsbCBz
dG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxsIGNv
bnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4gcHJv
Y2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0cmVh
bSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1lc3Nh
Z2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMgc2Vu
ZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0gY29u
bmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9yZS4g
VGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlzIHdh
aXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6Cisg
ICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAgcG9p
bnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAgIC0g
V2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2ggfjYw
ZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAgICBO
byBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ojpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlVW5p
bml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4gdGhl
IHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0aW9u
cyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1ZXVl
SW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpz
ZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVldWVJ
bml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBt
dWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0aGUg
SVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmlsaXR5
IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xpZW50
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpE
ZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6Cisg
ICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNvbnN0
cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZmZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBD
OjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNwZWNp
ZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFyZSB1
bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRocm91
Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAgICAg
VGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBpcyBy
ZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2FzZSB3
aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRoZSBz
dHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAgICog
UGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBDOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAgICAg
ICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2FrZXVw
IHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNlbWFw
aG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24uIEFs
bCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2ZSB0
aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhleSBo
YXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5
bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVzdGlu
YXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246
OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2l6
ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1pdCBj
b25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0YSB0
aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVNZW1v
cnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3BlcmF0
b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6CisgICAg
ICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAgICAg
ICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAoSVBD
OjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0aGUg
Y29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZlci4K
KyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90aCB0
aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4KKyAg
ICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1cCwg
dGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFsbCB0
aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAiaG9s
ZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBvZiAi
YnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAgICAg
IGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRkZWQu
CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6
YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBjb250
YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAgICAg
Rm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBwcm9j
ZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUgb2Yg
dGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwgc2xl
ZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3aWxs
IHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdpbGwg
d2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKworICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0
UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6CisgICAg
ICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9mZnNl
dCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXplIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5j
UmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6
c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyk6
CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9jZXNz
U2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3Nh
Z2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUgbWVz
c2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRoZSBi
dWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRoYXQg
dGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1hbCBJ
UEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3NhZ2Ug
dW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6CisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdTdHJl
YW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFzCisg
ICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJlY2Vp
dmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxsIG1l
c3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1lc3Nh
Z2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAgICAg
IGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUgc3Ry
ZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJUEMg
bWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNzZWQu
CisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0aW9u
SUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJlYW0g
bWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAgICAg
IHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJlYW1E
ZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAgICAg
KElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1lKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhT
dHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVkLgor
ICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVh
bUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6
OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2FnZXM6
OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29uc3Qp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVz
c2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAg
ICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6CisgICAg
ICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAgICAg
ICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRzIGNv
bnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNo
cm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRT
dHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAoTWVz
c2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVudHMg
Y29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVz
c2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToKKyAg
ICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0IG9m
IHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9wZXJh
dG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6On5T
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZSk6
CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVsZCBz
aW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0xOSAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmVh
dGUgU1FMaXRlIHNrZWxldG9uIGltcGxlbWVudGF0aW9uIGZvciBQQ00gZnJhdWQgcHJldmVudGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCmluZGV4IGUxNjdlYzAyNjQ0MjA1Njk4N2JlOThlNTQ3OTZjNjMxNjU1OTYx
NjcuLmRhZjAzODE0NTM4OWQ0Njc2ODJkNGM5NGI2MDA4NTdkZDFlMzFhNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKQEAgLTMxNSw3ICszMTUsNyBAQCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eSYgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6aW1hZ2VEZWNvZGVyQVZGUHJveHkoKQogdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2VtYXBob3JlJiYgcmVzdW1lRGlzcGxheUxp
c3RTZW1hcGhvcmUpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRNYXAuZW5zdXJlKGlkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+KFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmllciwgV1RGTW92ZShyZXN1bWVEaXNwbGF5TGlzdFNl
bWFwaG9yZSkpKTsKKyAgICAgICAgcmV0dXJuIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZSB7IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmll
ciwgV1RGTW92ZShyZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkpIH07CiAgICAgfSk7CiAgICAg
QVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KQEAgLTMy
NiwyNSArMzI2LDE2IEBAIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVsZWFzZVJl
bmRlcmluZ0JhY2tlbmQoUmVuZGVyaW5nQmFja2VuZElkZW50aWZpCiAgICAgQVNTRVJUX1VOVVNF
RChmb3VuZCwgZm91bmQpOwogfQogCi1HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kV3JhcHBlcjo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIoUmVm
PFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+JiYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCkKLSAgICA6
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChXVEZNb3ZlKHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQp
KQotewotfQotCi1HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kV3JhcHBlcjo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyKCkKLXsKLSAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQtPmRpc2Nvbm5lY3QoKTsKLX0KLQogI2lmIEVOQUJMRShXRUJH
TCkKLXZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKQordm9pZCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYmIHN0cmVhbSkKIHsKLSAgICBhdXRvKiByZW5kZXJpbmdCYWNrZW5kID0gbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmdldChyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7
Ci0gICAgaWYgKCFyZW5kZXJpbmdCYWNrZW5kKQorICAgIGF1dG8gaXQgPSBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRNYXAuZmluZChyZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CisgICAgaWYg
KGl0ID09IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJu
OworICAgIGF1dG8qIHJlbmRlcmluZ0JhY2tlbmQgPSBpdC0+dmFsdWUuZ2V0KCk7CiAKICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAuZW5zdXJlKGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgWyZdKCkgewotICAgICAgICByZXR1cm4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmNyZWF0ZShhdHRyaWJ1dGVzLCAqdGhpcywgZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyLCByZW5kZXJpbmdCYWNrZW5kLT5nZXQoKSk7CisgICAgICAgIHJldHVybiBJ
UEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGF0dHJpYnV0ZXMpLCBncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsICpyZW5kZXJpbmdCYWNrZW5kLCBXVEZNb3ZlKHN0cmVhbSkpIH07CiAgICAg
fSk7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCmluZGV4IDVlODIwMzM1N2Y3ODFmZGMwNTNlMTVkY2M4ZmM4ZTE1OTYwNDRlNDYu
LjkyZDE4MjQ1NGUzODBkMTMyOWFlMWYyNDMzOWQxZWJiMWZmMTFhODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU2Vzc2lvbklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVSZW1vdGVDb21tYW5kTGlzdGVuZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL0xpYldlYlJUQ0Vu
dW1UcmFpdHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vd1BsYXlpbmdNYW5hZ2VyLmg+CkBAIC0x
MzgsNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbGVhc2VSZW5kZXJpbmdCYWNrZW5k
KFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2
b2lkIGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsK
ICAgICB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOwogI2VuZGlmCiAKQEAgLTIwNiwyMCArMjA3LDEwIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2FsbG93c0Rpc3BsYXlDYXB0dXJlIHsgZmFsc2UgfTsKICNlbmRpZgogCi0gICAgY2xhc3Mg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXIgewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFw
cGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmKTsKLSAgICAgICAgflJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyKCk7Ci0gICAgICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIGdl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5nZXQoKTsgfQotICAg
IHByaXZhdGU6Ci0gICAgICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ7Ci0gICAgfTsKLQotICAgIHVzaW5nIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI+PjsKKyAgICB1c2luZyBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBD
OjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ+
PjsKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcDsKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdXNpbmcgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47CisgICAgdXNpbmcgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xNYXAgPSBIYXNoTWFwPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgSVBDOjpT
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj47
CiAgICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAgbV9yZW1vdGVHcmFwaGljc0NvbnRleHRH
TE1hcDsKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDJiNjhlM2IwODdhOTM1ZDE5ZWIxZDc5N2JiZTgzYWQ5ZDM4MDQ4
MDIuLmEzNDEyOWZkMWQzMDU3YzM4YzZjNGJjM2UyYTY4M2Y5ZDU2MDFjYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiw3IEBAIG1lc3NhZ2VzIC0+IEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgV2FudHNEaXNwYXRjaE1lc3NhZ2UgewogICAgIHZvaWQgQ3JlYXRl
UmVuZGVyaW5nQmFja2VuZChXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIGlkZW50
aWZpZXIsIElQQzo6U2VtYXBob3JlIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogICAgIHZv
aWQgUmVsZWFzZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRp
ZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAg
dm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV2ViS2l0OjpSZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKKyAgICB2b2lkIENyZWF0
ZUdyYXBoaWNzQ29udGV4dEdMKHN0cnVjdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIgc3RyZWFtKQogICAgIHZvaWQgUmVsZWFzZUdyYXBoaWNzQ29udGV4dEdMKFdlYktpdDo6R3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICNl
bmRpZgogICAgIHZvaWQgQ2xlYXJOb3dQbGF5aW5nSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
LmNwcAppbmRleCBlYTMxMTNiM2YxZDlkNDRiYTM4Yzg5ZjUwMzE1ODA3MmE5ZjU4ZjkwLi5iZmJl
NzI1NTMyNzJlMWJlZjZjNGM1OTRmYTZkZjc1ZjljMDJmYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5jcHAKQEAgLTMxLDU2ICszMSw4MCBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+Ci0KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisvLyBDdXJyZW50bHkgd2UgaGF2ZSBv
bmUgZ2xvYmFsIFdlYkdMIHByb2Nlc3NpbmcgaW5zdGFuY2UuCitzdGF0aWMgSVBDOjpTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlJiByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1
ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZT4gaW5zdGFuY2UoIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIHdvcmsgcXVldWUiKTsK
KyAgICByZXR1cm4gaW5zdGFuY2UuZ2V0KCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1z
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYpCitSZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVuZGVyaW5nQmFja2VuZCwg
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gaW5zdGFuY2UgPSBhZG9w
dFJlZigqbmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCwgV1RGTW92
ZShzdHJlYW0pKSk7CisgICAgaW5zdGFuY2UtPmluaXRpYWxpemUoV1RGTW92ZShhdHRyaWJ1dGVz
KSk7CisgICAgcmV0dXJuIGluc3RhbmNlOwogfQogI2VuZGlmCiAKLVJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IGNvbnRleHQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQm
IHJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKLSAg
ICAsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhtYWtlV2Vha1B0cihjb25uZWN0aW9uKSkK
LSAgICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGlkZW50aWZpZXIpCitSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYgcmVuZGVyaW5nQmFja2VuZCwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3Ry
ZWFtKQorICAgIDogbV9zdHJlYW1Db25uZWN0aW9uKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD46OmNyZWF0ZShncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNvbm5lY3Rpb24oKSwgV1RGTW92ZShzdHJlYW0pLCByZW1vdGVHcmFwaGljc0NvbnRleHRH
TFN0cmVhbVdvcmtRdWV1ZSgpKSkKKyAgICAsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
KGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikKICAgICAsIG1fcmVuZGVyaW5nQmFja2VuZCht
YWtlUmVmKHJlbmRlcmluZ0JhY2tlbmQpKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAg
ICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0
aGlzKTsKLSAgICBtX2NvbnRleHQtPmFkZENsaWVudCgqdGhpcyk7Ci0gICAgU3RyaW5nIGV4dGVu
c2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhHcmFwaGljc0NvbnRleHRHTDo6RVhURU5TSU9O
Uyk7Ci0gICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3Ry
aW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZCh0cnVl
LCBleHRlbnNpb25zLCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KIAogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpCiB7Ci0gICAgaWYg
KGF1dG8qIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuZ2V0KCkpCi0gICAgICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPm1lc3NhZ2VS
ZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgQVNTRVJUKCFtX3N0cmVhbUNvbm5lY3Rpb24pOwor
ICAgIEFTU0VSVCghbV9jb250ZXh0KTsKIH0KIAotR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25z
dAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogewotICAgIHJldHVybiBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuZ2V0KCk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAg
ICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpLmRpc3BhdGNoKFthdHRy
aWJ1dGVzID0gV1RGTW92ZShhdHRyaWJ1dGVzKSwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSgpIG11dGFibGUgeworICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVJbml0aWFs
aXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIH0pOworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi0+c3RhcnRSZWNlaXZpbmdNZXNzYWdlcygqdGhpcywgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpz
dG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4mJiByZWZGcm9t
Q29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIG1fc3Ry
ZWFtQ29ubmVjdGlvbi0+c3RvcFJlY2VpdmluZ01lc3NhZ2VzKE1lc3NhZ2VzOjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICByZW1vdGVHcmFwaGljc0NvbnRleHRHTFN0cmVh
bVdvcmtRdWV1ZSgpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShyZWZGcm9tQ29u
bmVjdGlvbildKCkgeworICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrUXVldWVVbmluaXRpYWxp
emUoKTsKKyAgICB9KTsKIH0KIAotSVBDOjpDb25uZWN0aW9uKiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAordm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6d29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRH
TEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAg
ICByZXR1cm4gJmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKTsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUoV1RGTW92ZShh
dHRyaWJ1dGVzKSk7CisgICAgaWYgKG1fY29udGV4dCkgeworICAgICAgICBtX2NvbnRleHQtPmFk
ZENsaWVudCgqdGhpcyk7CisgICAgICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5n
ZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOworICAgICAgICBTdHJpbmcg
cmVxdWVzdGFibGVFeHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoRXh0ZW5zaW9uc0dM
OjpSRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZCh0cnVlLCByZW1vdGVHcmFw
aGljc0NvbnRleHRHTFN0cmVhbVdvcmtRdWV1ZSgpLndha2VVcFNlbWFwaG9yZSgpLCBleHRlbnNp
b25zLCByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ3JlYXRlZChmYWxzZSwg
SVBDOjpTZW1hcGhvcmUgeyB9LCAiIiwgIiIpKTsKIH0KIAotdWludDY0X3QgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZVVuaW5pdGlhbGl6ZSgpCiB7Ci0gICAgcmV0
dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCk7CisgICAgbV9jb250
ZXh0ID0gbnVsbHB0cjsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24gPSBudWxscHRyOwogfQogCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpkaWRDb21wb3NpdGUoKQpAQCAtODksNyArMTEz
LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Zm9yY2VDb250ZXh0TG9zdCgpCiB7Ci0gICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzTG9zdCgpLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6V2FzTG9zdCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQoKQpAQCAtOTksNyArMTIzLDcgQEAgdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6cmVjeWNsZUNvbnRleHQoKQogCiB2b2lkIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZpY2F0aW9uKCkKIHsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDaGFuZ2Vk
KCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpXYXNDaGFuZ2VkKCkpOwogfQogCiB2b2lkIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpyZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBhYWE1NzQ5ZDBiYzU0NjQ2YjJjMWY4ZjRj
MzllNThiZGE5NjFlODRmLi5mOGY1YjczMzFhYWU4OTA1MGY5MDdhOTYwYmFiZmQyNTBkM2VkYzBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMjgsMTAgKzI4LDEwIEBACiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgot
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmgiCisjaW5jbHVkZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRXh0ZW5zaW9uc0dMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTQ5LDMy
ICs0OSwyOCBAQCBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
Y2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKLQogLy8gR1BVIHByb2Nlc3Mgc2lkZSBp
bXBsZW1lbnRhdGlvbiBvZiB0aGF0IHJlY2VpdmVzIG1lc3NhZ2VzIGFib3V0IEdyYXBoaWNzQ29u
dGV4dEdMIGNhbGxzCiAvLyBhbmQgaXNzdWVzIHJlYWwgR3JhcGhpY3NDb250ZXh0R0wgY2FsbHMg
YmFzZWQgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2VzLgogLy8gVGhlIGltcGxlbWVudGF0aW9uIGlz
IGxhcmdlbHkgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsLgotY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wKLSAgICA6IHB1YmxpYyBJUEM6
Ok1lc3NhZ2VTZW5kZXIKLSAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICAs
IHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCB7CitjbGFzcyBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTD4sIHByaXZhdGUgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OkNs
aWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQmKTsKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyYmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQmLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgflJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wTGlzdGVuaW5nRm9ySVBDKFJlZjxS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTD4mJiByZWZGcm9tQ29ubmVjdGlvbik7CiAKLSAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7
CisgICAgLy8gSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMPiB0ZW1wbGF0ZSBjb250cmFjdCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2b2lkIGRpZFJlY2Vp
dmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBJUEM6OkRl
Y29kZXImKTsKIAogcHJvdGVjdGVkOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTE9wZW5HTD4sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmKTsKLQotICAgIC8v
IElQQzo6TWVzc2FnZVNlbmRlciBvdmVycmlkZXMuCi0gICAgSVBDOjpDb25uZWN0aW9uKiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwotICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisgICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0woR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
ZmllciwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
ciYmKTsKKyAgICB2b2lkIGluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiYpOwogCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIgb3ZlcnJpZGVzLgotICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAg
ICB2b2lkIHdvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiYpOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVdvcmtRdWV1ZUluaXRpYWxpemUo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYpIHsgfTsKKyAgICB2b2lkIHdv
cmtRdWV1ZVVuaW5pdGlhbGl6ZSgpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgYm9v
bCBzZW5kKFQmJiBtZXNzYWdlKSBjb25zdCB7IHJldHVybiBtX3N0cmVhbUNvbm5lY3Rpb24tPmNv
bm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsgfQogCiAgICAgLy8gR3JhcGhpY3NDb250ZXh0R0w6OkNsaWVudCBvdmVycmlkZXMu
CiAgICAgdm9pZCBkaWRDb21wb3NpdGUoKSBmaW5hbDsKQEAgLTEwMCw4ICs5Niw4IEBAIHByb3Rl
Y3RlZDoKIAogICAgIHZvaWQgcGFpbnRJbWFnZURhdGFUb0ltYWdlQnVmZmVyKFJlZlB0cjxXZWJD
b3JlOjpJbWFnZURhdGE+JiYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIFJlZjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwotICAgIFdlYWtQdHI8R1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIFJlZlB0cjxJUEM6
OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+PiBtX3N0cmVh
bUNvbm5lY3Rpb247CisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
PiBtX2NvbnRleHQ7CiAgICAgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyOwogICAgIFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiBtX3Jl
bmRlcmluZ0JhY2tlbmQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2Vz
LmluCmluZGV4IGQxNTA5NTlhYWE1ZTU0YTNlYzUwYjc0YTIyMTk3MDg0YjAwZGE2ODkuLmY3ZDUy
OTAzNTQzNDQyYWJmM2JiMTQxOWUxYzlkNDI1MTk1YzJhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIC8vIFRoaXMgZmlsZSBp
cyBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbC4gRG8gbm90IGVkaXQuCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VCR0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgeworbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCBTdHJlYW0gewogICAgIHZvaWQgUmVzaGFwZShpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQgZGlzcGxheUJ1ZmZlcikgU3lu
Y2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcAppbmRleCA3OWU1MzA3
MWExMmMwODQyZWJhNzhiNTY4NGY2NTg1NTU4NzE2ZDlmLi5iZTU5ZTJmZTkwOTVmMTg5MzUyNGI1
NzRmNGNjMmE1ZDI1NjM2OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3Bw
CkBAIC0zOSwxMCArMzksMTEgQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYSBmaW5hbCA6IHB1YmxpYyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB7CiBw
dWJsaWM6Ci0gICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7Cisg
ICAgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiwg
SVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIH5SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTENvY29hKCkgZmluYWwgPSBkZWZhdWx0OwogCiAgICAgLy8gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgb3ZlcnJpZGVzLgorICAgIHZvaWQgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKSBmaW5hbDsKICAgICB2b2lkIHBy
ZXBhcmVGb3JEaXNwbGF5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV1RGOjpNYWNoU2VuZFJpZ2h0
JiYpPiYmKSBmaW5hbDsKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xJ
T1N1cmZhY2VTd2FwQ2hhaW4gbV9zd2FwQ2hhaW47CkBAIC01MCwxNiArNTEsMjMgQEAgcHJpdmF0
ZToKIAogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCYgcmVuZGVyaW5nQmFja2VuZCkKK1JlZjxSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTD4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBHcmFwaGljc0NvbnRleHRHTEF0dHJp
YnV0ZXMmJiBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW5kZXJpbmdCYWNr
ZW5kLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAgcmV0dXJu
IG1ha2VVbmlxdWU8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYT4oYXR0cmlidXRlcywgY29u
bmVjdGlvbiwgaWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCk7CisgICAgYXV0byBpbnN0YW5j
ZSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHJlbmRlcmluZ0Jh
Y2tlbmQsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3RhbmNlLT5pbml0aWFsaXplKFdURk1v
dmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYShjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW5kZXJpbmdCYWNrZW5kKQotICAg
IDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgY29ubmVjdGlvbiwgaWRlbnRp
ZmllciwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoYXR0cmli
dXRlcywgJm1fc3dhcENoYWluKSwgcmVuZGVyaW5nQmFja2VuZCkKK1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYgcmVuZGVyaW5nQmFja2VuZCwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3Ry
ZWFtKQorICAgIDogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0woZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCByZW5kZXJpbmdCYWNrZW5kLCBXVEZN
b3ZlKHN0cmVhbSkpCiB7CiB9CiAKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6
cGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0
cmlidXRlcyYmIGF0dHJpYnV0ZXMpCit7CisgICAgbV9jb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNyZWF0ZUZvckdQVVByb2Nlc3MoV1RGTW92ZShhdHRyaWJ1dGVzKSwgJm1fc3dh
cENoYWluKTsKK30KKwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpwcmVwYXJl
Rm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2NvbnRleHQtPnByZXBhcmVGb3JEaXNwbGF5
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggN2NkYzZlYmMzMDY0OGQwMDMxODQ0YmVi
MjVkYWM0OWJmNGY5ZTY2Mi4uNDRhYzgxMTk2ZjRjYjdiNGRiYTljYWZkMTU4NWE3MGQzZmIxMmE2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtODMsNyArODMsNyBAQCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjp+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpCiAgICAgbV93b3JrUXVldWUt
PmRpc3BhdGNoKFtyZW1vdGVSZXNvdXJjZUNhY2hlID0gV1RGTW92ZShtX3JlbW90ZVJlc291cmNl
Q2FjaGUpXSB7IH0pOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpc2Nvbm5l
Y3QoKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdG9wTGlzdGVuaW5nRm9ySVBDKCkK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApp
bmRleCBlMDU5NmJkZWUyNTI4NWU3Nzk3NDFiMmI2MTYyMmI2MGE3NjY3MzM5Li4wMjUxYjExMjE5
NTI5NWU2MjlmYWE4ZDQ4MjNiZTkwZjQxOTRmMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAg
LTY2LDYgKzY2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kPiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KTsKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kKCk7CisgICAgdm9pZCBzdG9w
TGlzdGVuaW5nRm9ySVBDKCk7CiAKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNv
dXJjZUNhY2hlKCkgeyByZXR1cm4gbV9yZW1vdGVSZXNvdXJjZUNhY2hlOyB9CiAKQEAgLTc4LDgg
Kzc5LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbik7CiAKLSAgICB2b2lkIGRpc2Nvbm5lY3Qo
KTsKLQogICAgIC8vIFJ1bnMgRnVuY3Rpb24gaW4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB0YXNr
IHF1ZXVlLgogICAgIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuaAppbmRleCBhOTFmOWJlMWZiOWI1OTgzNGQxYTkyZjYxMWRjYjQ2NmJiYmU3MWRkLi41
MmNjNWRhMTIxYTJmYjU5ZDhjZjA1OTNiNjg1MDlmZDY1NWMwY2RjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
aApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRl
ci5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4
IDQ5NzE3MWI1NjQyNjg5Mjg5NTIxMDZiZDdlZWE1NGJlZTkzYmVlMjMuLmIwY2Y3MGYwNmUxMThl
MDIxZDg2NGRlYjk4ZDQxNGVmYmE5ZTdjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUmVzb2x2ZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1JUQ01vbml0b3IuaCIKICNpbmNsdWRlICJSVENO
ZXR3b3JrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKaW5k
ZXggMzIwNzZhZmQwMmE4OThhMWUzOWRlMjgzZTEwMmI4NTk0N2Y4ZWRjNy4uNTMzNTBmOWY3Yzhj
MTJiZTYyNzU5OTljN2ViZmMzYzdlMDkxYmNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTc1LDYgKzc2
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPiBzdHJ1Y3QgQXJndW1l
bnRDb2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxU
LCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpY192PFQ+Pj4gewor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIFQgdmFsdWUpCiAgICAgewogICAgICAgICBlbmNvZGVyLmVuY29kZUZp
eGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBz
aXplb2YoVCksIGFsaWdub2YoVCkpOwpAQCAtOTEsNiArOTMsNyBAQCBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYXJpdGhtZXRpY192PFQ+
Pj4gewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW1fdjxUPj4+IHsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBUIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKFdURjo6aXNWYWxpZEVudW08VD4o
V1RGOjplbnVtVG9VbmRlcmx5aW5nVHlwZTxUPih2YWx1ZSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBiMGE0M2RlOWQ3YTEzNzIxNmEx
OWJmN2QwYmQ1ZTE5MTEzYjVkYTY4Li5hZWU4OWU2MjY5NmM1NjBmMGExOGJmYjFkNjc2OTE2NTBl
N2ZmMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKIAogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIApAQCAtMTExLDcgKzExMiw3IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IEFyZ3VtZW50Q29kZXI8Q1N0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDU3RyaW5n
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLQordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KIHZv
aWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gU3BlY2lhbCBjYXNlIHRoZSBudWxsIHN0cmluZy4K
QEAgLTEzMCw2ICsxMzEsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBlbHNlCiAgICAgICAg
IGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSksIGxlbmd0aCAqIHNpemVvZihVQ2hhciksIGFs
aWdub2YoVUNoYXIpKTsKIH0KK3RlbXBsYXRlCit2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6
ZW5jb2RlPEVuY29kZXI+KEVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKK3RlbXBsYXRlCit2b2lk
IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlPFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyPihT
dHJlYW1Db25uZWN0aW9uRW5jb2RlciYsIGNvbnN0IFN0cmluZyYpOwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8U3RyaW5nPiBkZWNv
ZGVTdHJpbmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0aCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCmluZGV4IDIwZWIxN2EwZmQ4MjYw
ZDQwYmVjN2ZjZGFhZWEyM2JjNWU4NjVlMDkuLmY4NTY5ODA3M2RkMDQ1YjI4MTZlMTYxMGNhNDk5
NmE1ZDRlZTZjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rl
cnMuaApAQCAtNTUsNiArNTUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgU2ltcGxl
QXJndW1lbnRDb2RlciB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD4+IHsKICAgICB1c2lu
ZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+OworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCiAgICAg
ewogICAgICAgICBpZiAoIUV4dGVudCkKQEAgLTc0LDYgKzc1LDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8
VCwgRXh0ZW4KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJy
YXlSZWZlcmVuY2U8VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50Pj4gewogICAgIHVzaW5n
IEFycmF5UmVmZXJlbmNlVHlwZSA9IEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHlu
YW1pY0V4dGVudD47CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBh
cnJheVJlZmVyZW5jZSkKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGFycmF5UmVmZXJlbmNlLnNpemUoKSk7CkBAIC0yNjYsNiArMjY4LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjpwYWly
PFQsIFU+PiB7CiAKIHRlbXBsYXRlPHNpemVfdCBpbmRleCwgdHlwZW5hbWUuLi4gRWxlbWVudHM+
CiBzdHJ1Y3QgVHVwbGVFbmNvZGVyIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBzdGQ6OnR1cGxl
PEVsZW1lbnRzLi4uPiYgdHVwbGUpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0
PHNpemVvZi4uLihFbGVtZW50cykgLSBpbmRleD4odHVwbGUpOwpAQCAtMjc1LDYgKzI3OCw3IEBA
IHN0cnVjdCBUdXBsZUVuY29kZXIgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBFbGVtZW50cz4K
IHN0cnVjdCBUdXBsZUVuY29kZXI8MCwgRWxlbWVudHMuLi4+IHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qgc3Rk
Ojp0dXBsZTxFbGVtZW50cy4uLj4mKQogICAgIHsKICAgICB9CkBAIC0zMzgsNiArMzQyLDcgQEAg
c3RydWN0IFR1cGxlRGVjb2RlcjwwPiB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBFbGVt
ZW50cz4gc3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjp0dXBsZTxFbGVtZW50cy4uLj4+IHsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBzdGQ6OnR1cGxlPEVsZW1lbnRzLi4uPiYgdHVwbGUpCiAgICAg
ewogICAgICAgICBUdXBsZUVuY29kZXI8c2l6ZW9mLi4uKEVsZW1lbnRzKSwgRWxlbWVudHMuLi4+
OjplbmNvZGUoZW5jb2RlciwgdHVwbGUpOwpAQCAtMzc0LDYgKzM3OSw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V1RGOjpLZXlWYWx1CiB0ZW1wbGF0ZTxib29sIGZpeGVkU2l6ZUVsZW1lbnRzLCB0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90
IG1pbkNhcGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2RlcjsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIs
IHNpemVfdCBtaW5DYXBhY2l0eT4gc3RydWN0IFZlY3RvckFyZ3VtZW50Q29kZXI8ZmFsc2UsIFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiB7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIs
IG1pbkNhcGFjaXR5PiYgdmVjdG9yKQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4odmVjdG9yLnNpemUoKSk7CkBAIC00MTEsNiArNDE3LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXIsIHNpemVfdCBtaW4KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxp
bmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+
IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyPHRydWUsIFQsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiYgdmVjdG9y
KQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odmVjdG9y
LnNpemUoKSk7CkBAIC03NTMsNiArNzYwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxDU3RyaW5nPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFN0
cmluZz4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBTdHJpbmcmKTsKICAgICBzdGF0aWMgT3B0aW9u
YWw8U3RyaW5nPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmNwcAppbmRleCA4Yjc0MzE0YWMwNGE1NWE0OGJkMDkzNjI5YzM2MjIwNzFlMGYy
YzUwLi4xZDJlYTQ4NWE5OThhZTI2NDQ2YTNhZTYwMGUwNGYzMGNhOGUxZDUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAorI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUZs
YWdzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCIKQEAgLTkzMCw4ICs5MzEs
MTMgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKERlY29kZXImIGRlY29k
ZXIpCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
TWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiB7Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKLQorICAgIGlmICghUnVuTG9vcDo6aXNNYWluKCkpIHsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1lc3NhZ2VOYW1l
XSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5pc1ZhbGlkKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9j
bGllbnQuZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKHByb3RlY3RlZFRoaXMsIG1lc3NhZ2VOYW1l
KTsKKyAgICAgICAgfSk7CisgICAgfQogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA0ODU1MjAx
MjQ3YzI1ZGY4NTUyYzVhNTRhMDQ2NzdiOGQ3MmI4MmNhLi5mZTljYTMxODYwNmZkZWRjNjFkMjFk
MDdkZjBmOGFiMWJmZTkzYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oCkBAIC0zMCwxMCArMzAsOSBAQAogCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUg
IkVuY29kZXIuaCIKLSNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVRdWV1ZU1hcC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1
ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KQEAgLTMxMiw2ICszMTEsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZv
aWQgZGlzcGF0Y2hNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKE1lc3NhZ2VSZWNlaXZlciYsIHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPiYmKTsKKyAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRo
cmVhZC4KKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VO
YW1lKTsKIHByaXZhdGU6CiAgICAgQ29ubmVjdGlvbihJZGVudGlmaWVyLCBib29sIGlzU2VydmVy
LCBDbGllbnQmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShJZGVudGlmaWVyKTsKQEAg
LTMzOSw3ICszNDAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVyPik7CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2UoRGVjb2RlciYp
OwogICAgIHZvaWQgZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJik7Ci0gICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSk7CiAgICAgdm9pZCBkaWRG
YWlsVG9TZW5kU3luY01lc3NhZ2UoKTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYW55IHRo
cmVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAKaW5kZXggODBhMGY3NWM3
MDU3MmJmNGMyNDg1MjZmZWQyZmVmYjA5N2NkYzhmOS4uNGRlMDUwOThjNDYzMmFkNDVmNGU4NTNm
NjdlOWVlM2U3NzEzNmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAK
QEAgLTkwLDYgKzkwLDE3IEBAIERlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyU2l6ZSwgQ29uc3RydWN0V2l0aG91dEhlYWRlCiAgICAgICAgIG1hcmtJ
bnZhbGlkKCk7CiB9CiAKK0RlY29kZXI6OkRlY29kZXIoY29uc3QgdWludDhfdCogc3RyZWFtLCBz
aXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKKyAgICA6IG1fYnVmZmVy
IHsgc3RyZWFtIH0KKyAgICAsIG1fYnVmZmVyUG9zIHsgbV9idWZmZXIgfQorICAgICwgbV9idWZm
ZXJFbmQgeyBtX2J1ZmZlciArIHN0cmVhbVNpemUgfQorICAgICwgbV9idWZmZXJEZWFsbG9jYXRv
cihbXSAoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9KQorICAgICwgbV9kZXN0aW5hdGlvbklE
KGRlc3RpbmF0aW9uSUQpCit7CisgICAgaWYgKCFkZWNvZGUobV9tZXNzYWdlTmFtZSkpCisgICAg
ICAgIHJldHVybjsKK30KKwogRGVjb2Rlcjo6fkRlY29kZXIoKQogewogICAgIEFTU0VSVChtX2J1
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggNjY5ODViYzM4N2Q3
NDM5MTM3MDFiMTE3YjkxODAwYjlhMjc3MWFiOC4uYjNjNmFjOGEyZDVhY2JhMmMyMTUyOGRmZWIx
OGM2NDE1Y2VkZDIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtNTEs
NiArNTEsNyBAQCBjbGFzcyBEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPERlY29kZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
LCBWZWN0b3I8QXR0YWNobWVudD4mJik7CiAgICAgZXhwbGljaXQgRGVjb2Rlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3Ip
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBWZWN0b3I8QXR0YWNobWVudD4mJik7CisgICAgRGVj
b2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1TaXplLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKTsKICAgICB+RGVjb2RlcigpOwogCiAgICAgRGVjb2Rlcihjb25zdCBEZWNv
ZGVyJikgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9I
YW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdl
LmgKaW5kZXggZWE4YWQ0NWMwOWViNjgyZTBlODYyM2I5MzRkNWUwZTljNzAyNjIyYS4uOTI5NjNl
MjFlMWQ3MTdmNjRhODIxOWM1Mjg5YmFmMDUzZjA5OTQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTY0LDYgKzE2NSwyOCBA
QCB2b2lkIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91c1dhbnRzQ29ubmVjdGlvbihDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZQogICAgIGNhbGxNZW1iZXJGdW5jdGlvbihjb25uZWN0
aW9uLCBXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb2Jq
ZWN0LCBmdW5jdGlvbik7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5
cGVuYW1lIE1GPgordm9pZCBoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMoU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIERlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYg
ZnVuY3Rpb24pCit7CisgICAgdWludDY0X3Qgc3luY1JlcXVlc3RJRCA9IDA7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzeW5jUmVxdWVzdElEKSB8fCAhc3luY1JlcXVlc3RJRCkgeworICAgICAg
ICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBP
cHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6OkFyZ3VtZW50cz46OlR5cGU+
IGFyZ3VtZW50czsKKyAgICBkZWNvZGVyID4+IGFyZ3VtZW50czsKKyAgICBpZiAoIWFyZ3VtZW50
cykgeworICAgICAgICBkZWNvZGVyLm1hcmtJbnZhbGlkKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICB0eXBlbmFtZSBUOjpEZWxheWVkUmVwbHkgY29tcGxldGlvbkhhbmRsZXIgPSBb
c3luY1JlcXVlc3RJRCwgY29ubmVjdGlvbiA9IG1ha2VSZWYoY29ubmVjdGlvbildIChhdXRvJiYu
Li4gYXJncykgbXV0YWJsZSB7CisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoc3lu
Y1JlcXVlc3RJRCwgYXJncy4uLik7CisgICAgfTsKKyAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RG
TW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVu
Y3Rpb24pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBN
Rj4KIHZvaWQgaGFuZGxlTWVzc2FnZUFzeW5jKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29k
ZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1
ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTNhMDU2YTAyMDFjMmFkMGU3NDkwZWM3ZDdmZWJiZGQ3NzEwOTdi
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Njb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHV0aWxpdHk+Cisj
aW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IElQQyB7CisKKy8vIFNjb3BlZCBob2xkZXIgZm9yIG9iamVjdHMgdGhhdCBoYXZlIGFjdGl2ZSBt
ZXNzYWdlIHJlY2VpdmUgcXVldWVzLiBFbmZvcmNlcyB0aGF0CisvLyBvbmNlIGhvbGRlciBzdG9w
cyBob2xkaW5nIHRoZSBvYmplY3QsIHRoZSBtZXNzYWdlIHF1ZXVlIHNob3VsZCBiZSByZW1vdmVk
LgorLy8gVGhlIGNvbnZlbnRpb24gaXMgdG8gY2FsbCBzdG9wTGlzdGVuaW5nRm9ySVBDKCkgZm9y
IHRoZSBvYmplY3QuCisvLyBPcHRpb25hbGx5IHRoZSBvYmplY3QgY2FuIG9idGFpbiB0aGUgb3du
aW5nIHJlZmVyZW5jZSB0aGF0IHdhcyB1c2VkIHRvIGhvbGQgdGhlIG9iamVjdAorLy8gaW4gb3Jk
ZXIgdG8gYXR0ZW1wdCB0byBhdm9pZCBuZWVkbGVzcyBkZXN0cnVjdGlvbiBvZiB0aGUgb2JqZWN0
IGluIGhvbGRlciB0aHJlYWQuCisvLyBUaGlzIHVzZWZ1bCBpbiB0aGUgY2FzZSB0aGUgc3RvcCBp
bnZva2VzIGEgY2xlYW51cCB0YXNrIGluIHRoZSBtZXNzYWdlIGhhbmRsZXIKKy8vIHRocmVhZC4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBIb2xkZXJUeXBlID0gUmVmUHRyPFQ+Pgor
Y2xhc3MgU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSB7CitwdWJsaWM6CisgICAgU2Nv
cGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSgpID0gZGVmYXVsdDsKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVT4KKyAgICBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKFUmJiBvYmpl
Y3QpCisgICAgICAgIDogbV9vYmplY3QoV1RGTW92ZShvYmplY3QpKQorICAgIHsKKyAgICB9Cisg
ICAgU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZShTY29wZWRBY3RpdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlJiYgb3RoZXIpCisgICAgICAgIDogbV9vYmplY3Qoc3RkOjpleGNoYW5nZShvdGhl
ci5tX29iamVjdCwgbnVsbHB0cikpCisgICAgeworICAgIH0KKyAgICBTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlJiBvcGVyYXRvcj0oU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZSYmIG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAg
ICAgICByZXNldCgpOworICAgICAgICAgICAgbV9vYmplY3QgPSBzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fb2JqZWN0LCBudWxscHRyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQorICAgIH5TY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKCkKKyAgICB7CisgICAg
ICAgIHJlc2V0KCk7CisgICAgfQorICAgIHZvaWQgcmVzZXQoKQorICAgIHsKKyAgICAgICAgaWYg
KCFtX29iamVjdCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3RvcExpc3RlbmluZ0Zv
cklQQ0FuZFJlbGVhc2UobV9vYmplY3QpOworICAgIH0KKyAgICBUKiBnZXQoKSBjb25zdCB7IHJl
dHVybiBtX29iamVjdC5nZXQoKTsgfQorcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PgorICAgIHN0YXRpYyBhdXRvIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9iamVj
dCkgLT4gZGVjbHR5cGUob2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKG9iamVjdC5yZWxlYXNl
Tm9uTnVsbCgpKSwgdm9pZCgpKQorICAgIHsKKyAgICAgICAgb2JqZWN0LT5zdG9wTGlzdGVuaW5n
Rm9ySVBDKG9iamVjdC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4KKyAgICBzdGF0aWMgYXV0byBzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZShV
JiBvYmplY3QpIC0+IGRlY2x0eXBlKG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhXVEZNb3Zl
KG9iamVjdCkpLCB2b2lkKCkpCisgICAgeworICAgICAgICBvYmplY3QtPnN0b3BMaXN0ZW5pbmdG
b3JJUEMoV1RGTW92ZShvYmplY3QpKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4K
KyAgICBzdGF0aWMgYXV0byBzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZShVJiBvYmplY3Qp
IC0+IGRlY2x0eXBlKG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQygpLCB2b2lkKCkpCisgICAg
eworICAgICAgICBvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMoKTsKKyAgICAgICAgb2JqZWN0
ID0gbnVsbHB0cjsKKyAgICB9CisgICAgSG9sZGVyVHlwZSBtX29iamVjdDsKK307CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKHN0ZDo6dW5p
cXVlX3B0cjxUPiYmKSAtPiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlPFQsIHN0ZDo6
dW5pcXVlX3B0cjxUPj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlKFJlZjxUPiYmKSAtPiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1
ZXVlPFQsIFJlZlB0cjxUPj47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRmNWNkZjAwOGU1
YTdmMmQyZjEwMmEyMzVjM2MyMjUxNzMzNzZlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEs
NTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgSVBDIHsKKworU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBz
aXplX3Qgc2l6ZSkKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9idWZm
ZXIoc2l6ZSkKK3sKKyAgICAvLyBSZWFkIHN0YXJ0cyBmcm9tIDAgd2l0aCBsaW1pdCBvZiAwIGFu
ZCByZWFkZXIgc2xlZXBpbmcuCisgICAgc2hhcmVkU2VuZGVyT2Zmc2V0KCkuc3RvcmUoU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKKyAgICAvLyBXcml0ZSBzdGFydHMgZnJvbSAwIHdpdGgg
YSBsaW1pdCBvZiB0aGUgd2hvbGUgYnVmZmVyLgorICAgIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCku
c3RvcmUoMCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7Cit9CisKK3ZvaWQgU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYgc2VtYXBo
b3JlKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1fd2FrZVVwU2VtYXBob3JlID0gV1RG
TW92ZShzZW1hcGhvcmUpOworI2VuZGlmCisgICAgd2FrZVVwUmVjZWl2ZXIoKTsKK30KKwordm9p
ZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp3YWtlVXBSZWNlaXZlcigpCit7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgaWYgKG1fd2FrZVVwU2VtYXBob3JlKQorICAgICAgICBtX3dha2VVcFNl
bWFwaG9yZS0+c2lnbmFsKCk7CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5MzZi
OTAyNjVhZGNjYjg0NDIyMWE2MjBkNDY3YTEwYjdkZjA0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKQEAgLTAs
MCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRlY29kZXIu
aCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIK
KyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KK25hbWVzcGFjZSBJUEMgeworCisvLyBBIG1lc3NhZ2Ugc3Ry
ZWFtIGlzIGEgaGFsZi1kdXBsZXggdHdvLXdheSBzdHJlYW0gb2YgbWVzc2FnZXMgdG8gYSBiZXR3
ZWVuIGEgc2VuZGVyIGFuZCB0aGUKKy8vIGRlc3RpbmF0aW9uIHJlY2VpdmVyLgorLy8KKy8vIFN0
cmVhbUNsaWVudENvbm5lY3Rpb24gY2FuIHNlbmQgbWVzc2FnZXMgYW5kIHJlY2VpdmUgc3luY2hy
b25vdXMgcmVwbGllcworLy8gdGhyb3VnaCB0aGlzIG1lc3NhZ2Ugc3RyZWFtIG9yIHRocm91Z2gg
SVBDOjpDb25uZWN0aW9uLgorLy8KKy8vIFRoZSBkZXN0aW5hdGlvbiByZWNlaXZlciB3aWxsIHJl
Y2VpdmUgbWVzc2FnZXMgaW4gb3JkZXIgX2ZvciB0aGUgZGVzdGluYXRpb24gbWVzc2FnZXNfLgor
Ly8gVGhlIHdob2xlIElQQzo6Q29ubmVjdGlvbiBtZXNzYWdlIG9yZGVyIGlzIG5vdCBwcmVzZXJ2
ZWQuCisvLworLy8gVGhlIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gdHJ1c3RzIHRoZSBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uLgorY2xhc3MgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBmaW5hbCB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyZWFtQ2xpZW50Q29ubmVjdGlvbik7CitwdWJsaWM6
CisgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbihDb25uZWN0aW9uJiwgc2l6ZV90IGJ1ZmZlclNp
emUpOworCisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgc3RyZWFtQnVmZmVyKCkgeyByZXR1
cm4gbV9idWZmZXI7IH0KKyAgICB2b2lkIHNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9y
ZSYmKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGJvb2wgc2VuZChU
JiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQpOworCisgICAgdXNpbmcgU2VuZFN5bmNSZXN1bHQgPSBDb25uZWN0aW9uOjpTZW5kU3lu
Y1Jlc3VsdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIFNlbmRT
eW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmLCBPYmpl
Y3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKK3ByaXZh
dGU6CisgICAgc3RydWN0IFNwYW4geworICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBz
aXplX3Qgc2l6ZTsKKyAgICB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1N
ZXNzYWdlU2l6ZSA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNv
bm5lY3Rpb25FbmNvZGVyOjptZXNzYWdlQWxpZ25tZW50OworICAgIGJvb2wgdHJ5U2VuZERlc3Rp
bmF0aW9uSURJZk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNb25vdG9uaWNUaW1lIHRp
bWVvdXQpOworICAgIHZvaWQgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoU3BhbiYmKTsK
KworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KTsK
KyAgICBlbnVtIGNsYXNzIFdha2VVcFJlY2VpdmVyIDogYm9vbCB7CisgICAgICAgIE5vLAorICAg
ICAgICBZZXMKKyAgICB9OworICAgIFdha2VVcFJlY2VpdmVyIHJlbGVhc2Uoc2l6ZV90IHdyaXRl
U2l6ZSk7CisgICAgdm9pZCB3YWtlVXBSZWNlaXZlcigpOworCisgICAgU3BhbiBhbGlnbmVkU3Bh
bihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBzaXplKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChzaXplX3QgdW50
cnVzdGVkTGltaXQpIGNvbnN0OworCisgICAgc2l6ZV90IHdyYXBPZmZzZXQoc2l6ZV90IG9mZnNl
dCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNldChvZmZzZXQpOyB9CisgICAgc2l6
ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmFs
aWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwgbWluaW11bU1lc3NhZ2VTaXplKTsg
fQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRTZW5kZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1
ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRSZWNlaXZl
ck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnJlY2VpdmVyT2Zmc2V0KCk7IH0KKyAgICB1aW50
OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YSgpOyB9CisgICAgc2l6ZV90
IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZGF0YVNpemUoKTsgfQorCisgICAg
Q29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0
aW9uSUQgeyAwIH07CisKKyAgICBzaXplX3QgbV9zZW5kZXJPZmZzZXQgeyAwIH07CisgICAgU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBP
cHRpb25hbDxTZW1hcGhvcmU+IG1fd2FrZVVwU2VtYXBob3JlOworI2VuZGlmCit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9vbCBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNl
Y29uZHMgdGltZW91dCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KCFUOjppc1N5bmMsICJNZXNzYWdl
IGlzIHN5bmMhIik7CisgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9u
aWNUaW1lOjpub3coKSArIHRpbWVvdXQ7CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElm
TmVlZGVkKGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1l
b3V0KTsKKyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB7CisgICAg
ICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG1lc3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBz
cGFuLT5kYXRhLCBzcGFuLT5zaXplIH07CisgICAgICAgIGlmIChtZXNzYWdlRW5jb2RlciA8PCBt
ZXNzYWdlLmFyZ3VtZW50cygpKSB7CisgICAgICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJl
bGVhc2UobWVzc2FnZUVuY29kZXIuc2l6ZSgpKTsKKyAgICAgICAgICAgIGlmICh3YWtldXBSZXN1
bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXI6OlllcykKKyAgICAg
ICAgICAgICAgICB3YWtlVXBSZWNlaXZlcigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92
ZSgqc3BhbikpOworICAgIGlmICghbV9jb25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwg
ZGVzdGluYXRpb25JRCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldh
aXRpbmdGb3JTeW5jUmVwbHkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kU3lu
YyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmll
cjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpCit7CisgICAgc3RhdGljX2Fzc2Vy
dChUOjppc1N5bmMsICJNZXNzYWdlIGlzIG5vdCBzeW5jISIpOworICAgIE1vbm90b25pY1RpbWUg
YWJzb2x1dGVUaW1lb3V0ID0gTW9ub3RvbmljVGltZTo6bm93KCkgKyB0aW1lb3V0OworICAgIGlm
ICghdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZChkZXN0aW5hdGlvbklELnRvVUludDY0KCks
IGFic29sdXRlVGltZW91dCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byBzcGFuID0g
dHJ5QWNxdWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHNlbmQgdGhyb3VnaCBzdHJlYW0uCisg
ICAgLy8gRklYTUU6IGltcGxlbWVudCByZWNlaXZlIHRocm91Z2ggc3RyZWFtLgorICAgIHNlbmRQ
cm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoKnNwYW4pKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fY29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5
KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0KTsKKyAgICBBU1NFUlQocmVzdWx0
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbmxpbmUgYm9vbCBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uOjp0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0KQoreworICAgIGlmIChkZXN0aW5hdGlv
bklEID09IG1fY3VycmVudERlc3RpbmF0aW9uSUQpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUoYWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBlbmNv
ZGVyIHsgTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQsIHNwYW4tPmRhdGEsIHNw
YW4tPnNpemUgfTsKKyAgICBpZiAoIShlbmNvZGVyIDw8IGRlc3RpbmF0aW9uSUQpKSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBTaXplIG9mIHRoZSBtaW5pbXVtIGFsbG9jYXRp
b24gaXMgaW5jb3JyZWN0LiBMaWtlbHkgYW4gYWxpZ25tZW50IGlzc3VlLgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShlbmNvZGVy
LnNpemUoKSk7CisgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9u
OjpXYWtlVXBSZWNlaXZlcjo6WWVzKQorICAgICAgICB3YWtlVXBSZWNlaXZlcigpOworICAgIG1f
Y3VycmVudERlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgIHJldHVybiB0cnVlOwor
fQorCitpbmxpbmUgdm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZW5kUHJvY2Vzc091dE9m
U3RyZWFtTWVzc2FnZShTcGFuJiYgc3BhbikKK3sKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2Rl
ciBlbmNvZGVyIHsgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UsIHNwYW4u
ZGF0YSwgc3Bhbi5zaXplIH07CisgICAgLy8gTm90IG5vdGlmeWluZyBvbiB3YWtlIHVwIHNpbmNl
IHRoZSBvdXQtb2Ytc3RyZWFtIG1lc3NhZ2Ugd2lsbCBkbyB0aGF0LgorICAgIGF1dG8gcmVzdWx0
ID0gcmVsZWFzZShlbmNvZGVyLnNpemUoKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHJlc3VsdCk7
Cit9CitpbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZShNb25vdG9uaWNUaW1lIHRpbWVvdXQpCit7Cisg
ICAgZm9yICg7OykgeworICAgICAgICBzaXplX3Qgc2VuZGVyTGltaXQgPSBjbGFtcGVkTGltaXQo
c2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpKTsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlbmRlck9mZnNldCwgc2VuZGVy
TGltaXQpOworICAgICAgICBpZiAocmVzdWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNpemUpIHsK
KyAgICAgICAgICAgIGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgICAgICAg
ICBpZiAobm93ID49IHRpbWVvdXQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgICAgICAgICBzaXplX3Qgb2xkU2VuZGVyTGltaXQgPSBzaGFyZWRSZWNl
aXZlck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhzZW5kZXJMaW1pdCwgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcsIHN0ZDo6bWVt
b3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgICAgICAg
ICAgaWYgKHNlbmRlckxpbWl0ID09IG9sZFNlbmRlckxpbWl0KQorICAgICAgICAgICAgICAgIG1f
YnVmZmVyLnNlbmRlcldhaXRTZW1hcGhvcmUoKS53YWl0Rm9yKHRpbWVvdXQgLSBub3cpOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc2VuZGVyTGltaXQgPSBjbGFtcGVkTGlt
aXQob2xkU2VuZGVyTGltaXQpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFsaWduZWRTcGFu
KG1fc2VuZGVyT2Zmc2V0LCBzZW5kZXJMaW1pdCk7CisgICAgICAgICAgICB9CisjZWxzZQorICAg
ICAgICAgICAgVGhyZWFkOjp5aWVsZCgpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgaWYg
KHJlc3VsdC5zaXplID49IG1pbmltdW1NZXNzYWdlU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIC8vIFRoZSBhbGlnbmVkU3BhbiB1c2VzIHRoZSBtaW5pbXVtTWVzc2Fn
ZVNpemUgdG8gY2FsY3VsYXRlIHRoZSBuZXh0IGJlZ2lubmluZyBwb3NpdGlvbiBpbiB0aGUgYnVm
ZmVyLAorICAgICAgICAvLyBhbmQgbm90IHRoZSBzaXplLiBUaGUgc2l6ZSBtaWdodCBiZSBtb3Jl
IG9yIGxlc3Mgd2hhdCBpcyBuZWVkZWQsIGRlcGVuZGluZyBvbiB3aGVyZSB0aGUgcmVhZGVyIGlz
LgorICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBjYXBhY2l0eSBmb3IgbWluaW11bSBtZXNzYWdl
IHNpemUsIHdhaXQgdW50aWwgbW9yZSBpcyBhdmFpbGFibGUuCisgICAgICAgIC8vIEluIHRoZSBj
YXNlIHdoZXJlIHNlbmRlck9mZnNldCA8IHJlY2VpdmVyT2Zmc2V0IHdlIGNhbiBhcnJpdmUgdG8g
YSBzaXR1YXRpb24gd2hlcmUKKyAgICAgICAgLy8gMCA8IHJlc3VsdC5zaXplIDwgbWluaW11bU1l
c3NhZ2VTaXplLgorICAgIH0KKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitpbmxpbmUg
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVjZWl2ZXIgU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6cmVsZWFzZShzaXplX3Qgc2l6ZSkKK3sKKyAgICBzaXplID0gc3RkOjptYXgoc2l6ZSwg
bWluaW11bU1lc3NhZ2VTaXplKTsKKyAgICBtX3NlbmRlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxp
Z25PZmZzZXQobV9zZW5kZXJPZmZzZXQpICsgc2l6ZSk7CisgICAgQVNTRVJUKG1fc2VuZGVyT2Zm
c2V0IDwgZGF0YVNpemUoKSk7CisgICAgLy8gSWYgdGhlIHJlY2VpdmVyIHdyb3RlIG92ZXIgdGhl
IHNlbmRlck9mZnNldCB3aXRoIHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgd2Ug
a25vdyBpdCBpcyBzbGVlcGluZy4KKyAgICBzaXplX3QgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNl
bmRlck9mZnNldCgpLmV4Y2hhbmdlKG1fc2VuZGVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9h
Y3FfcmVsKTsKKyAgICBpZiAocmVjZWl2ZXJMaW1pdCA9PSBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
OjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpCisgICAgICAgIHJldHVybiBXYWtl
VXBSZWNlaXZlcjo6WWVzOworICAgIEFTU0VSVCghKHJlY2VpdmVyTGltaXQgJiBTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpKTsKKyAgICBy
ZXR1cm4gV2FrZVVwUmVjZWl2ZXI6Ok5vOworfQorCitpbmxpbmUgU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6U3BhbiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjphbGlnbmVkU3BhbihzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgQVNTRVJUKG9mZnNldCA8IGRhdGFTaXplKCkpOwor
ICAgIEFTU0VSVChsaW1pdCA8IGRhdGFTaXplKCkpOworICAgIHNpemVfdCBhbGlnbmVkID0gYWxp
Z25PZmZzZXQob2Zmc2V0KTsKKyAgICBzaXplX3QgcmVzdWx0U2l6ZSA9IDA7CisgICAgaWYgKG9m
ZnNldCA8IGxpbWl0KSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCAmJiBhbGlnbmVk
IDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0IHx8IGFsaWduZWQg
PCBsaW1pdCkKKyAgICAgICAgICAgIHJlc3VsdFNpemUgPSBzaXplKGFsaWduZWQsIGxpbWl0KTsK
KyAgICB9CisgICAgcmV0dXJuIHsgZGF0YSgpICsgYWxpZ25lZCwgcmVzdWx0U2l6ZSB9OworfQor
CitpbmxpbmUgc2l6ZV90IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNpemUoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxpbWl0KQoreworICAgIGlmICghbGltaXQpCisgICAgICAgIHJldHVybiBkYXRh
U2l6ZSgpIC0gMSAtIG9mZnNldDsKKyAgICBpZiAobGltaXQgPD0gb2Zmc2V0KQorICAgICAgICBy
ZXR1cm4gZGF0YVNpemUoKSAtIG9mZnNldDsKKyAgICByZXR1cm4gbGltaXQgLSBvZmZzZXQgLSAx
OworfQorCitpbmxpbmUgc2l6ZV90IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1p
dChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHVudHJ1c3RlZExp
bWl0IDwgKGRhdGFTaXplKCkgLSAxKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKHVudHJ1c3RlZExp
bWl0LCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWM1Zjdm
MzFlNTMzZGQzYmRiZThmNDViNjZiZWM4Y2Y3NTg3MzdhNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCkBAIC0w
LDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IEZmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKKworbmFtZXNwYWNlIElQQyB7CisKK3N0YXRpYyBSZWY8V2ViS2l0OjpTaGFyZWRN
ZW1vcnk+IGNyZWF0ZU1lbW9yeShzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvIG1lbW9yeSA9IFdl
YktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplKTsKKyAgICBpZiAoIW1lbW9yeSkKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICByZXR1cm4gbWVtb3J5LnJlbGVhc2VOb25OdWxsKCk7Cit9CisK
K1N0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoc2l6ZV90IG1l
bW9yeVNpemUpCisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisg
ICAgLCBtX3NoYXJlZE1lbW9yeShjcmVhdGVNZW1vcnkobWVtb3J5U2l6ZSkpCit7CisgICAgQVNT
RVJUKG1fZGF0YVNpemUgPD0gbWF4aW11bVNpemUoKSk7Cit9CisKK1N0cmVhbUNvbm5lY3Rpb25C
dWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYm
IG1lbW9yeSwgc2l6ZV90IG1lbW9yeVNpemUsIFNlbWFwaG9yZSYmIHNlbmRlcldhaXRTZW1hcGhv
cmUpCisgICAgOiBtX2RhdGFTaXplKG1lbW9yeVNpemUgLSBoZWFkZXJTaXplKCkpCisgICAgLCBt
X3NoYXJlZE1lbW9yeShXVEZNb3ZlKG1lbW9yeSkpCisgICAgLCBtX3NlbmRlcldhaXRTZW1hcGhv
cmUoV1RGTW92ZShzZW5kZXJXYWl0U2VtYXBob3JlKSkKK3sKKyAgICBBU1NFUlQobV9kYXRhU2l6
ZSA8PSBtYXhpbXVtU2l6ZSgpKTsKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3RoZXIpID0gZGVmYXVs
dDsKKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6flN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoKSA9
IGRlZmF1bHQ7CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXImIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6Om9wZXJhdG9yPShTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgb3RoZXIpCit7CisgICAgaWYg
KHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgIG1fZGF0YVNpemUgPSBvdGhlci5tX2RhdGFTaXpl
OworICAgICAgICBtX3NoYXJlZE1lbW9yeSA9IFdURk1vdmUob3RoZXIubV9zaGFyZWRNZW1vcnkp
OworICAgICAgICBtX3NlbmRlcldhaXRTZW1hcGhvcmUgPSBXVEZNb3ZlKG90aGVyLm1fc2VuZGVy
V2FpdFNlbWFwaG9yZSk7CisgICAgfQorICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoIW1fc2hhcmVk
TWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZFdyaXRlKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICBXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgbV9zaGFyZWRNZW1v
cnktPnNpemUoKSB9OworICAgIGVuY29kZXIgPDwgaXBjSGFuZGxlOworICAgIGVuY29kZXIgPDwg
bV9zZW5kZXJXYWl0U2VtYXBob3JlOworfQorCitPcHRpb25hbDxTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyPiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBPcHRpb25hbDxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBpcGNIYW5kbGU7
CisgICAgZGVjb2RlciA+PiBpcGNIYW5kbGU7CisgICAgaWYgKCFpcGNIYW5kbGUpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8U2VtYXBob3JlPiBzZW1hcGhvcmU7
CisgICAgZGVjb2RlciA+PiBzZW1hcGhvcmU7CisgICAgaWYgKCFzZW1hcGhvcmUpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgc2l6ZV90IGRhdGFTaXplID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihpcGNIYW5kbGUtPmRhdGFTaXplKTsKKyAgICBpZiAoZGF0YVNpemUgPCBoZWFkZXJT
aXplKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKGRhdGFTaXplID4g
aGVhZGVyU2l6ZSgpICsgbWF4aW11bVNpemUoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjptYXAoaXBj
SGFuZGxlLT5oYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3Jp
dGUpOworICAgIGlmIChzaGFyZWRNZW1vcnktPnNpemUoKSA8IGRhdGFTaXplKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHsg
c2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCksIGRhdGFTaXplLCAgV1RGTW92ZSgqc2VtYXBo
b3JlKSB9OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1Db25uZWN0aW9uQnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1Db25uZWN0aW9uQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZmMGI4ZDA0MTM3MjAzYjU1ZWJkNDFj
ZmUxYjg4ZjA3OGQ5ZDA3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIklQ
Q1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPHd0Zi9B
dG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBJUEMgewor
CisvLyBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIGlzIGEgc2hhcmVkICJiaS1wYXJ0aXRlIiBjaXJj
dWxhciBidWZmZXIgc3VwcG9ydGluZworLy8gdmFyaWFibGUgbGVuZ3RoIG1lc3NhZ2VzLCBzcGVj
aWZpYyBkYXRhIGFsaWdubWVudCB3aXRoIG1hbmRhdGVkIG1pbmltdW0gc2l6ZS4KKy8vIFN0cmVh
bUNsaWVudENvbm5lY3Rpb24gYW5kIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gdXNlIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIgdG8gY29tbXVuaWNhdGUuCisvLworLy8gVGhlICJiaS1wYXJ0aXRlIiBp
cyBoZXJlIHRvIG1lYW4gdGhhdCB3cml0ZXMgYW5kIHJlYWRzIHRvIHRoZSBidWZmZXIgbXVzdCBi
ZQorLy8gY29udGludW91cy4KKy8vCisvLyBUaGUgY2xpZW50IChzZW5kZXIgb3IgcmVjZWl2ZXIp
ICJhY3F1aXJlcyIgc29tZSBhbW91bnQgb2YgYnVmZmVyIGRhdGEuIFRoZSBkYXRhIHBvaW50ZXIK
Ky8vIGxvY2F0aW9uIGRlcGVuZHMgb24gdGhlIGFtb3VudCBvZiBkYXRhIGJlaW5nIGFjcXVpcmVk
LiBUaGUgYnVmZmVyIHJldHVybnMgYWxsIHRoZSBhdmFpbGFibGUKKy8vIGNhcGFjaXR5IC0tIHRo
aXMgbWF5IGJlIGxlc3MgdGhhbiBhY3F1aXJlZC4KKy8vCisvLyBUaGUgY2xpZW50ICJyZWxlYXNl
cyIgdGhlIHNvbWUgYW1vdW50IG9mIGRhdGEsIGF0IGxlYXN0IHRoZSBhbW91bnQgYWNxdWlyZWQg
YnV0IHBvdGVudGlhbGx5CisvLyBtb3JlLgorLy8KKy8vIEJvdGggc2VuZGVyIGFuZCByZWNlaXZl
ciBtdXN0IHJlbGVhc2UgdGhlIHNhbWUgYW1vdW50IG9mIGRhdGEgYXQgdGhlIHNhbWUgc3RlcCBv
ZiB0aGUgYWNxdWlyZS9yZWxlYXNlIHNlcXVlbmNlLgorLy8gU3VwcG9zZSBzZW5kZXIgcmVsZWFz
ZXMgZmlyc3QgOCBhbmQgdGhlbiAxNjYgYnl0ZXMuIFVwb24gdGhlIGZpcnN0IGFjcXVpcmUsIHJl
Y2VpdmVyCisvLyBtdXN0IGFsc28gcmVsZWFzZSA4IGJ5dGVzIGFuZCB0aGVuIHVwb24gdGhlIHNl
Y29uZCBhY3F1aXJlIDE2NiBieXRlcy4KKy8vIER1ZSB0byBob3cgYWxpZ25tZW50IGFuZCBtaW5p
bXVtIGxlbmd0aCBhZmZlY3QgdGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSBtZW1vcnkgY2FuCisv
LyBiZSByZWZlcnJlZCB0bywgdGhlIHJlY2VpdmVyIGNhbm5vdCAicmVhZCB0d28gdGltZXMgc2lt
dWx0YW5lb3VzbHkiIGFuZCByZWxlYXNlIDE3NCBieXRlcy4KKy8vCisvLyBUaGUgY2lyY3VsYXIg
YnVmZmVyIGhhcyBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb246CisvLyAqIFNlbmRlciBvd25zIHRo
ZSBkYXRhIGJldHdlZW4gW3NlbmRlck9mZnNldCwgcmVjZWl2ZXJPZmZzZXRbLiBXaGVuIHNlbmRl
ck9mZnNldCA9PQorLy8gcmVjZWl2ZXJPZmZzZXQsIHNlbmRlciBvd25zIGFsbCB0aGUgZGF0YS4K
Ky8vICogUmVjZWl2ZXIgb3ducyB0aGUgZGF0YSBiZXR3ZWVuIFtyZWNlaXZlck9mZnNldCwgc2Vu
ZGVyT2Zmc2V0Wy4KKy8vICogVGhlIGJ1ZmZlciBjYW4gaG9sZCBtYXhpbXVtIG9mIHNpemUgLSAx
IHZhbHVlcy4gVGhlIGxhc3QgdmFsdWUgaXMgcmVzZXJ2ZWQgZm9yCisvLyBpbmRpY2F0aW5nIHRo
YXQgdGhlIGJ1ZmZlciBpcyBmdWxsLiBGSVhNRTogTWF5YmUgd291bGQgYmUgc2ltcGxlciBpbXBs
ZW1lbnRhdGlvbiBpZgorLy8gaXQgd291bGQgdXNlIHRoZSAid3JhcCIgZmxhZyBpbnN0ZWFkIG9m
IHRoZSBob2xlIGFzIHRoZSBpbmRpY2F0b3IuIFRoaXMgd291bGQgbW92ZQorLy8gdGhlIGFsaWdu
ZWRTcGFuIGltcGxlbWVudGF0aW9uIHRvIHRoZSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLgorLy8g
KiBBbGwgYXRvbWljIHZhcmlhYmxlIGxvYWRzIGFyZSB1bnRydXN0ZWQsIHNvIHRoZXkncmUgY2xh
bXBlZC4gVmlvbGF0aW9ucyBhcmUgbm90IHJlcG9ydGVkLAorLy8gdGhvdWdoLgorLy8gU2VlIFNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlLgorY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5
U2l6ZSk7CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihTdHJlYW1Db25uZWN0aW9uQnVmZmVy
JiYpOworICAgIH5TdHJlYW1Db25uZWN0aW9uQnVmZmVyKCk7CisgICAgU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlciYgb3BlcmF0b3I9KFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisKKyAgICBzaXpl
X3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KG9mZnNldCA8PSBkYXRhU2l6ZSgpKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBkYXRhU2l6ZSgp
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQor
CisgICAgdGVtcGxhdGU8c2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQ+CisgICAgc2l6ZV90IGFsaWdu
T2Zmc2V0KHNpemVfdCBvZmZzZXQsIHNpemVfdCBhY3F1aXJlU2l6ZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIG9mZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2Y8bWVzc2FnZUFsaWdubWVudD4ob2Zm
c2V0KTsKKyAgICAgICAgaWYgKG9mZnNldCArIGFjcXVpcmVTaXplID49IGRhdGFTaXplKCkpCisg
ICAgICAgICAgICBvZmZzZXQgPSAwOworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKwor
ICAgIEF0b21pYzxzaXplX3Q+JiBzZW5kZXJPZmZzZXQoKSB7IHJldHVybiBoZWFkZXIoKS5zZW5k
ZXJPZmZzZXQ7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgcmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVy
biBoZWFkZXIoKS5yZWNlaXZlck9mZnNldDsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90Kj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSkgKyBo
ZWFkZXJTaXplKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGFTaXplOyB9CisgICAgU2VtYXBob3JlJiBzZW5kZXJXYWl0U2VtYXBob3JlKCkgeyByZXR1cm4g
bV9zZW5kZXJXYWl0U2VtYXBob3JlOyB9CisKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhl
YWRlcjo6c2VuZGVyT2Zmc2V0IHdoZW4gcmVjZWl2ZXIgaXMgc2xlZXBpbmcsIGUuZy4gbm90IHJ1
bm5pbmcuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJ
c1NsZWVwaW5nVGFnID0gMSA8PCAzMTsKKyAgICAvLyBUYWcgdmFsdWUgc3RvcmVkIGluIEhlYWRl
cjo6cmVjZWl2ZXJPZmZzZXQgd2hlbiBzZW5kZXIgaXMgd2FpdGluZywgZS5nLiB3YWl0aW5nIG9u
CisgICAgLy8gYSBzZW1hcGhvcmUuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcmVjZWl2
ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcgPSAxIDw8IDMxOworCisgICAgc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgbWF4aW11bVNpemUoKSB7IHJldHVybiBzdGQ6Om1pbihzZW5kZXJPZmZzZXRS
ZWNlaXZlcklzU2xlZXBpbmdUYWcsIHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZykg
LSAxOyB9CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHN0YXRpYyBPcHRp
b25hbDxTdHJlYW1Db25uZWN0aW9uQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRl
OgorICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiYm
LCBzaXplX3QgbWVtb3J5U2l6ZSwgU2VtYXBob3JlJiYgc2VuZGVyV2FpdFNlbWFwaG9yZSk7CisK
KyAgICBzdHJ1Y3QgSGVhZGVyIHsKKyAgICAgICAgQXRvbWljPHNpemVfdD4gcmVjZWl2ZXJPZmZz
ZXQ7CisgICAgICAgIC8vIFBhZGRpbmcgc28gdGhhdCB0aGUgdmFyaWFibGVzIG1vc3RseSBhY2Nl
c3NlZCBieSBkaWZmZXJlbnQgcHJvY2Vzc2VzIGRvIG5vdCBzaGFyZSBhIGNhY2hlIGxpbmUuCisg
ICAgICAgIC8vIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBhdm9pZCBjYWNoZS1saW5lIGluZHVjZWQg
cmVkdWN0aW9uIG9mIHBhcmFsbGVsIGFjY2Vzcy4KKyAgICAgICAgYWxpZ25hcyhzaXplb2YodWlu
dDY0X3RbMl0pKSBBdG9taWM8c2l6ZV90PiBzZW5kZXJPZmZzZXQ7CisgICAgfTsKKyAgICBIZWFk
ZXImIGhlYWRlcigpIGNvbnN0IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PEhlYWRlcio+KG1f
c2hhcmVkTWVtb3J5LT5kYXRhKCkpOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgaGVh
ZGVyU2l6ZSgpIHsgcmV0dXJuIHJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHN0ZDo6bWF4X2Fs
aWduX3QpPihzaXplb2YoSGVhZGVyKSk7IH0KKworICAgIHNpemVfdCBtX2RhdGFTaXplIHsgMCB9
OworICAgIFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CisgICAgU2Vt
YXBob3JlIG1fc2VuZGVyV2FpdFNlbWFwaG9yZTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI5MjMyZGVjZjZjNzkzYTQ1NzcxNjhlOTdlZmI1MWFhZmIzMmZkZWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5o
CkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBJUEMgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSwgdHlwZW5hbWU+IHN0cnVjdCBBcmd1bWVudENvZGVyOworCisvLyBJUEMgZW5jb2Rl
ciB3aGljaDoKKy8vICAtIEVuY29kZXMgdG8gYSBjYWxsZXIgYnVmZmVyIHdpdGggZml4ZWQgc2l6
ZSwgZG9lcyBub3QgcmVzaXplLCBzdG9wcyB3aGVuIHNpemUgcnVucyBvdXQKKy8vICAtIERvZXMg
bm90IGluaXRpYWxpemUgYWxpZ25tZW50IGdhcHMKKy8vCitjbGFzcyBTdHJlYW1Db25uZWN0aW9u
RW5jb2RlciBmaW5hbCB7CitwdWJsaWM6CisgICAgLy8gU3RyZWFtIG1lc3NhZ2UgbmVlZHMgdG8g
YmUgYXQgbGVhc3Qgc2l6ZSBvZiBTdHJlYW1TZXREZXN0aW5hdGlvbklEIG1lc3NhZ2UuCisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VTaXplID0gc2l6ZW9mKE1lc3Nh
Z2VOYW1lKSArIHNpemVvZih1aW50NjRfdCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
bWVzc2FnZUFsaWdubWVudCA9IGFsaWdub2YoTWVzc2FnZU5hbWUpOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc0lQQ0VuY29kZXIgPSB0cnVlOworCisgICAgU3RyZWFtQ29ubmVjdGlvbkVu
Y29kZXIoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUsIHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0
cmVhbUNhcGFjaXR5KQorICAgICAgICA6IG1fYnVmZmVyKHN0cmVhbSkKKyAgICAgICAgLCBtX2J1
ZmZlckNhcGFjaXR5KHN0cmVhbUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgKnRoaXMgPDwgbWVz
c2FnZU5hbWU7CisgICAgfQorCisgICAgflN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyKCkgPSBkZWZh
dWx0OworCisgICAgYm9vbCBlbmNvZGVGaXhlZExlbmd0aERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCisgICAgeworICAgICAgICBzaXplX3Qg
YnVmZmVyUG9pbnRlciA9IHN0YXRpY19jYXN0PHNpemVfdD4ocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4obV9idWZmZXIgKyBtX2VuY29kZWRTaXplKSk7CisgICAgICAgIHNpemVfdCBuZXdCdWZm
ZXJQb2ludGVyID0gcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm1lbnQsIGJ1ZmZlclBvaW50ZXIp
OworICAgICAgICBpZiAobmV3QnVmZmVyUG9pbnRlciA8IGJ1ZmZlclBvaW50ZXIpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGludHB0cl90IGFsaWduZWRTaXplID0gbV9lbmNv
ZGVkU2l6ZSArIChuZXdCdWZmZXJQb2ludGVyIC0gYnVmZmVyUG9pbnRlcik7CisgICAgICAgIGlm
ICghcmVzZXJ2ZShhbGlnbmVkU2l6ZSwgc2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IG1fYnVmZmVyICsgYWxpZ25lZFNpemU7CisgICAg
ICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOworICAgICAgICBtX2VuY29kZWRTaXplID0g
YWxpZ25lZFNpemUgKyBzaXplOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyJiBvcGVyYXRv
cjw8KFQmJiB0KQorICAgIHsKKyAgICAgICAgQXJndW1lbnRDb2RlcjxzdGQ6OnJlbW92ZV9jb25z
dF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+Piwgdm9pZD46OmVuY29kZSgqdGhpcywgc3Rk
Ojpmb3J3YXJkPFQ+KHQpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyBBU1NFUlQoaXNWYWxpZCgpKTsgcmV0dXJuIG1fZW5jb2RlZFNp
emU7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlckNhcGFjaXR5
OyB9CisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWQoKTsgfQorcHJp
dmF0ZToKKyAgICBib29sIHJlc2VydmUoc2l6ZV90IGFsaWduZWRTaXplLCBzaXplX3QgYWRkaXRp
b25hbFNpemUpCisgICAgeworICAgICAgICBzaXplX3Qgc2l6ZSA9IGFsaWduZWRTaXplICsgYWRk
aXRpb25hbFNpemU7CisgICAgICAgIGlmIChzaXplIDwgYWxpZ25lZFNpemUgfHwgc2l6ZSA+IG1f
YnVmZmVyQ2FwYWNpdHkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyQ2FwYWNpdHkgPSAwOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICB1aW50OF90KiBtX2J1ZmZlcjsKKyAgICBzaXplX3QgbV9idWZmZXJDYXBhY2l0
eTsKKyAgICBzaXplX3QgbV9lbmNvZGVkU2l6ZSB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWI0NDk0Yjc0ZmQ5Mjg1ODAzZTRlYTJl
ZjQ4YzExNzM2NTlkNzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAKQEAgLTAsMCArMSwxMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgorCituYW1lc3BhY2UgSVBDIHsKKworU3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZShjb25zdCBjaGFyKiBuYW1lKQorICAgIDog
bV9uYW1lKG5hbWUpCit7Cit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6ZGlz
cGF0Y2goV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAgeworICAgICAg
ICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIG1fZnVuY3Rpb25zLmFwcGVuZChXVEZN
b3ZlKGZ1bmN0aW9uKSk7CisgICAgICAgIEFTU0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50
ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5vdCBzdXBwb3J0ZWQuCisgICAgfQorICAgIHdha2VVcFBy
b2Nlc3NpbmdUaHJlYWQoKTsKKworfQordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjph
ZGRTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9u
KQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX2Nv
bm5lY3Rpb25zLmFkZChjb25uZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFtX3Nob3VsZFF1aXQp
OyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBvcnRlZC4KKyAgICB9Cisg
ICAgd2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpOworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2UmIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKG1fcHJvY2Vzc2luZ1RocmVhZCk7CisgICAg
eworICAgICAgICBMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIG1fY29ubmVjdGlvbnMu
cmVtb3ZlKGNvbm5lY3Rpb24pOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkUXVpdCk7IC8vIFJl
LWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVkLgorICAgIH0KKyNpZiBQTEFU
Rk9STShDT0NPQSkKKyAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsKKyNlbmRpZgorfQor
Cit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnN0b3AoKQoreworICAgIG1fc2hvdWxk
UXVpdCA9IHRydWU7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKCFtX3Byb2Nlc3NpbmdU
aHJlYWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsK
KyAgICBtX3Byb2Nlc3NpbmdUaHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CisgICAgbV9wcm9j
ZXNzaW5nVGhyZWFkID0gbnVsbHB0cjsKKyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWU6Ondha2VVcCgpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgbV93YWtl
VXBTZW1hcGhvcmUuc2lnbmFsKCk7CisjZW5kaWYKK30KKworSVBDOjpTZW1hcGhvcmUmIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondha2VVcFNlbWFwaG9yZSgpCit7CisgICAgcmV0dXJuIG1f
d2FrZVVwU2VtYXBob3JlOworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6Ondh
a2VVcFByb2Nlc3NpbmdUaHJlYWQoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmICht
X3Byb2Nlc3NpbmdUaHJlYWQpIHsKKyAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHRhc2sgPSBbdGhpc10oKSBtdXRh
YmxlIHsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgcHJvY2Vzc1N0cmVhbXMoKTsK
KyAgICAgICAgICAgIGlmIChtX3Nob3VsZFF1aXQpIHsKKyAgICAgICAgICAgICAgICBwcm9jZXNz
U3RyZWFtcygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLndhaXQoKTsKKyAgICAgICAgfQorICAgIH07CisgICAg
bV9wcm9jZXNzaW5nVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUobV9uYW1lLCBXVEZNb3ZlKHRhc2sp
LCBUaHJlYWRUeXBlOjpHcmFwaGljcywgVGhyZWFkOjpRT1M6OlVzZXJJbnRlcmFjdGl2ZSk7Cisj
ZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpwcm9jZXNzU3RyZWFt
cygpCit7CisgICAgY29uc3RleHByIHNpemVfdCBkZWZhdWx0TWVzc2FnZUxpbWl0ID0gMTAwMDsK
KyAgICBib29sIGhhc01vcmVUb1Byb2Nlc3MgPSBmYWxzZTsKKyAgICBkbyB7CisgICAgICAgIERl
cXVlPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gZnVuY3Rpb25zOworICAgICAgICBIYXNoU2V0PFJl
ZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4+IGNvbm5lY3Rpb25zOworICAgICAgICB7Cisg
ICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAgICAgICBm
dW5jdGlvbnMuc3dhcChtX2Z1bmN0aW9ucyk7CisgICAgICAgICAgICBjb25uZWN0aW9ucyA9IG1f
Y29ubmVjdGlvbnM7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1
bmN0aW9ucykKKyAgICAgICAgICAgIFdURk1vdmUoZnVuY3Rpb24pKCk7CisKKyAgICAgICAgaGFz
TW9yZVRvUHJvY2VzcyA9IGZhbHNlOworICAgICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBj
b25uZWN0aW9ucykKKyAgICAgICAgICAgIGhhc01vcmVUb1Byb2Nlc3MgfD0gY29ubmVjdGlvbi0+
ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhkZWZhdWx0TWVzc2FnZUxpbWl0KSA9PSBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZTo6SGFzTW9yZU1lc3NhZ2VzOworICAgIH0gd2hpbGUgKGhhc01vcmVU
b1Byb2Nlc3MpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUyNmEzNTI2NjUxZGRm
ZjM5MGE3ZGY3MWZjOTVkYTVhNDFkY2M1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUu
aCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8YXRvbWlj
PgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNo
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworY2xhc3MgU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIg
eworcHVibGljOgorICAgIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUoY29uc3QgY2hhciopOwor
ICAgIH5TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlKCkgPSBkZWZhdWx0OworICAgIHZvaWQgYWRk
U3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYpOworICAgIHZvaWQg
cmVtb3ZlU3RyZWFtQ29ubmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYpOworCisg
ICAgdm9pZCBkaXNwYXRjaChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9p
ZCBzdG9wKCk7CisKKyAgICB2b2lkIHdha2VVcCgpOworCisgICAgU2VtYXBob3JlJiB3YWtlVXBT
ZW1hcGhvcmUoKTsKK3ByaXZhdGU6CisgICAgdm9pZCB3YWtlVXBQcm9jZXNzaW5nVGhyZWFkKCk7
CisgICAgdm9pZCBwcm9jZXNzU3RyZWFtcygpOworCisgICAgY29uc3QgY2hhciogY29uc3QgbV9u
YW1lOworICAgIFNlbWFwaG9yZSBtX3dha2VVcFNlbWFwaG9yZTsKKyAgICBSZWZQdHI8VGhyZWFk
PiBtX3Byb2Nlc3NpbmdUaHJlYWQ7CisKKyAgICBzdGQ6OmF0b21pYzxib29sPiBtX3Nob3VsZFF1
aXQgeyBmYWxzZSB9OworCisgICAgTG9jayBtX2xvY2s7CisgICAgRGVxdWU8RnVuY3Rpb248dm9p
ZCgpPj4gbV9mdW5jdGlvbnM7CisgICAgSGFzaFNldDxSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U+PiBtX2Nvbm5lY3Rpb25zOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGQ0
ODRiNzhmYmY5ZGY2ZGY4YTlmZGI3ZThjYTg5YWQ1N2U1M2JhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAg
LTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKKworbmFtZXNwYWNlIElQQyB7
CisKK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFt
LCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUpCisgICAgOiBtX2Nvbm5lY3Rp
b24oY29ubmVjdGlvbikKKyAgICAsIG1fd29ya1F1ZXVlKHdvcmtRdWV1ZSkKKyAgICAsIG1fYnVm
ZmVyKFdURk1vdmUoc3RyZWFtKSkKK3sKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
QmFzZTo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmFkZE1lc3Nh
Z2VSZWNlaXZlUXVldWUoKnRoaXMsIHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAg
bV93b3JrUXVldWUuYWRkU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJO
YW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX2Nvbm5l
Y3Rpb24tPnJlbW92ZU1lc3NhZ2VSZWNlaXZlUXVldWUocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlv
bklEKTsKKyAgICBtX3dvcmtRdWV1ZS5yZW1vdmVTdHJlYW1Db25uZWN0aW9uKCp0aGlzKTsKK30K
Kwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UoQ29ubmVj
dGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmIG1lc3NhZ2UpCit7CisgICAgeworICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2spOwor
ICAgICAgICBtX291dE9mU3RyZWFtTWVzc2FnZXMuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOwor
ICAgIH0KKyAgICBtX3dvcmtRdWV1ZS53YWtlVXAoKTsKK30KKworT3B0aW9uYWw8U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlB
cXVpcmUoKQoreworICAgIHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0
KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKTsKKyAgICBpZiAocmVjZWl2ZXJMaW1p
dCA9PSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBp
bmdUYWcpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byByZXN1bHQgPSBh
bGlnbmVkU3BhbihtX3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0KTsKKyAgICBpZiAocmVz
dWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNpemUpIHsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9
IHNoYXJlZFNlbmRlck9mZnNldCgpLmNvbXBhcmVFeGNoYW5nZVN0cm9uZyhyZWNlaXZlckxpbWl0
LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdU
YWcsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwp
OworICAgICAgICBBU1NFUlQoIShyZWNlaXZlckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKSk7CisgICAgICAgIHJlY2VpdmVy
TGltaXQgPSBjbGFtcGVkTGltaXQocmVjZWl2ZXJMaW1pdCk7CisgICAgICAgIHJlc3VsdCA9IGFs
aWduZWRTcGFuKG1fcmVjZWl2ZXJPZmZzZXQsIHJlY2VpdmVyTGltaXQpOworICAgIH0KKworICAg
IGlmIChyZXN1bHQuc2l6ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZTo6cmVsZWFzZShzaXplX3QgcmVhZFNpemUpCit7CisgICAgQVNTRVJUKHJl
YWRTaXplKTsKKyAgICByZWFkU2l6ZSA9IHN0ZDo6bWF4KHJlYWRTaXplLCBtaW5pbXVtTWVzc2Fn
ZVNpemUpOworICAgIHNpemVfdCByZWNlaXZlck9mZnNldCA9IHdyYXBPZmZzZXQoYWxpZ25PZmZz
ZXQobV9yZWNlaXZlck9mZnNldCkgKyByZWFkU2l6ZSk7CisKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBzaXplX3Qgb2xkUmVjZWl2ZXJPZmZzZXQgPSBzaGFyZWRSZWNlaXZlck9mZnNldCgpLmV4
Y2hhbmdlKHJlY2VpdmVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAv
LyBJZiB0aGUgc2VuZGVyIHdyb3RlIG92ZXIgcmVjZWl2ZXJPZmZzZXQsIGl0IG1lYW5zIHRoZSBz
ZW5kZXIgaXMgd2FpdGluZy4KKyAgICBpZiAob2xkUmVjZWl2ZXJPZmZzZXQgPT0gU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcpCisgICAgICAg
IG1fYnVmZmVyLnNlbmRlcldhaXRTZW1hcGhvcmUoKS5zaWduYWwoKTsKKyAgICBlbHNlCisgICAg
ICAgIEFTU0VSVCghKG9sZFJlY2VpdmVyT2Zmc2V0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6
cmVjZWl2ZXJPZmZzZXRTZW5kZXJJc1dhaXRpbmdUYWcpKTsKKyNlbHNlCisgICAgc2hhcmVkUmVj
ZWl2ZXJPZmZzZXQoKS5zdG9yZShyZWNlaXZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfcmVs
ZWFzZSk7CisgICAgLy8gSVBDOjpTZW1hcGhvcmUgbm90IGltcGxlbWVudGVkIGZvciB0aGUgcGxh
dGZvcm0uIENsaWVudCB3aWxsIHBvbGwgYW5kIHlpZWxkLgorI2VuZGlmCisKKyAgICBtX3JlY2Vp
dmVyT2Zmc2V0ID0gcmVjZWl2ZXJPZmZzZXQ7Cit9CisKK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlOjpTcGFuIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjphbGlnbmVkU3BhbihzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgQVNTRVJUKG9mZnNldCA8IGRhdGFTaXplKCkp
OworICAgIEFTU0VSVChsaW1pdCA8IGRhdGFTaXplKCkpOworICAgIHNpemVfdCBhbGlnbmVkID0g
YWxpZ25PZmZzZXQob2Zmc2V0KTsKKyAgICBzaXplX3QgcmVzdWx0U2l6ZSA9IDA7CisgICAgaWYg
KG9mZnNldCA8IGxpbWl0KSB7CisgICAgICAgIGlmIChvZmZzZXQgPD0gYWxpZ25lZCAmJiBhbGln
bmVkIDwgbGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1p
dCk7CisgICAgfSBlbHNlIGlmIChvZmZzZXQgPiBsaW1pdCkgeworICAgICAgICBpZiAoYWxpZ25l
ZCA+PSBvZmZzZXQgfHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9
IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0KKyAgICByZXR1cm4geyBkYXRhKCkgKyBhbGln
bmVkLCByZXN1bHRTaXplIH07Cit9CisKK3NpemVfdCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6c2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAgaWYgKG9mZnNldCA8
PSBsaW1pdCkKKyAgICAgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0OworICAgIHJldHVybiBkYXRh
U2l6ZSgpIC0gb2Zmc2V0OworfQorCitzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6
OmNsYW1wZWRMaW1pdChzaXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0Cit7CisgICAgQVNTRVJU
KHVudHJ1c3RlZExpbWl0IDwgKGRhdGFTaXplKCkgLSAxKSk7CisgICAgcmV0dXJuIHN0ZDo6bWlu
KHVudHJ1c3RlZExpbWl0LCBkYXRhU2l6ZSgpIC0gMSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NTgxYzY5MDFkNTEyNWEwNjRiYTRlM2E3MDY4ZTQyYTE5ZGY5MWJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5o
CkBAIC0wLDAgKzEsMjg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIu
aCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKKyNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVzcGFjZSBJ
UEMgeworCitjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOworCitjbGFzcyBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZT4sIHByb3RlY3RlZCBNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSk7CitwdWJs
aWM6CisgICAgflN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKCkgb3ZlcnJpZGUgPSBkZWZhdWx0
OworCisgICAgQ29ubmVjdGlvbiYgY29ubmVjdGlvbigpIHsgcmV0dXJuIG1fY29ubmVjdGlvbjsg
fQorCisgICAgZW51bSBEaXNwYXRjaFJlc3VsdCA6IGJvb2wgeworICAgICAgICBIYXNOb01lc3Nh
Z2VzLAorICAgICAgICBIYXNNb3JlTWVzc2FnZXMKKyAgICB9OworICAgIHZpcnR1YWwgRGlzcGF0
Y2hSZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KSA9IDA7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgdm9pZCBzZW5kU3lu
Y1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYmLi4uKTsKKworcHJvdGVj
dGVkOgorICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKElQQzo6Q29ubmVjdGlvbiYsIFN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImJiwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYpOworCisg
ICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpOworICAgIHZvaWQgc3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNl
aXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgLy8gTWVzc2FnZVJlY2Vp
dmVRdWV1ZQorICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoQ29ubmVjdGlvbiYsIHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPiYmKSBmaW5hbDsKKworICAgIHN0cnVjdCBTcGFuIHsKKyAgICAgICAgdWlu
dDhfdCogZGF0YTsKKyAgICAgICAgc2l6ZV90IHNpemU7CisgICAgfTsKKyAgICBPcHRpb25hbDxT
cGFuPiB0cnlBcXVpcmUoKTsKKworICAgIHZvaWQgcmVsZWFzZShzaXplX3QgcmVhZFNpemUpOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IFN0cmVhbUNv
bm5lY3Rpb25FbmNvZGVyOjptaW5pbXVtTWVzc2FnZVNpemU7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3QgbWVzc2FnZUFsaWdubWVudCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyOjptZXNz
YWdlQWxpZ25tZW50OworICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxpbWl0KTsKKyAgICBzaXplX3Qgc2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOwor
ICAgIHNpemVfdCBjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdDsKKyAg
ICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci53cmFwT2Zmc2V0KG9mZnNldCk7IH0KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9m
ZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFsaWdubWVu
dD4ob2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9CisgICAgQXRvbWljPHNpemVfdD4mIHNo
YXJlZFNlbmRlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9mZnNldCgpOyB9Cisg
ICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZm
ZXIucmVjZWl2ZXJPZmZzZXQoKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247CisgICAgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgbV93b3JrUXVldWU7CisK
KyAgICBzaXplX3QgbV9yZWNlaXZlck9mZnNldCB7IDAgfTsKKyAgICBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyIG1fYnVmZmVyOworCisgICAgTG9jayBtX291dE9mU3RyZWFtTWVzc2FnZXNMb2NrOwor
ICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4gbV9vdXRPZlN0cmVhbU1lc3NhZ2Vz
OworCisgICAgZnJpZW5kIGNsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjpzZW5kU3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsIEFyZ3VtZW50cyYm
Li4uIGFyZ3VtZW50cykKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHNlbmRpbmcgdG8gYnVm
ZmVyLgorICAgIGF1dG8gZW5jb2RlciA9IG1ha2VVbmlxdWU8SVBDOjpFbmNvZGVyPihJUEM6Ok1l
c3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5LCBzeW5jUmVxdWVzdElEKTsKKyAgICAoKmVuY29k
ZXIgPDwgLi4uIDw8IGFyZ3VtZW50cyk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5
KFdURk1vdmUoZW5jb2RlcikpOworfQorCisvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHJlcHJl
c2VudHMgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBzdHJlYW0gc2VuZGVyIGFuZCByZWNlaXZlciwg
YXMgdXNlZCBieSB0aGUgcmVjZWl2ZXIuCisvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uOgorLy8g
ICogSG9sZHMgdGhlIG1lc3NhZ2VzIHRvd2FyZHMgdGhlIHJlY2VpdmVyLgorLy8gICogU2VuZHMg
dGhlIHJlcGxpZXMgYmFjayB0byB0aGUgc2VuZGVyIHZpYSB0aGUgc3RyZWFtIG9yIG5vcm1hbCBD
b25uZWN0aW9uIGZhbGxiYWNrLgorLy8KKy8vIFJlY2VpdmVyIHRlbXBsYXRlIGNvbnRyYWN0Ogor
Ly8gICB2b2lkIGRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlJiwgRGVjb2RlciYpOworLy8KKy8vIFRoZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGRvZXMg
bm90IHRydXN0IHRoZSBTdHJlYW1DbGllbnRDb25uZWN0aW9uLgordGVtcGxhdGU8dHlwZW5hbWUg
UmVjZWl2ZXI+CitjbGFzcyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFN0cmVh
bVNlcnZlckNvbm5lY3Rpb24+IGNyZWF0ZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1D
b25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtQnVmZmVyLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
JiB3b3JrUXVldWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUoc3RyZWFtQnVmZmVyKSwgd29ya1F1
ZXVlKSk7CisgICAgfQorICAgIH5TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWwgPSBkZWZh
dWx0OworCisgICAgdm9pZCBzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyJiwgUmVjZWl2
ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICAvLyBTdG9wcyB0aGUgbWVzc2Fn
ZSByZWNlaXB0LiBOb3RlOiBhbHJlYWR5IHJlY2VpdmVkIG1lc3NhZ2VzIG1pZ2h0IHN0aWxsIGJl
IGRlbGl2ZXJlZC4KKyAgICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUs
IHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCisgICAgLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2Ugb3ZlcnJpZGVzLgorICAgIERpc3BhdGNoUmVzdWx0IGRpc3BhdGNoU3RyZWFtTWVzc2Fn
ZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyJiYgc3RyZWFtQnVmZmVyLCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJiB3b3JrUXVldWUp
CisgICAgICAgIDogU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoY29ubmVjdGlvbiwgV1RGTW92
ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpCisgICAgeworICAgIH0KKyAgICBib29sIHByb2Nl
c3NTZXRTdHJlYW1EZXN0aW5hdGlvbklEKERlY29kZXImJiwgUmVmUHRyPFJlY2VpdmVyPiYgY3Vy
cmVudFJlY2VpdmVyKTsKKyAgICBib29sIGRpc3BhdGNoU3RyZWFtTWVzc2FnZShEZWNvZGVyJiYs
IFJlY2VpdmVyJik7CisgICAgYm9vbCBkaXNwYXRjaE91dE9mU3RyZWFtTWVzc2FnZShEZWNvZGVy
JiYpOworICAgIExvY2sgbV9yZWNlaXZlcnNMb2NrOworICAgIHVzaW5nIFJlY2VpdmVyc01hcCA9
IEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQ2NF90PiwgUmVmPFJlY2VpdmVyPj47Cisg
ICAgUmVjZWl2ZXJzTWFwIG1fcmVjZWl2ZXJzOworCisgICAgdWludDY0X3QgbV9jdXJyZW50RGVz
dGluYXRpb25JRCA9IDA7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK3ZvaWQg
U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMo
UmVjZWl2ZXImIHJlY2VpdmVyLCBSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKQoreworICAgIHsKKyAgICAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFp
cihzdGF0aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsKKyAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICBB
U1NFUlQoIW1fcmVjZWl2ZXJzLmNvbnRhaW5zKGtleSkpOworICAgICAgICBtX3JlY2VpdmVycy5h
ZGQoa2V5LCBtYWtlUmVmKHJlY2VpdmVyKSk7CisgICAgfQorICAgIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlOjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzSW1wbChyZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK3ZvaWQgU3RyZWFt
U2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZl
ck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIFN0cmVh
bVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKHJlY2VpdmVy
TmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0
aWNfY2FzdDx1aW50OF90PihyZWNlaXZlck5hbWUpLCBkZXN0aW5hdGlvbklEKTsKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgQVNTRVJUKG1fcmVjZWl2
ZXJzLmNvbnRhaW5zKGtleSkpOworICAgIG1fcmVjZWl2ZXJzLnJlbW92ZShrZXkpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK1N0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpE
aXNwYXRjaFJlc3VsdCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hT
dHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KQoreworICAgIFJlZlB0cjxSZWNlaXZl
cj4gY3VycmVudFJlY2VpdmVyOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgV1RGOjppc1ZhbGlk
KFJlY2VpdmVyTmFtZSkuCisgICAgdWludDhfdCBjdXJyZW50UmVjZWl2ZXJOYW1lID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oUmVjZWl2ZXJOYW1lOjpJbnZhbGlkKTsKKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbWVzc2FnZUxpbWl0OyArK2kpIHsKKyAgICAgICAgYXV0byBzcGFuID0gdHJ5
QXF1aXJlKCk7CisgICAgICAgIGlmICghc3BhbikKKyAgICAgICAgICAgIHJldHVybiBEaXNwYXRj
aFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgSVBDOjpEZWNvZGVyIGRlY29kZXIgeyBz
cGFuLT5kYXRhLCBzcGFuLT5zaXplLCBtX2N1cnJlbnREZXN0aW5hdGlvbklEIH07CisgICAgICAg
IGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlz
cGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAg
fQorICAgICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpTZXRT
dHJlYW1EZXN0aW5hdGlvbklEKSB7CisgICAgICAgICAgICBpZiAoIXByb2Nlc3NTZXRTdHJlYW1E
ZXN0aW5hdGlvbklEKFdURk1vdmUoZGVjb2RlciksIGN1cnJlbnRSZWNlaXZlcikpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUo
KSA9PSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSkgeworICAgICAgICAg
ICAgaWYgKCFkaXNwYXRjaE91dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3VycmVudFJlY2VpdmVy
TmFtZSAhPSBzdGF0aWNfY2FzdDx1aW50OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkpIHsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50
OF90PihkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisgICAgICAgICAgICBjdXJyZW50
UmVjZWl2ZXIgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIGlmICghY3VycmVudFJlY2Vp
dmVyKSB7CisgICAgICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KGN1cnJlbnRSZWNlaXZlck5hbWUpLCBtX2N1cnJlbnREZXN0aW5hdGlvbklEKTsK
KyAgICAgICAgICAgIGlmICghUmVjZWl2ZXJzTWFwOjppc1ZhbGlkS2V5KGtleSkpIHsKKyAgICAg
ICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNo
UmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICAgICAgY3VycmVudFJl
Y2VpdmVyID0gbV9yZWNlaXZlcnMuZ2V0KGtleSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFj
dXJyZW50UmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIC8vIFZhbGlkIHNjZW5hcmlvIGlzIHdoZW4g
cmVjZWl2ZXIgaGFzIGJlZW4gcmVtb3ZlZCwgYnV0IHRoZXJlIGFyZSBtZXNzYWdlcyBmb3IgaXQg
aW4gdGhlIGJ1ZmZlci4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaW5jZSB3ZSBkbyBub3QgaGF2
ZSBhIHJlY2VpdmVyLCB3ZSBkb24ndCBrbm93IGhvdyB0byBkZWNvZGUgdGhlIG1lc3NhZ2UuCisg
ICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIG11c3QgdGltZW91dCBldmVyeSByZWNlaXZlciBp
biB0aGUgc3RyZWFtIGNvbm5lY3Rpb24uCisgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2UgYXNz
ZXJ0IHRoYXQgdGhlIHJlY2VpdmVycyBhcmUgZW1wdHksIGFzIHdlIG9ubHkgaGF2ZSB1cCB0byBv
bmUgcmVjZWl2ZXIgaW4KKyAgICAgICAgICAgIC8vIGEgc3RyZWFtIGNvbm5lY3Rpb24gdW50aWwg
cG9zc2liaWxpdHkgb2Ygc2tpcHBpbmcgaXMgaW1wbGVtZW50ZWQgcHJvcGVybHkuCisgICAgICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgICAg
ICBBU1NFUlQobV9yZWNlaXZlcnMuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiBEaXNw
YXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWRpc3Bh
dGNoU3RyZWFtTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpLCAqY3VycmVudFJlY2VpdmVyKSkKKyAg
ICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICB9Cisg
ICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNNb3JlTWVzc2FnZXM7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6cHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoRGVjb2RlciYmIGRlY29kZXIsIFJlZlB0
cjxSZWNlaXZlcj4mIGN1cnJlbnRSZWNlaXZlcikKK3sKKyAgICB1aW50NjRfdCBkZXN0aW5hdGlv
bklEID0gMDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlc3RpbmF0aW9uSUQpKSB7CisgICAg
ICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAo
bV9jdXJyZW50RGVzdGluYXRpb25JRCAhPSBkZXN0aW5hdGlvbklEKSB7CisgICAgICAgIG1fY3Vy
cmVudERlc3RpbmF0aW9uSUQgPSBkZXN0aW5hdGlvbklEOworICAgICAgICBjdXJyZW50UmVjZWl2
ZXIgPSBudWxscHRyOworICAgIH0KKyAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBv
c2l0aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNl
aXZlcj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoU3Ry
ZWFtTWVzc2FnZShEZWNvZGVyJiYgZGVjb2RlciwgUmVjZWl2ZXImIHJlY2VpdmVyKQoreworICAg
IHJlY2VpdmVyLmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKCp0aGlzLCBkZWNvZGVyKTsKKyAgICBp
ZiAoIWRlY29kZXIuaXNWYWxpZCgpKSB7CisgICAgICAgIG1fY29ubmVjdGlvbi0+ZGlzcGF0Y2hE
aWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBv
c2l0aW9uKCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNl
aXZlcj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoT3V0
T2ZTdHJlYW1NZXNzYWdlKERlY29kZXImJiBkZWNvZGVyKQoreworICAgIHN0ZDo6dW5pcXVlX3B0
cjxEZWNvZGVyPiBtZXNzYWdlOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX291dE9mU3RyZWFtTWVzc2FnZXNMb2NrKTsKKyAgICAgICAgaWYgKG1fb3V0T2ZTdHJlYW1N
ZXNzYWdlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1l
c3NhZ2UgPSBtX291dE9mU3RyZWFtTWVzc2FnZXMudGFrZUZpcnN0KCk7CisgICAgfQorICAgIGlm
ICghbWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPFJlY2VpdmVy
PiByZWNlaXZlcjsKKyAgICB7CisgICAgICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3Rh
dGljX2Nhc3Q8dWludDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgbWVzc2Fn
ZS0+ZGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Jl
Y2VpdmVyc0xvY2spOworICAgICAgICByZWNlaXZlciA9IG1fcmVjZWl2ZXJzLmdldChrZXkpOwor
ICAgIH0KKyAgICBpZiAocmVjZWl2ZXIpIHsKKyAgICAgICAgcmVjZWl2ZXItPmRpZFJlY2VpdmVT
dHJlYW1NZXNzYWdlKCp0aGlzLCAqbWVzc2FnZSk7CisgICAgICAgIGlmICghbWVzc2FnZS0+aXNW
YWxpZCgpKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIC8vIElmIHJlY2VpdmVyIGRvZXMgbm90IGV4
aXN0IGlmIGl0IGhhcyBiZWVuIHJlbW92ZWQgYnV0IG1lc3NhZ2VzIGFyZSBzdGlsbCBwZW5kaW5n
IHRvIGJlCisgICAgLy8gcHJvY2Vzc2VkLiBJdCdzIG9rIHRvIHNraXAgc3VjaCBtZXNzYWdlcy4K
KyAgICAvLyBGSVhNRTogTm90ZSwgY29ycmVzcG9uZGluZyBza2lwIGlzIG5vdCBwb3NzaWJsZSBh
dCB0aGUgbW9tZW50IGZvciBzdHJlYW0gbWVzc2FnZXMuCisgICAgcmVsZWFzZShkZWNvZGVyLmN1
cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmgKaW5kZXggNzg1NGZhOGYxODY4
ZmI4ZTQ1NjIyODlmZGRmNmYyNzk1YWYyZDkwZC4uODNkOTlmMGNiYzhmZTA0ODIwYjQ3ODNjOWMw
NzZhYjU3YTNlYWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29j
b2EvTWFjaFBvcnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNo
UG9ydC5oCkBAIC0yNSw5ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgogI2luY2x1ZGUgIkF0dGFjaG1lbnQuaCIKLSNpbmNsdWRlICJEZWNvZGVy
LmgiCi0jaW5jbHVkZSAiRW5jb2Rlci5oIgogCiBuYW1lc3BhY2UgSVBDIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwCmluZGV4IDVhZGZk
ODJiZWNhNDZkYjAyNDQ3ZThiY2I2ZDM4NGMyYzAxNTZhNjAuLjkwYjgwMmM4MDk2ZDc2YzMyYjRi
OTdmYjgxMmVhZjkxZmYxMzNlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy93aW4vQ29ubmVjdGlvbldpbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVy
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIu
aD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCBkNTQzMDIyNzUzYWRmMzE5MzYyNDBjZjJhNDhmNTFiNzIz
OWQ1ZWM1Li40MGNmMzgwODhhYTc0YThjMWQ5YzhiYmU4Y2Q5ZWQwNzMzYmVlYTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTI0LDggKzI0LDkgQEAgaW1w
b3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIAorZnJvbSBtb2RlbCBpbXBv
cnQgTWVzc2FnZVJlY2VpdmVyLCBNZXNzYWdlCiBmcm9tIHdlYmtpdCBpbXBvcnQgcGFyc2VyCi1m
cm9tIHdlYmtpdC5tb2RlbCBpbXBvcnQgQlVJTFRJTl9BVFRSSUJVVEUsIEFTWU5DX0FUVFJJQlVU
RSwgU1lOQ0hST05PVVNfQVRUUklCVVRFLCBNQUlOVEhSRUFEQ0FMTEJBQ0tfQVRUUklCVVRFCitm
cm9tIHdlYmtpdC5tb2RlbCBpbXBvcnQgQlVJTFRJTl9BVFRSSUJVVEUsIEFTWU5DX0FUVFJJQlVU
RSwgU1lOQ0hST05PVVNfQVRUUklCVVRFLCBNQUlOVEhSRUFEQ0FMTEJBQ0tfQVRUUklCVVRFLCBT
VFJFQU1fQVRUUklCVVRFLCBXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURQogCiBfbGljZW5zZV9o
ZWFkZXIgPSAiIiIvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgpAQCAtNTMsMTMgKzU0LDExIEBAIF9saWNlbnNlX2hlYWRlciA9ICIi
Ii8qCiAKICIiIgogCi1XQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rp
b24nCiBXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSA9ICdXYW50c0Rpc3BhdGNoTWVz
c2FnZScKIFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFID0gJ1dhbnRzQXN5
bmNEaXNwYXRjaE1lc3NhZ2UnCiBMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFID0gJ0xlZ2FjeVJl
Y2VpdmVyJwogTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFID0gJ05vdFJlZkNvdW50
ZWQnCiAKLQogZGVmIHJlY2VpdmVyX2VudW1lcmF0b3Jfb3JkZXJfa2V5KHJlY2VpdmVyX25hbWUp
OgogICAgIGlmIHJlY2VpdmVyX25hbWUgPT0gJ0lQQyc6CiAgICAgICAgIHJldHVybiAxCkBAIC0y
MTMsNyArMjEyLDcgQEAgZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKHJlY2VpdmVy
LCBtZXNzYWdlKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVh
ZDo6TWFpblRocmVhZDtcbicpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNhbGxiYWNrVGhyZWFkID0gV1RGOjpDb21w
bGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6OkNvbnN0cnVjdGlvblRocmVhZDtcbicpCi0gICAgICAg
IGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3Nh
Z2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpOgorICAgICAgICBpZiAobWVzc2FnZS5o
YXNfYXR0cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmli
dXRlKEFTWU5DX0FUVFJJQlVURSkpIGFuZCBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJF
QU1fQVRUUklCVVRFKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgdm9p
ZCBzZW5kKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiYsIElQQzo6Q29ubmVjdGlvbiYn
KQogICAgICAgICAgICAgaWYgbGVuKHNlbmRfcGFyYW1ldGVycyk6CiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnLCAlcycgJSBjb21wbGV0aW9uX2hhbmRsZXJfcGFyYW1ldGVycykKQEAg
LTI2MSw2ICsyNjAsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJl
ZCgpOgogICAgIHJldHVybiBmcm96ZW5zZXQoWwogICAgICAgICAnSVBDOjpEYXRhUmVmZXJlbmNl
JywKICAgICAgICAgJ0lQQzo6Rm9udFJlZmVyZW5jZScsCisgICAgICAgICdJUEM6OlNlbWFwaG9y
ZScsCiAgICAgICAgICdNYWNoU2VuZFJpZ2h0JywKICAgICAgICAgJ01lZGlhVGltZScsCiAgICAg
ICAgICdTdHJpbmcnLApAQCAtNTczLDEwICs1NzMsMTUgQEAgZGVmIHN5bmNfbWVzc2FnZV9zdGF0
ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgICAgICBkaXNwYXRjaF9mdW5jdGlvbiArPSAn
QXN5bmMnCiAKICAgICB3YW50c19jb25uZWN0aW9uID0gbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZ
TkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFdBTlRTX0NPTk5F
Q1RJT05fQVRUUklCVVRFKQorICAgIG1heWJlX3JlcGx5X2VuY29kZXIgPSAiLCAqcmVwbHlFbmNv
ZGVyIgorICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6Cisg
ICAgICAgIG1heWJlX3JlcGx5X2VuY29kZXIgPSAnJworICAgIGVsaWYgbWVzc2FnZS5oYXNfYXR0
cmlidXRlKFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFT
WU5DX0FUVFJJQlVURSk6CisgICAgICAgIG1heWJlX3JlcGx5X2VuY29kZXIgPSAnLCByZXBseUVu
Y29kZXInCiAKICAgICByZXN1bHQgPSBbXQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjolczo6JXM6Om5hbWUoKSkge1xuJyAlIChy
ZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUpKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAg
SVBDOjolczxNZXNzYWdlczo6JXM6OiVzPiglc2RlY29kZXIsICVzcmVwbHlFbmNvZGVyLCB0aGlz
LCAmJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5u
YW1lLCAnY29ubmVjdGlvbiwgJyBpZiB3YW50c19jb25uZWN0aW9uIGVsc2UgJycsICcnIGlmIG1l
c3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFz
X2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJVVEUpIGVsc2UgJyonLCBoYW5kbGVyX2Z1bmN0aW9uKHJl
Y2VpdmVyLCBtZXNzYWdlKSkpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBJUEM6OiVzPE1l
c3NhZ2VzOjolczo6JXM+KCVzZGVjb2RlciVzLCB0aGlzLCAmJXMpO1xuJyAlIChkaXNwYXRjaF9m
dW5jdGlvbiwgcmVjZWl2ZXIubmFtZSwgbWVzc2FnZS5uYW1lLCAnY29ubmVjdGlvbiwgJyBpZiB3
YW50c19jb25uZWN0aW9uIGVsc2UgJycsIG1heWJlX3JlcGx5X2VuY29kZXIsIGhhbmRsZXJfZnVu
Y3Rpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpKSkKICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJl
dHVybjtcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCiAgICAgcmV0dXJuIHN1cnJv
dW5kX2luX2NvbmRpdGlvbignJy5qb2luKHJlc3VsdCksIG1lc3NhZ2UuY29uZGl0aW9uKQpAQCAt
ODc3LDcgKzg4Miw3IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgog
ICAgICAgICBpZiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZSBhbmQgKG1lc3NhZ2Uu
aGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJp
YnV0ZShBU1lOQ19BVFRSSUJVVEUpKToKICAgICAgICAgICAgIGRlbGF5ZWRfb3JfYXN5bmNfbWVz
c2FnZXMuYXBwZW5kKG1lc3NhZ2UpCiAKLSAgICBpZiBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2Vz
OgorICAgIGlmIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXMgYW5kIG5vdCByZWNlaXZlci5oYXNf
YXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCduYW1l
c3BhY2UgTWVzc2FnZXMge1xuXG5uYW1lc3BhY2UgJXMge1xuXG4nICUgcmVjZWl2ZXIubmFtZSkK
IAogICAgICAgICBmb3IgbWVzc2FnZSBpbiBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzOgpAQCAt
OTI1LDI1ICs5MzAsNDQgQEAgZGVmIGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6
CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2Fn
ZSkKIAotICAgIGlmIGFzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FO
VFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUo
V0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgotICAgICAgICByZXN1bHQu
YXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNl
aXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJ
QlVURSkgZWxzZSAnJykpCisgICAgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRU
UklCVVRFKToKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN0cmVh
bU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgne1xuJykKLSAgICAgICAgaWYgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTk9U
X1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKToKKyAgICAgICAgYXNzZXJ0KHJlY2VpdmVy
Lmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKSkKKyAgICAg
ICAgYXNzZXJ0KG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NB
R0VfQVRUUklCVVRFKSkKKyAgICAgICAgYXNzZXJ0KG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRl
KFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSkKKworICAgICAgICByZXN1
bHQgKz0gW2FzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3IgbWVz
c2FnZSBpbiBhc3luY19tZXNzYWdlc10KKyAgICAgICAgcmVzdWx0ICs9IFtzeW5jX21lc3NhZ2Vf
c3RhdGVtZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3IgbWVzc2FnZSBpbiBzeW5jX21lc3NhZ2Vz
XQorCisgICAgICAgIGlmIChyZWNlaXZlci5zdXBlcmNsYXNzKToKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xhc3MpKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTtcbicpCisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pO1xuJykK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTtcbicp
CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCisgICAgZWxpZiBhc3luY19tZXNzYWdlcyBv
ciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRF
KSBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENIX01FU1NBR0Vf
QVRUUklCVVRFKToKKyAgICAgICAgcmVjZWl2ZV92YXJpYW50ID0gcmVjZWl2ZXIubmFtZSBpZiBy
ZWNlaXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVj
ZWl2ZXIubmFtZSwgcmVjZWl2ZV92YXJpYW50KSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgne1xu
JykKKyAgICAgICAgaWYgbm90IChyZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVE
X1JFQ0VJVkVSX0FUVFJJQlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRU
UklCVVRFKSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgYXV0byBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyk7XG4nKQogCiAgICAgICAgIHJlc3VsdCArPSBbYXN5bmNfbWVz
c2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIGFzeW5jX21l
c3NhZ2VzXQorCiAgICAgICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFU
Q0hfTUVTU0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZ
TkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIGlmIChkaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlcikpXG4nKQogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQogICAgICAgICBpZiAo
cmVjZWl2ZXIuc3VwZXJjbGFzcyk6Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJXM6
OmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAlIChyZWNlaXZlci5z
dXBlcmNsYXNzKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2
ZSVzTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFz
cywgcmVjZWl2ZV92YXJpYW50KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7XG4nKQogICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTtcbicpCiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQogICAgICAgICByZXN1
bHQuYXBwZW5kKCd9XG4nKQogCi0gICAgaWYgc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNf
YXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKKyAgICBpZiBub3Qg
cmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKSBhbmQgKHN5bmNfbWVzc2Fn
ZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJ
QlVURSkpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCdcbicpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmVTeW5jJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYgcmVwbHlFbmNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlci5uYW1lIGlm
IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAn
JykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0LnB5IGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQppbmRleCA0OGQ4ZTFiNjI3Y2MzMWIx
OGZhMWM1MGZhYmVlZWQ5NzFiZDE1YmU5Li5lODllMTdlMTQwN2I1YjU2NmJjMTkyYzQwYTk5YTI4
ZDhiZjhkY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzX3VuaXR0ZXN0LnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXNfdW5pdHRlc3QucHkKQEAgLTQ2LDYgKzQ2LDggQEAgX3Rlc3RfcmVjZWl2ZXJfbmFtZXMgPSBb
CiAgICAgJ1Rlc3RXaXRoSWZNZXNzYWdlJywKICAgICAnVGVzdFdpdGhTZW1hcGhvcmUnLAogICAg
ICdUZXN0V2l0aEltYWdlRGF0YScsCisgICAgJ1Rlc3RXaXRoU3RyZWFtJywKKyAgICAnVGVzdFdp
dGhTdHJlYW1CdWZmZXInCiBdCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tb2RlbC5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkK
aW5kZXggNDgwMGZhNGVmY2E5Njc4YTg5YWZjN2U0MzRmMjZiMzQ2Y2U4Y2Y2Yy4uNTA3ZTA0MmE1
NzdmZjhhMDIzMzcyYzNhNjA3YWIxMDhhNWZhOTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21vZGVsLnB5CkBAIC0yOCw2ICsyOCw4IEBAIEJVSUxUSU5fQVRUUklCVVRFID0gIkJ1aWx0
aW4iCiBBU1lOQ19BVFRSSUJVVEUgPSAiQXN5bmMiCiBNQUlOVEhSRUFEQ0FMTEJBQ0tfQVRUUklC
VVRFID0gIk1haW5UaHJlYWRDYWxsYmFjayIKIFNZTkNIUk9OT1VTX0FUVFJJQlVURSA9ICdTeW5j
aHJvbm91cycKK1NUUkVBTV9BVFRSSUJVVEUgPSAiU3RyZWFtIgorV0FOVFNfQ09OTkVDVElPTl9B
VFRSSUJVVEUgPSAnV2FudHNDb25uZWN0aW9uJwogCiBjbGFzcyBNZXNzYWdlUmVjZWl2ZXIob2Jq
ZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgc3VwZXJjbGFzcywgYXR0cmlidXRl
cywgbWVzc2FnZXMsIGNvbmRpdGlvbik6CkBAIC03Myw3ICs3NSw5IEBAIGlwY19yZWNlaXZlciA9
IE1lc3NhZ2VSZWNlaXZlcihuYW1lPSJJUEMiLCBzdXBlcmNsYXNzPU5vbmUsIGF0dHJpYnV0ZXM9
W0JVSUxUSU5fCiAgICAgTWVzc2FnZSgnV3JhcHBlZEFzeW5jTWVzc2FnZUZvclRlc3RpbmcnLCBb
XSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFLCBTWU5DSFJPTk9VU19BVFRSSUJV
VEVdLCBjb25kaXRpb249Tm9uZSksCiAgICAgTWVzc2FnZSgnU3luY01lc3NhZ2VSZXBseScsIFtd
LCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSksCiAg
ICAgTWVzc2FnZSgnSW5pdGlhbGl6ZUNvbm5lY3Rpb24nLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JV
SUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPSJQTEFURk9STShDT0NPQSkiKSwKLSAgICBNZXNz
YWdlKCdMZWdhY3lTZXNzaW9uU3RhdGUnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRU
UklCVVRFXSwgY29uZGl0aW9uPU5vbmUpCisgICAgTWVzc2FnZSgnTGVnYWN5U2Vzc2lvblN0YXRl
JywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25l
KSwKKyAgICBNZXNzYWdlKCdTZXRTdHJlYW1EZXN0aW5hdGlvbklEJywgW10sIFtdLCBhdHRyaWJ1
dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKKyAgICBNZXNzYWdlKCdQ
cm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlJywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FU
VFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKQogXSwgY29uZGl0aW9uPU5vbmUpCiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKaW5kZXggMjFiMzBhZTIwZmEx
MDMzZmE2NjRlMDNhZGJkODgwODZhNmM3MmM0Mi4uZTE5N2JkM2MyNjdhZTQxMWE0NTAwZDBmZjY5
Mzk4NjAzYTQ1MDgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9NYWtlZmlsZQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01h
a2VmaWxlCkBAIC02LDYgKzYsOCBAQCBURVNUUyA9IFwKICAgICBUZXN0V2l0aElmTWVzc2FnZSBc
CiAgICAgVGVzdFdpdGhTZW1hcGhvcmUgXAogICAgIFRlc3RXaXRoSW1hZ2VEYXRhIFwKKwlUZXN0
V2l0aFN0cmVhbSBcCisJVGVzdFdpdGhTdHJlYW1CdWZmZXIgXAogIwogCiBhbGw6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKaW5k
ZXggN2Q1YWZjOTE4ZTViMDViOGY3YTVjZDYyMzg1MmI1YzBlMGMxOGEwMy4uMmU3Y2ExNWU3NGVi
YmRhODZjNzlmOGZjMGI4ZjM4YjRiNWY3NTg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcApAQCAtMTM0LDYgKzEzNCwxMCBA
QCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbihNZXNzYWdlTmFtZSBuYW1lKQogICAgICAgICByZXR1
cm4gIkluaXRpYWxpemVDb25uZWN0aW9uIjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpMZWdhY3lT
ZXNzaW9uU3RhdGU6CiAgICAgICAgIHJldHVybiAiTGVnYWN5U2Vzc2lvblN0YXRlIjsKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlOgorICAgICAgICByZXR1
cm4gIlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlNl
dFN0cmVhbURlc3RpbmF0aW9uSUQ6CisgICAgICAgIHJldHVybiAiU2V0U3RyZWFtRGVzdGluYXRp
b25JRCI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VSZXBseToKICAgICAgICAg
cmV0dXJuICJTeW5jTWVzc2FnZVJlcGx5IjsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0
aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVJlcGx5OgpAQCAtMjI0LDYgKzIyOCw4IEBAIFJl
Y2VpdmVyTmFtZSByZWNlaXZlck5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiAgICAgICAg
IHJldHVybiBSZWNlaXZlck5hbWU6OlRlc3RXaXRob3V0QXR0cmlidXRlczsKICAgICBjYXNlIE1l
c3NhZ2VOYW1lOjpJbml0aWFsaXplQ29ubmVjdGlvbjoKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpM
ZWdhY3lTZXNzaW9uU3RhdGU6CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6UHJvY2Vzc091dE9mU3Ry
ZWFtTWVzc2FnZToKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklE
OgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHk6CiAgICAgICAgIHJldHVy
biBSZWNlaXZlck5hbWU6OklQQzsKICAgICBjYXNlIE1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN1cGVy
Y2xhc3NfVGVzdEFzeW5jTWVzc2FnZVJlcGx5OgpAQCAtNDAxLDYgKzQwNywxMCBAQCBib29sIGlz
VmFsaWRNZXNzYWdlTmFtZShNZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICNlbmRpZgogICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1lOjpMZWdhY3lTZXNzaW9uU3RhdGUpCiAg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VO
YW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRp
b25JRCkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6
TWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9NZXNzYWdlTmFtZXMuaAppbmRleCBlZmVhMjMwMmQ2ODdiZTRmNTIyNjkwZjc4YTNj
NjRmNjM2ZTMxZmQ4Li5hMjJiZDFjZmQ3ZjczYmU5ZWFiMWNiYmMwZmYwYzZlZjA2YTA2NDA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1l
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVz
LmgKQEAgLTkzLDYgKzkzLDggQEAgZW51bSBjbGFzcyBNZXNzYWdlTmFtZSA6IHVpbnQxNl90IHsK
ICAgICAsIFRlc3RXaXRob3V0QXR0cmlidXRlc19Ub3VjaEV2ZW50CiAgICAgLCBJbml0aWFsaXpl
Q29ubmVjdGlvbgogICAgICwgTGVnYWN5U2Vzc2lvblN0YXRlCisgICAgLCBQcm9jZXNzT3V0T2ZT
dHJlYW1NZXNzYWdlCisgICAgLCBTZXRTdHJlYW1EZXN0aW5hdGlvbklECiAgICAgLCBTeW5jTWVz
c2FnZVJlcGx5CiAgICAgLCBUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVJlcGx5
CiAgICAgLCBUZXN0V2l0aFN1cGVyY2xhc3NfVGVzdEFzeW5jTWVzc2FnZVdpdGhDb25uZWN0aW9u
UmVwbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVz
dFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkMGY1MjhjNjljZGVm
ZGRhOWM0ODY3OTEzOGM2MzhiOGFjMGNiMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtLm1lc3NhZ2VzLmluCkBAIC0w
LDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBU
ZXN0cyBTdHJlYW0gcmVjZWl2ZXIgYXR0cmlidXRlLgorbWVzc2FnZXMgLT4gVGVzdFdpdGhTdHJl
YW0gTm90UmVmQ291bnRlZCBTdHJlYW0geworICAgIHZvaWQgU2VuZFN0cmluZyhTdHJpbmcgdXJs
KQorICAgIHZvaWQgU2VuZFN0cmluZ1N5bmNocm9uaXplZChTdHJpbmcgdXJsKSAtPiAoaW50NjRf
dCByZXR1cm4pCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlci5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xMTcwYWM4OWEyNWYwMzkyMTlmZTQxODEwNWIyYzFkMDRhZTBjN2U4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVh
bUJ1ZmZlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVGVzdHMgU3RyZWFtIHJlY2VpdmVyIGF0dHJpYnV0ZS4K
K21lc3NhZ2VzIC0+IFRlc3RXaXRoU3RyZWFtQnVmZmVyICB7CisgICAgdm9pZCBTZW5kU3RyZWFt
QnVmZmVyKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBzdHJlYW0pCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVy
TWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5Yzky
NDBhNGViMWFiNTU3NDA5NjAyMjkxZGMxMjczMTk4N2YwNTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVz
c2FnZVJlY2VpdmVyLmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVmZmVyLmgiCisKKyNp
bmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUg
IlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbUJ1ZmZl
ck1lc3NhZ2VzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFRlc3RXaXRoU3RyZWFt
QnVmZmVyOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKTsKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0
V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcjo6bmFtZSgpKSB7CisgICAgICAgIElQ
Qzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6OlNlbmRTdHJl
YW1CdWZmZXI+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6c2VuZFN0cmVh
bUJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgVU5VU0VEX1BBUkFNKGNvbm5l
Y3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaCBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJN
ZXNzYWdlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhMjRlYmRkMjAwZjMzOTA0NzdkZmFmN2NkODU3MTkxYmQ1
M2IyODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaApAQCAtMCwwICsxLDY4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisg
KiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNp
bmNsdWRlICJUZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBJUEMgeworY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjsKK30KKworbmFt
ZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbUJ1ZmZlciB7CisKK3N0
YXRpYyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCit7Cisg
ICAgcmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjsKK30KKwor
Y2xhc3MgU2VuZFN0cmVhbUJ1ZmZlciB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0g
c3RkOjp0dXBsZTxjb25zdCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImPjsKKworICAgIHN0
YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpU
ZXN0V2l0aFN0cmVhbUJ1ZmZlcl9TZW5kU3RyZWFtQnVmZmVyOyB9CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBTZW5kU3RyZWFtQnVmZmVyKGNv
bnN0IElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYgc3RyZWFtKQorICAgICAgICA6IG1fYXJn
dW1lbnRzKHN0cmVhbSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1
bWVudHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBUZXN0V2l0aFN0cmVhbUJ1ZmZlcgorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1C
dWZmZXJNZXNzYWdlc1JlcGxpZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVz
dHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2Zh
MmFkN2Q1MDYzMDBmM2NjYjM5MGYxOTcyNTlkOTBlNjkzZjMzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1l
c3NhZ2VzUmVwbGllcy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBUZXN0V2l0aFN0cmVh
bUJ1ZmZlciB7CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIKK30gLy8g
bmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgzOTg4NTVhZDU2ZTk1MTk5N2M5ZDJhYjNmODg4MDk0Yzg4OTIzMjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RX
aXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtLmgi
CisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNp
bmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1NZXNzYWdl
cy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordm9pZCBUZXN0V2l0aFN0cmVhbTo6ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RX
aXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNz
YWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZz4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRoU3RyZWFtOjpzZW5kU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6
U2VuZFN0cmluZ1N5bmNocm9uaXplZDo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVz
c2FnZTxNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQ+KGRl
Y29kZXIsIHRoaXMsICZUZXN0V2l0aFN0cmVhbTo6c2VuZFN0cmluZ1N5bmNocm9uaXplZCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgVU5VU0VEX1BBUkFNKGRlY29kZXIpOworICAgIFVO
VVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkw
YmZlYmFiMjM3MmMxZjY2MDVjNTU4OTQ1OTM4YmYxZTRlN2FhZmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2Fn
ZXMuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbU1lc3NhZ2Vz
UmVwbGllcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKwor
bmFtZXNwYWNlIE1lc3NhZ2VzIHsKK25hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbSB7CisKK3N0YXRp
YyBpbmxpbmUgSVBDOjpSZWNlaXZlck5hbWUgbWVzc2FnZVJlY2VpdmVyTmFtZSgpCit7CisgICAg
cmV0dXJuIElQQzo6UmVjZWl2ZXJOYW1lOjpUZXN0V2l0aFN0cmVhbTsKK30KKworY2xhc3MgU2Vu
ZFN0cmluZyB7CitwdWJsaWM6CisgICAgdXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25z
dCBTdHJpbmcmPjsKKworICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVy
biBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0V2l0aFN0cmVhbV9TZW5kU3RyaW5nOyB9CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CisKKyAgICBleHBsaWNpdCBTZW5kU3RyaW5n
KGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1lbnRzKHVybCkKKyAgICB7Cisg
ICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBcmd1bWVu
dHMgbV9hcmd1bWVudHM7Cit9OworCitjbGFzcyBTZW5kU3RyaW5nU3luY2hyb25pemVkIHsKK3B1
YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+Owor
CisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2Fn
ZU5hbWU6OlRlc3RXaXRoU3RyZWFtX1NlbmRTdHJpbmdTeW5jaHJvbml6ZWQ7IH0KKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc1N5bmMgPSB0cnVlOworCisgICAgdXNpbmcgUmVwbHkgPSBzdGQ6OnR1
cGxlPGludDY0X3QmPjsKKyAgICB1c2luZyBSZXBseUFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8aW50
NjRfdD47CisgICAgZXhwbGljaXQgU2VuZFN0cmluZ1N5bmNocm9uaXplZChjb25zdCBTdHJpbmcm
IHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKworICAgIGNv
bnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0KK30gLy8gbmFtZXNwYWNlIE1l
c3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJj
NWEwNzhkZTAxZWMxNDMwZjg5NGYyMGNiOWMyZjkxNTVlN2NhYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdl
c1JlcGxpZXMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
ICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorCisKK25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0gewor
CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKaW5kZXggZjliYTVkYzc4MjRiMWU1YjAzZTUzZjk4YjdhN2Y4ZTRkZWYyMWM2
NC4uNDU4OTI2ZjI1YmQ2ZDUxNjJhNzU5Y2UwYzczZjhlYTFlYjE3ZDVmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CkBAIC0xNTAsNiArMTUwLDEwIEBAIFBsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXJNYXAuY3Bw
IEBuby11bmlmeQogUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuY3BwIEBuby11bmlmeQogUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwIEBuby11bmlmeQorUGxhdGZvcm0vSVBDL1N0cmVh
bUNsaWVudENvbm5lY3Rpb24uY3BwIEBuby11bmlmeQorUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5l
Y3Rpb25CdWZmZXIuY3BwIEBuby11bmlmeQorUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWUuY3BwIEBuby11bmlmeQorUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rp
b24uY3BwIEBuby11bmlmeQogUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5jcHAgQG5vLXVu
aWZ5CiAKIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBAbm8tdW5pZnkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5o
CmluZGV4IGMzMzA3ODI1YjIwMDg2ZGVkNGM4NmM2NDg4Y2U1ZGQ1N2VjMGMzNTguLjg5NTIwOGMz
YmMyMjZkNmZiMTI4NjFkYTQzN2NkYTM4MWY0OGQ2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAi
U2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAK
aW5kZXggMzAxZDBlZDgzMGRiZWQ5MDhjYmIyNzg4NmYwNGE4ZmVlYTlmZDg5ZS4uMjNhYjEwZDYz
YTRmNGEzZmQyMGNlZDRkNzMwMTczZjQ3NWRjN2Y1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHku
aCIKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3Nh
Z2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCA3YTM4ZGU1NTY4Y2Q0Nzg3OTVjZWE1
NmMzMTIyNjIwZDQ1YzY1NzNjLi5mZDUxZTViOWIxMjhjMjc4ZjE1NjlhNzU4Yjg2MDkwM2EwNmQz
OTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZDgzMmNkYTg4YjFiN2Uz
OGI1YWU5M2Y0ZTQ4MTNiNDE5Y2VlNjQ3Li41ZjcyY2UyYTE4Y2YzOGJjYWMyMjJjMDAyOGI0ZTI3
N2UxYzI1M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEzMzUsNiArMTMzNSwxNiBAQAogCQk3QjQ4M0YyMDI1Q0REQTlDMDAxMjA0
ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUMyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNl
aXZlUXVldWUuaCAqLzsgfTsKIAkJN0I0ODNGMjEyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VS
ZWNlaXZlUXVldWVNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVN
YXAuY3BwICovOyB9OwogCQk3QjQ4M0YyMjI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2Vp
dmVRdWV1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCNDgzRjFFMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovOyB9
OworCQk3QjczMTIzQTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzEy
NUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAqLzsgfTsKKwkJN0I3
MzEyM0IyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzIyNUND
ODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwICovOyB9OworCQk3
QjczMTIzQzI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzMyNUNDODUy
MzAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCAqLzsgfTsKKwkJN0I3MzEyM0Qy
NUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzQyNUNDODUyNDAwM0Iy
Nzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwICovOyB9OworCQk3QjczMTIzRTI1Q0M4
NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzUyNUNDODUyNDAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAqLzsgfTsKKwkJN0I3MzEyM0YyNUNDODUy
NTAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzYyNUNDODUyNDAwM0IyNzk2IC8q
IFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwICovOyB9OworCQk3QjczMTI0MDI1Q0M4NTI1MDAz
QjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzNzI1Q0M4NTI0MDAzQjI3OTYgLyogU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgKi87IH07CisJCTdCNzMxMjQxMjVDQzg1MjUwMDNCMjc5
NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzODI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbi5oICovOyB9OworCQk3QjczMTI0MjI1Q0M4NTI1MDAzQjI3OTYgLyogU3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCNzMxMjM5MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9u
RW5jb2Rlci5oICovOyB9OworCQk3QkFCMTExMDI1REQwMkIzMDA4RkM0NzkgLyogU2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0JBQjExMEYyNUREMDJCMjAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1l
c3NhZ2VSZWNlaXZlUXVldWUuaCAqLzsgfTsKIAkJN0MwNjVGMkMxQzhDRDk1RjAwQzJEOTUwIC8q
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovOyB9OwogCQk3QzEzNUFBOTE3M0Iw
QkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdL
UGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3QzFCQTMzRTFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGljdGlvbmFyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxQkEzM0Mx
QTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCAqLzsgfTsKQEAgLTQ1NDQsNiArNDU1
NCwxNSBAQAogCQk3QjQ4M0YxRDI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1
ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXNzYWdlUmVj
ZWl2ZVF1ZXVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I0ODNGMUUy
NUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdCNjRDMEI2MjU0QzVDMjUwMDA2QjRBRiAvKiBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjMxMjVDQzg1MjMwMDNC
Mjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMx
MjMzMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzQyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCNzMxMjM1MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzYyNUNDODUyNDAw
M0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM3MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjczMTIzODI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM5MjVDQzg1MjUwMDNCMjc5NiAvKiBT
dHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjkwNDE2NTI1NEFGREVBMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjYyNTRBRkRFQjAwNkVFQjhD
IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjkwNDE2NzI1NEFGRTE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDU1MSw2ICs0NTcwLDcgQEAKIAkJN0I5
MDQxNjkyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNkEyNTRBRkVBNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTZEMjU1MDEwOEMwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QkFCMTEwRjI1REQwMkIyMDA4RkM0NzkgLyogU2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCRTcyNjU3MjU3NEY2NzIwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkU3MjY2ODI1NzY4MEVGMDBFODVEOTggLyogUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Mw
NjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Njk4NSwxMCArNzAwNSwyMCBAQAogCQkJCTFBM0VFRDBEMTYxQTUzNTMwMEFFQjRGNSAvKiBNZXNz
YWdlUmVjZWl2ZXJNYXAuaCAqLywKIAkJCQkxQUFCMDM3NzE4NUE3QzZBMDBFREY1MDEgLyogTWVz
c2FnZVNlbmRlci5jcHAgKi8sCiAJCQkJMUFBQjAzNzgxODVBN0M2QTAwRURGNTAxIC8qIE1lc3Nh
Z2VTZW5kZXIuaCAqLywKKwkJCQk3QkFCMTEwRjI1REQwMkIyMDA4RkM0NzkgLyogU2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovLAogCQkJCTJEQzE4MDAxRDkwREREMTVGQzY5OTFB
OSAvKiBTaGFyZWRCdWZmZXJDb3B5LmNwcCAqLywKIAkJCQk1Q0M1REI5MTIxNDg4RTE2MDA2Q0I4
QTggLyogU2hhcmVkQnVmZmVyQ29weS5oICovLAogCQkJCTJEQzE4NTVFREJGQjg1MEJBMEI2RDA2
RCAvKiBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmNwcCAqLywKIAkJCQkyREMxODgxQUNCQ0FC
NUQ1N0M1QzZFRjAgLyogU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oICovLAorCQkJCTdCNzMx
MjM2MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCAqLywKKwkJ
CQk3QjczMTIzMzI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oICov
LAorCQkJCTdCNzMxMjM0MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
LmNwcCAqLywKKwkJCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oICovLAorCQkJCTdCNzMxMjM5MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25u
ZWN0aW9uRW5jb2Rlci5oICovLAorCQkJCTdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLywKKwkJCQk3QjczMTIzNTI1Q0M4NTI0MDAzQjI3
OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oICovLAorCQkJCTdCNzMxMjM3MjVDQzg1
MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk3QjczMTIz
ODI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oICovLAogCQkJCTFB
RTAwRDY5MTgzMjdDMTIwMDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuY3BwICovLAogCQkJCTFB
RTAwRDZBMTgzMjdDMTIwMDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuaCAqLywKIAkJCSk7CkBA
IC0xMjAxMSw2ICsxMjA0MSw3IEBACiAJCQkJQkMyRDAyMTcxMkFDNDFDQjAwRTczMkEzIC8qIFNh
bWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFCNEE4RDEy
OTZGMEEyMDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3OSAvKiBTY29w
ZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEQ1NEQw
NDIxRjFENzJEMDA3RTNDMzYgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90
ZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzFDMUMxOEM1NzExOTAwREJBN0MzIC8qIFNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGOTMxQzFDMThDNTcxMTkwMERCQjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLmggaW4gSGVhZGVycyAqLywKQEAgLTEyMDYwLDYgKzEyMDkxLDExIEBACiAJCQkJ
OTM2QjA1OTgyMzAzOTA5NzAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzY4RUVERjIzMDNBOUVEMDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY1RjRFMDYyMzBCMkU5NTAwM0NFREI3IC8q
IFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIz
QzI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0I3MzEyM0EyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjQyMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJl
YW1Db25uZWN0aW9uRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyM0UyNUNDODUy
NTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTdCNzMxMjQxMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUUwMEQ2QzE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVm
ZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTZCRDg1RDE1MDE5QkMzMDA3MUY0MjQgLyog
U3RyaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NjIyQjM1MTZDMDA4
RDBFOEIgLyogU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywK
QEAgLTEzODg2LDYgKzEzOTIyLDEwIEBACiAJCQkJOTNENkI3ODIyNTRDQ0NGNDAwNThERDNBIC8q
IFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBMzM0REVEMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzY4RUVERTIzMDNBOTAyMDBCREIxMUEg
LyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJN0I3MzEyM0YyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJN0I3MzEyM0QyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I3MzEyM0IyNUNDODUyNTAw
M0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJN0I3MzEyNDAyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODMyMTJCNkE3MTAwRjQ5M0ZEIC8qIFN0cmluZ1Jl
ZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc1MTIxMjZBMjgyMDA2Rjg4Nzgg
LyogVW5pZmllZFNvdXJjZTEtbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc1MjIxMjZB
MjgyMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTEuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAppbmRleCBjMDUyOTIxZTAxN2U4YzNj
NjIxNDg0ZTEzOTdiODNiM2ZiZmZkMWIwLi5mODllZmM0MjYwMmNhNGE3NDNlNDI2YjY3Y2I4YTRi
OTEyODc0MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAK
QEAgLTQ5LDEzICs0OSwxNiBAQCBSZWZQdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4g
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y3JlYXRlKGNvbnN0CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCksIGF0dHJpYnV0ZXMsIHJlbmRlcmlu
Z0JhY2tlbmQpKTsKIH0KIAorc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdFN0cmVhbVNp
emUgPSAxIDw8IDIxOworCiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVj
dGlvbiwgY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBSZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kKQogICAgIDogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UoYXR0cmlidXRlcykKICAgICAsIG1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oJmdwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgICwgbV9zdHJlYW1Db25uZWN0aW9u
KGdwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgZGVmYXVsdFN0cmVhbVNpemUpCiB7
CiAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+YWRkQ2xpZW50KCp0aGlzKTsKICAgICBtX2dw
dVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMp
OwotICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlz
cGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBjb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRlR3JhcGhp
Y3NDb250ZXh0R0woYXR0cmlidXRlcywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHJl
bmRlcmluZ0JhY2tlbmQsIG1fc3RyZWFtQ29ubmVjdGlvbi5zdHJlYW1CdWZmZXIoKSksIDAsIElQ
Qzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5
KTsKIH0KIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkoKQpAQCAtMTg0LDcgKzE4Nyw3IEBAIEdDR0xlbnVtIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldEVycm9yKCkKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Vy
cm9yV2hlbkNvbnRleHRJc0xvc3QsIE5PX0VSUk9SKTsKIH0KIAotdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZh
aWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucykKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQ
Qzo6U2VtYXBob3JlJiYgc2VtYXBob3JlLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBT
dHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTE5Myw2ICsxOTYsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcmJiBhdmFp
bGFibAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVCghbV9kaWRJbml0aWFsaXpl
KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24uc2V0V2FrZVVwU2VtYXBob3JlKFdURk1vdmUoc2Vt
YXBob3JlKSk7CiAgICAgbV9kaWRJbml0aWFsaXplID0gdHJ1ZTsKICAgICBpbml0aWFsaXplKGF2
YWlsYWJsZUV4dGVuc2lvbnMsIHJlcXVlc3RlZEV4dGVuc2lvbnMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCA1Y2U1NzY3NmIwOTA1YTY1NzQwNDJhOWY1
NDM4YTQ3MWZiN2VmOTkwLi4zMzJiNDQwNWZiNmM3NDBiM2VkNGRiYTU4NWNiYWQyMWI2NDA1YTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMjksMTEgKzI5
LDEyIEBACiAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJh
c2UuaD4KQEAgLTMzNSwxOSArMzM2LDE4IEBAIHByb3RlY3RlZDoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCiAg
ICAgewotICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCBJUEM6OlNlbmRPcHRpb246OkRpc3Bh
dGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7Ci0gICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9uLnNlbmQoV1RGTW92ZShtZXNz
YWdlKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIGRlZmF1bHRTZW5kVGltZW91dCk7
CiAgICAgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgV0FSTl9VTlVTRURfUkVUVVJO
IElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5
cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCiAgICAgewotICAgICAgICByZXR1cm4gY29ubmVjdGlv
bigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAg
ICAgICByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9uLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSks
IFdURk1vdmUocmVwbHkpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKICAgICB9CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpOyB9CiAKIHBy
aXZhdGU6CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCB3YXNDcmVh
dGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5n
JiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CisgICAgdm9pZCB3YXNDcmVhdGVkKGJvb2wgZGlkU3Vj
Y2VlZCwgSVBDOjpTZW1hcGhvcmUmJiwgU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3Ry
aW5nJiYgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7CiAgICAgdm9pZCB3YXNMb3N0KCk7CiAgICAgdm9p
ZCB3YXNDaGFuZ2VkKCk7CiAKQEAgLTM2MSw4ICszNjEsOCBAQCBwcml2YXRlOgogICAgIEdQVVBy
b2Nlc3NDb25uZWN0aW9uKiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIGJvb2wgbV9kaWRJ
bml0aWFsaXplIHsgZmFsc2UgfTsKICAgICBHQ0dMZW51bSBtX2Vycm9yV2hlbkNvbnRleHRJc0xv
c3QgPSBOT19FUlJPUjsKLQogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciB7IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSB9OworICAgIElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBtX3N0cmVhbUNvbm5l
Y3Rpb247CiB9OwogCiAvLyBUaGUgR0NHTCB0eXBlcyBtYXAgdG8gZm9sbG93aW5nIFdlYktpdCBJ
UEMgdHlwZXMuIFRoZSBsaXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggYTdjNjQxMmFjOTQ2ZTI1OGNlMDEzOGJjNDdiYzM4NjIxOTUwMjFkNy4uZjQzZWMw
YTJlYWEzODRlNGVkZThkZDQ0MGQ5ZWZlMDI4YWNiN2JmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCiBtZXNzYWdlcyAt
PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5IE5vdFJlZkNvdW50ZWQgewotICAgIHZvaWQg
V2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyBhdmFpbGFibGVFeHRlbnNpb25zLCBT
dHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zKQorICAgIHZvaWQgV2FzQ3JlYXRlZChib29sIGRp
ZFN1Y2NlZWQsIElQQzo6U2VtYXBob3JlIHN0cmVhbVdha2VVcFNlbWFwaG9yZSwgU3RyaW5nIGF2
YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMpCiAgICAgdm9p
ZCBXYXNMb3N0KCkKICAgICB2b2lkIFdhc0NoYW5nZWQoKQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLmgKaW5kZXggN2FhZDdkYTIwNzBkZTgzZDE0YzcxZGQ5ODI0
NzRhYWYxMDZhN2RiNS4uZjEzNDFkY2QyNzZkMGMxMDFlNDRiZGRhMTdjZTQwYjhhM2NiMzYxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogCiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JFeHRlbnNpb25UeXBlcy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmg+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29y
ay5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05l
dHdvcmsuaAppbmRleCBiYmU3ZmMyNmNmMzIzNDY2OTVlNjFmZDAxZDZhMGIyMzJkZTBkMTg4Li5h
NjExZGFiZjRlYmI1NmU3YTQyNTk0ZGQ3YmQzYmIwYzgxYTVjODBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3
b3JrLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQ
cm92aWRlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCIKICNpbmNsdWRl
ICJXZWJNRE5TUmVnaXN0ZXIuaCIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA3NGU2ZTdmOTVjYmFkNDg2MGM1MTFmY2Y0N2QyODY2Y2I5NzgwOTQ2
Li44ZTBjNTQ5ZDcwYTk1MDQzOGZkYjU3OGJhYWU1OTRlODFhMGM4NWQzIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MjEtMDItMDUgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWJHTCBHUFUgcHJvY2VzcyBJUEMgc2hvdWxkIHVzZSBzaGFyZWQgbWVtb3J5IGZvciBhc3lu
Y2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxOTY0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzIzNDA2NTE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgTWFyayBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCBtZXNzYWdlIHJlY2VpdmVyIGFzICJTdHJlYW0iLAorICAgICAgICBhIG5l
dyB2YXJpYW50IG9mIHJlY2VpdmVyLgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVw
LXdlYmdsOgorCiAyMDIxLTAyLTE5ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUENNOiBSZXF1ZXN0IHNlcnZlciBwdWJsaWMga2V5IHRvIGdlbmVyYXRlIHNl
Y3JldCB0b2tlbgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmds
IGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCmluZGV4IGZlOGZhOWFlNTE3NDBi
ZGE2M2Y1MTUzZmRhOGYxNmQ3ZTYyYjVmYmYuLjBmYWYyY2RmYTA5ZjQ3N2JmY2Q1ZTQyMTY4MThj
MGNlZDk1ZGVjMjUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTg5LDcgKzg5LDcg
QEAgY29udGV4dF9tZXNzYWdlc190ZW1wbGF0ZSA9ICgKICAgICB0ZW1wbGF0ZV9wcmVhbWJsZQog
ICAgICsgIiIiI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNz
YWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CittZXNzYWdl
cyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAg
IHZvaWQgUmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2b2lkIFByZXBhcmVGb3JEaXNwbGF5KCkgLT4gKE1hY2hTZW5kUmlnaHQg
ZGlzcGxheUJ1ZmZlcikgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMDcyNDJjNDNkZjVmNzgyNjA4M2Fl
YTlhNGJhYjUxYjViNTc3ZTExLi41NGYwMzE0Y2Q3NjI0MzU5Y2JmN2RlZGQ3NWMxOWZiMWY3MWJj
YjI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDItMTcgIEtpbW1vIEtpbm51bmVuICA8
a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBHUFUgcHJvY2VzcyBJUEMgc2hv
dWxkIHVzZSBzaGFyZWQgbWVtb3J5IGZvciBhc3luY2hyb25vdXMgbWVzc2FnZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY0MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzIzNDA2NTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2Fy
ZW4uCisKKyAgICAgICAgTWFyayBmZXcgdGVzdHMgYXMgbm90IHRpbWluZyBvdXQgbm93IHRoYXQg
dGhlIGltcGxlbWVudGF0aW9uIGlzIG5vdCBzbyBzbG93LgorCisgICAgICAgICogZ3B1LXByb2Nl
c3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wMi0xOSAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogUmVxdWVzdCBzZXJ2ZXIgcHVibGljIGtleSB0
byBnZW5lcmF0ZSBzZWNyZXQgdG9rZW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9j
ZXNzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IGVlNzdlMmJkNGE5OTY1N2Q5ZTA5OGViNTA5ZTIwM2E5MWViMjZmMzQuLjhl
M2E3MTViMzg0Yjk3MjI5MjliMDBlOTlkYjM1YWI0ODlmZTI4OWYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1
LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzAsOCArMzAsMTAgQEAgZmFzdC9jYW52YXMv
d2ViZ2wvdGV4SW1hZ2UyRC1tc2UtZmxpcFktdHJ1ZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Nh
bnZhcy93ZWJnbC90ZXhJbWFnZTJELXZpZGVvLWZsaXBZLWZhbHNlLmh0bWwgWyBUaW1lb3V0IF0K
IGZhc3QvY2FudmFzL3dlYmdsL3RleEltYWdlMkQtdmlkZW8tZmxpcFktdHJ1ZS5odG1sIFsgRmFp
bHVyZSBdCiBmYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLWFjdGl2ZS1iaW5kLmh0bWwgWyBGYWls
dXJlIF0KLWZhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgVGlt
ZW91dCBdCitmYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFNs
b3cgXQogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2xjb250ZXh0Y2hhbmdlZGV2ZW50Lmh0bWwgWyBU
aW1lb3V0IF0KK3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2F0dHJpYnMvZ2wtdmVydGV4YXR0cmli
cG9pbnRlci5odG1sIFsgU2xvdyBdCit3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvcmVuZGVyaW5n
L2JsaXRmcmFtZWJ1ZmZlci1maWx0ZXItb3V0b2Zib3VuZHMuaHRtbCBbIFNsb3cgXQogCiBmYXN0
L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2guaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9p
bWFnZXMvYW5pbWF0ZWQtaW1hZ2UtbXA0LWNyYXNoLmh0bWwgWyBUaW1lb3V0IF0KQEAgLTIyMCw3
ICsyMjIsNiBAQCB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJl
LWZsb2F0LXdpdGgtY2FudmFzLmh0bWwgWyBGYWlsdXJlCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1cmUg
XQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZs
b2F0LXdpdGgtY2FudmFzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWls
dXJlIF0KLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9tYW55LWRyYXctY2FsbHMu
aHRtbCBbIFRpbWVvdXQgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uvc3RhdGUvZ2wtb2JqZWN0
LWdldC1jYWxscy5odG1sIFsgVGltZW91dCBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0
dXJlcy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWNhbnZhcy1yZ2I1NjUuaHRtbCBb
IEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMtcmdiYTQ0NDQuaHRtbCBbIEZhaWx1cmUgXQpAQCAt
MjM0LDEzICsyMzUsMTIgQEAgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4LWlt
YWdlLXdlYmdsLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1
cmVzL3RleHBhcmFtZXRlci10ZXN0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZv
cm1hbmNlL3RleHR1cmVzL3RleHR1cmUtYWN0aXZlLWJpbmQtMi5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLWFjdGl2ZS1iaW5kLmh0bWwg
WyBGYWlsdXJlIF0KLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3VuaWZvcm1zL3VuaWZvcm0tc2Ft
cGxlcnMtdGVzdC5odG1sIFsgVGltZW91dCBdCit3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS91bmlm
b3Jtcy91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRtbCBbIFNsb3cgXQogd2ViZ2wvMi4wLjAvY29u
Zm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLWNhbnZhcy5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJl
LWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgtY2FudmFzLmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUt
aGFsZi1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZv
cm1hbmNlL3JlYWRpbmcvcmVhZC1waXhlbHMtdGVzdC5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8y
LjAuMC9jb25mb3JtYW5jZS9yZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0bWwgWyBUaW1lb3V0
IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRt
bCBbIFRpbWVvdXQgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvY2FudmFzL3Rl
eC0yZC1yZ2ItcmdiLXVuc2lnbmVkX2J5dGUuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAv
Y29uZm9ybWFuY2UvdGV4dHVyZXMvY2FudmFzL3RleC0yZC1yZ2ItcmdiLXVuc2lnbmVkX3Nob3J0
XzVfNl81Lmh0bWwgWyBGYWlsdXJlIF0KQEAgLTI2MCw3ICsyNjAsNyBAQCB3ZWJnbC8yLjAuMC9j
b25mb3JtYW5jZS90ZXh0dXJlcy92aWRlby90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9zaG9ydF81
XzZfNS5odG1sCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy92aWRlby90ZXgtMmQt
cmdiYS1yZ2JhLXVuc2lnbmVkX2J5dGUuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMi4wLjAvY29u
Zm9ybWFuY2UvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYmEtcmdiYS11bnNpZ25lZF9zaG9ydF80
XzRfNF80Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVz
L3ZpZGVvL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNV81XzVfMS5odG1sIFsgRmFp
bHVyZSBdCi13ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBsZXJz
LXRlc3QuaHRtbCBbIFRpbWVvdXQgXQord2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdW5pZm9ybXMv
dW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBTbG93IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1h
bmNlMi9yZWFkaW5nL3JlYWQtcGl4ZWxzLXBhY2stcGFyYW1ldGVycy5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvc3RhdGUvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1s
IFsgVGltZW91dCBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdGV4dHVyZXMvY2FudmFzL3Rl
eC0yZC1yMTFmX2cxMWZfYjEwZi1yZ2ItZmxvYXQuaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421080</attachid>
            <date>2021-02-19 22:22:47 -0800</date>
            <delta_ts>2021-02-20 12:42:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219641-20210220082245.patch</filename>
            <type>text/plain</type>
            <size>168423</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNiYzE4NTlmODQyMTkxYWI3
YTk0OGQ5NTg3ZDc2Y2VhZTU2NjMxY2IuLjUyNzQ4MTg2ZTE1ZTFmMzc0YTI0MGU0MzdlN2NiZWI0
YmQ5MGVhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNzYWdl
IGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFuZCBi
dWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2FnZXMK
KyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRoZW4g
cGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBpbXBs
ZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBzZW1p
LWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci4g
VGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJlYW0g
Y29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1lc3Nh
Z2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJvdWdo
IG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAgICAg
ICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZlciBh
bmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVjdGlv
bi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3ltbWV0
cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2VzIGFu
ZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJlY2Vp
dmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNlaXZl
ZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAgcHJv
Y2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVudGx5
IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hyb25v
dXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQgdGhy
b3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhhdmlu
ZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAgIGlu
IHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0IGlu
IGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBvbmUg
Mm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJlIHdp
bGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24KKyAg
ICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFyIHRo
cmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJvcHRp
bWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAgcHJv
Y2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2UgdG8g
aGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGljaXBh
dGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8gc2Ft
ZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1pemF0
aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFzIHBh
cnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAgIElu
IEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sgcXVl
dWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQgd2ls
bCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24gcGVy
IGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAgICBT
ZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRpb24g
d2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYgdGhl
IG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUgaXQg
dGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91dCBv
ZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9uIGFy
cml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAgICBt
ZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2lsbCBz
dG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxsIGNv
bnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4gcHJv
Y2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0cmVh
bSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1lc3Nh
Z2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMgc2Vu
ZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0gY29u
bmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9yZS4g
VGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlzIHdh
aXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6Cisg
ICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAgcG9p
bnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAgIC0g
V2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2ggfjYw
ZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAgICBO
byBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ojpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlVW5p
bml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4gdGhl
IHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0aW9u
cyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1ZXVl
SW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpz
ZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVldWVJ
bml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBt
dWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0aGUg
SVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmlsaXR5
IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xpZW50
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpE
ZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6Cisg
ICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNvbnN0
cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZmZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBD
OjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNwZWNp
ZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFyZSB1
bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRocm91
Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAgICAg
VGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBpcyBy
ZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2FzZSB3
aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRoZSBz
dHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAgICog
UGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBDOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAgICAg
ICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2FrZXVw
IHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNlbWFw
aG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24uIEFs
bCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2ZSB0
aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhleSBo
YXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5
bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVzdGlu
YXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246
OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2l6
ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1pdCBj
b25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0YSB0
aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVNZW1v
cnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3BlcmF0
b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6CisgICAg
ICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAgICAg
ICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAoSVBD
OjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0aGUg
Y29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZlci4K
KyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90aCB0
aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4KKyAg
ICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1cCwg
dGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFsbCB0
aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAiaG9s
ZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBvZiAi
YnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAgICAg
IGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRkZWQu
CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6
YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBjb250
YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAgICAg
Rm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBwcm9j
ZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUgb2Yg
dGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwgc2xl
ZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3aWxs
IHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdpbGwg
d2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKworICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0
UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6CisgICAg
ICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9mZnNl
dCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXplIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5j
UmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6
c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyk6
CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9jZXNz
U2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3Nh
Z2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUgbWVz
c2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRoZSBi
dWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRoYXQg
dGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1hbCBJ
UEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3NhZ2Ug
dW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6CisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdTdHJl
YW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFzCisg
ICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJlY2Vp
dmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxsIG1l
c3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1lc3Nh
Z2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAgICAg
IGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUgc3Ry
ZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJUEMg
bWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNzZWQu
CisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0aW9u
SUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJlYW0g
bWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAgICAg
IHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJlYW1E
ZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAgICAg
KElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1lKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhT
dHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVkLgor
ICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVh
bUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6
OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2FnZXM6
OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29uc3Qp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVz
c2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAg
ICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6CisgICAg
ICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAgICAg
ICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRzIGNv
bnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNo
cm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRT
dHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAoTWVz
c2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVudHMg
Y29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVz
c2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToKKyAg
ICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0IG9m
IHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9wZXJh
dG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6On5T
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZSk6
CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVsZCBz
aW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0xOSAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgW1BheW1lbnQgUmVx
dWVzdF0gYWRkIGFuIGBvYmplY3QgZGF0YWAgdG8gYFBheW1lbnRTaGlwcGluZ09wdGlvbmAgc28g
dGhhdCBkYXRhIHNwZWNpZmljIHRvIEFwcGxlIFBheSBjYW4gYmUgcHJvdmlkZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAppbmRleCBlMTY3ZWMwMjY0NDIwNTY5ODdiZTk4ZTU0Nzk2YzYzMTY1NTk2MTY3Li5kYWYwMzgx
NDUzODlkNDY3NjgyZDRjOTRiNjAwODU3ZGQxZTMxYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMTUs
NyArMzE1LDcgQEAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmltYWdlRGVjb2RlckFWRlByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3Jl
KQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVu
c3VyZShpZGVudGlmaWVyLCBbJl0oKSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyPihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUo
KnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7
CisgICAgICAgIHJldHVybiBJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUo
cmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVT
RUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CkBAIC0zMjYsMjUgKzMyNiwx
NiBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNr
ZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZv
dW5kKTsKIH0KIAotR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFdyYXBwZXI6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kPiYmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQoV1RGTW92ZShyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQot
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6
On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLT5kaXNjb25uZWN0KCk7Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcikKK3ZvaWQgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
IHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIm
JiBzdHJlYW0pCiB7Ci0gICAgYXV0byogcmVuZGVyaW5nQmFja2VuZCA9IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1hcC5nZXQocmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIGlmICgh
cmVuZGVyaW5nQmFja2VuZCkKKyAgICBhdXRvIGl0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
TWFwLmZpbmQocmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIGlmIChpdCA9PSBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBhdXRv
KiByZW5kZXJpbmdCYWNrZW5kID0gaXQtPnZhbHVlLmdldCgpOwogCiAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIsIFsmXSgpIHsKLSAgICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjcmVhdGUoYXR0cmlidXRlcywgKnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgcmVuZGVyaW5nQmFja2VuZC0+Z2V0KCkpOworICAgICAgICByZXR1cm4gSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlIHsgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0
ZSgqdGhpcywgV1RGTW92ZShhdHRyaWJ1dGVzKSwgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCAqcmVuZGVyaW5nQmFja2VuZCwgV1RGTW92ZShzdHJlYW0pKSB9OwogICAgIH0pOwogICAgIEFT
U0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApp
bmRleCA1ZTgyMDMzNTdmNzgxZmRjMDUzZTE1ZGNjOGZjOGUxNTk2MDQ0ZTQ2Li45MmQxODI0NTRl
MzgwZDEzMjlhZTFmMjQzMzlkMWViYjFmZjExYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Nlc3Npb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UmVtb3RlUmVtb3RlQ29tbWFuZExpc3RlbmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2NvcGVkQWN0aXZlTWVzc2FnZVJl
Y2VpdmVRdWV1ZS5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9MaWJXZWJSVENFbnVtVHJhaXRzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3dQbGF5aW5nTWFuYWdlci5oPgpAQCAtMTM4LDcgKzEzOSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7CiAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBjcmVhdGVH
cmFwaGljc0NvbnRleHRHTChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwor
ICAgIHZvaWQgY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgdm9pZCBy
ZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKICNl
bmRpZgogCkBAIC0yMDYsMjAgKzIwNywxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd3NE
aXNwbGF5Q2FwdHVyZSB7IGZhbHNlIH07CiAjZW5kaWYKIAotICAgIGNsYXNzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyIHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0g
ICAgcHVibGljOgotICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcihSZWY8UmVt
b3RlUmVuZGVyaW5nQmFja2VuZD4mJik7Ci0gICAgICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
V3JhcHBlcigpOwotICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBnZXQoKSBjb25zdCB7
IHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuZ2V0KCk7IH0KLSAgICBwcml2YXRlOgot
ICAgICAgICBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gbV9yZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOwotICAgIH07Ci0KLSAgICB1c2luZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFz
aE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRXcmFwcGVyPj47CisgICAgdXNpbmcgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIsIElQQzo6U2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47CiAgICAgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZE1hcCBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXA7CiAjaWYg
RU5BQkxFKFdFQkdMKQotICAgIHVzaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwID0gSGFz
aE1hcDxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVH
cmFwaGljc0NvbnRleHRHTD4+OworICAgIHVzaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFw
ID0gSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIElQQzo6U2NvcGVkQWN0aXZl
TWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+OwogICAgIFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMTWFwIG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXA7CiAjZW5k
aWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCAyYjY4ZTNiMDg3YTkzNWQxOWViMWQ3OTdiYmU4M2FkOWQzODA0ODAyLi5hMzQxMjlm
ZDFkMzA1N2MzOGM2YzRiYzNlMmE2ODNmOWQ1NjAxY2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMjYsNyArMjYsNyBAQCBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNzYWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0Jh
Y2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6
OlNlbWFwaG9yZSByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKICAgICB2b2lkIFJlbGVhc2VS
ZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgQ3JlYXRl
R3JhcGhpY3NDb250ZXh0R0woc3RydWN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCisgICAgdm9pZCBDcmVhdGVHcmFwaGljc0Nv
bnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJp
YnV0ZXMsIFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciwgV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkK
ICAgICB2b2lkIFJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiAjZW5kaWYKICAgICB2
b2lkIENsZWFyTm93UGxheWluZ0luZm8oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXgg
ZWEzMTEzYjNmMWQ5ZDQ0YmEzOGM4OWY1MDMxNTgwNzJhOWY1OGY5MC4uYmZiZTcyNTUzMjcyZTFi
ZWY2YzRjNTk0ZmE2ZGY3NWY5YzAyZmJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBA
IC0zMSw1NiArMzEsODAgQEAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorLy8gQ3VycmVudGx5IHdlIGhhdmUgb25lIGdsb2JhbCBX
ZWJHTCBwcm9jZXNzaW5nIGluc3RhbmNlLgorc3RhdGljIElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZSYgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU+IGlu
c3RhbmNlKCJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB3b3JrIHF1ZXVlIik7CisgICAgcmV0dXJu
IGluc3RhbmNlLmdldCgpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQotc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQmKQorUmVmPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Y3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0
ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbmRlcmluZ0JhY2tlbmQsIElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTChncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIsIHJlbmRlcmluZ0JhY2tlbmQsIFdURk1vdmUoc3RyZWFtKSkp
OworICAgIGluc3RhbmNlLT5pbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJl
dHVybiBpbnN0YW5jZTsKIH0KICNlbmRpZgogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMPiBjb250ZXh0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW5kZXJpbmdC
YWNrZW5kKQotICAgIDogbV9jb250ZXh0KFdURk1vdmUoY29udGV4dCkpCi0gICAgLCBtX2dwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFrZVdlYWtQdHIoY29ubmVjdGlvbikpCi0gICAgLCBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcihpZGVudGlmaWVyKQorUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbmRl
cmluZ0JhY2tlbmQsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6
IG1fc3RyZWFtQ29ubmVjdGlvbihJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w+OjpjcmVhdGUoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0
aW9uKCksIFdURk1vdmUoc3RyZWFtKSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3Jr
UXVldWUoKSkpCisgICAgLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcihncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpCiAgICAgLCBtX3JlbmRlcmluZ0JhY2tlbmQobWFrZVJlZihyZW5k
ZXJpbmdCYWNrZW5kKSkKIHsKLSAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2Vzcy0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0gICAg
bV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOwotICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9j
b250ZXh0LT5nZXRTdHJpbmcoR3JhcGhpY3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOwotICAgIFN0
cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lvbnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNp
b25zR0w6OlJFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUpOwotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgZXh0ZW5zaW9u
cywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIp
OworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CiAKIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKQogewotICAgIGlmIChhdXRvKiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgp
KQotICAgICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAo
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgIEFTU0VSVCghbV9zdHJlYW1Db25uZWN0aW9uKTsKKyAgICBBU1NFUlQo
IW1fY29udGV4dCk7CiB9CiAKLUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3ZvaWQgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1
dGVzJiYgYXR0cmlidXRlcykKIHsKLSAgICByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmdldCgpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgcmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbYXR0cmlidXRlcyA9IFdU
Rk1vdmUoYXR0cmlidXRlcyksIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlSW5pdGlhbGl6ZShXVEZNb3Zl
KGF0dHJpYnV0ZXMpKTsKKyAgICB9KTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVj
ZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6c3RvcExpc3Rlbmlu
Z0ZvcklQQyhSZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+JiYgcmVmRnJvbUNvbm5lY3Rpb24p
Cit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rp
b24tPnN0b3BSZWNlaXZpbmdNZXNzYWdlcyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUo
KS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24pXSgp
IHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAg
fSk7CiB9CiAKLUlQQzo6Q29ubmVjdGlvbiogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OndvcmtRdWV1ZUluaXRpYWxpemUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
JiYgYXR0cmlidXRlcykKIHsKLSAgICBpZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgcmV0dXJuICZn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykp
OworICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRo
aXMpOworICAgICAgICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdy
YXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJT05TKTsKKyAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxl
RXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFC
TEVfRVhURU5TSU9OU19BTkdMRSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtlVXBTZW1hcGhvcmUoKSwgZXh0ZW5zaW9ucywgcmVxdWVz
dGFibGVFeHRlbnNpb25zKSk7CisgICAgfSBlbHNlCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0NyZWF0ZWQoZmFsc2UsIElQQzo6U2VtYXBo
b3JlIHsgfSwgIiIsICIiKSk7CiB9CiAKLXVpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjp3b3JrUXVldWVVbmluaXRpYWxpemUoKQogewotICAgIHJldHVybiBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIG1fY29udGV4dCA9IG51bGxw
dHI7CisgICAgbV9zdHJlYW1Db25uZWN0aW9uID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6ZGlkQ29tcG9zaXRlKCkKQEAgLTg5LDcgKzExMyw3IEBAIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmRpZENvbXBvc2l0ZSgpCiAKIHZvaWQgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmZvcmNlQ29udGV4dExvc3QoKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Oldhc0xvc3QoKSk7CiB9CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OnJlY3ljbGVDb250ZXh0KCkKQEAgLTk5LDcgKzEyMyw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6cmVzaGFwZShpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKaW5kZXggYWFhNTc0OWQwYmM1NDY0NmIyYzFmOGY0YzM5ZTU4YmRhOTYx
ZTg0Zi4uZjhmNWI3MzMxYWFlODkwNTBmOTA3YTk2MGJhYmZkMjUwZDNlZGMwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLmgKQEAgLTI4LDEwICsyOCwxMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIgorI2lu
Y2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0V4dGVu
c2lvbnNHTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC00OSwzMiArNDksMjggQEAg
Y2xhc3MgTWFjaFNlbmRSaWdodDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0KIC8vIEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRp
b24gb2YgdGhhdCByZWNlaXZlcyBtZXNzYWdlcyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxs
cwogLy8gYW5kIGlzc3VlcyByZWFsIEdyYXBoaWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRo
ZSByZWNlaXZlZCBtZXNzYWdlcy4KIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdl
bmVyYXRlZCBieSBydW5uaW5nIFRvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KLWNs
YXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMCi0gICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2Vu
ZGVyCi0gICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgLCBwcml2YXRlIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgeworY2xhc3MgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+LCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7CisgICAg
c3RhdGljIFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiwgSVBDOjpT
dHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOwogICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgp
IG92ZXJyaWRlOworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w+JiYgcmVmRnJvbUNvbm5lY3Rpb24pOwogCi0gICAgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0OworICAgIC8vIElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gdGVtcGxh
dGUgY29udHJhY3QgaW1wbGVtZW50YXRpb24uCisgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVz
c2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVyJik7CiAK
IHByb3RlY3RlZDoKLSAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w+LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7Ci0KLSAgICAvLyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIgb3ZlcnJpZGVzLgotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0IGZpbmFsOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQmLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAg
dm9pZCBpbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsK
IAotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIG92ZXJyaWRlcy4KLSAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAg
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CisgICAgdm9pZCB3b3Jr
UXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1Xb3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKSB7IH07CisgICAgdm9pZCB3b3JrUXVldWVVbmlu
aXRpYWxpemUoKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIGJvb2wgc2VuZChUJiYg
bWVzc2FnZSkgY29uc3QgeyByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9uLT5jb25uZWN0aW9uKCku
c2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7IH0K
IAogICAgIC8vIEdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQg
ZGlkQ29tcG9zaXRlKCkgZmluYWw7CkBAIC0xMDAsOCArOTYsOCBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICB2b2lkIHBhaW50SW1hZ2VEYXRhVG9JbWFnZUJ1ZmZlcihSZWZQdHI8V2ViQ29yZTo6SW1hZ2VE
YXRhPiYmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w+IG1fY29udGV4dDsKLSAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj4gbV9zdHJlYW1Db25uZWN0aW9u
OworICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0
OwogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllcjsKICAgICBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gbV9yZW5kZXJpbmdCYWNr
ZW5kOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBk
MTUwOTU5YWFhNWU1NGEzZWM1MGI3NGEyMjE5NzA4NGIwMGRhNjg5Li5mN2Q1MjkwMzU0MzQ0MmFi
ZjNiYjE0MTllMWM5ZDQyNTE5NWMyYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Lm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wuIERvIG5vdCBlZGl0LgogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCi1tZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTCBOb3RSZWZDb3VudGVkIHsKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
IE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwg
aW50MzJfdCBoZWlnaHQpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9y
RGlzcGxheSgpIC0+IChNYWNoU2VuZFJpZ2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAKaW5kZXggNzllNTMwNzFhMTJjMDg0MmVi
YTc4YjU2ODRmNjU4NTU1ODcxNmQ5Zi4uYmU1OWUyZmU5MDk1ZjE4OTM1MjRiNTc0ZjRjYzJhNWQy
NTYzNjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtMzksMTAg
KzM5LDExIEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EgZmluYWwgOiBwdWJsaWMgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgewogcHVibGljOgotICAg
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYpOworICAgIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2EoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYsIElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciYmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSgp
IGZpbmFsID0gZGVmYXVsdDsKIAogICAgIC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG92ZXJy
aWRlcy4KKyAgICB2b2lkIHBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJikgZmluYWw7CiAgICAgdm9pZCBwcmVwYXJlRm9yRGlz
cGxheShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikgZmlu
YWw7CiBwcml2YXRlOgogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dh
cENoYWluIG1fc3dhcENoYWluOwpAQCAtNTAsMTYgKzUxLDIzIEBAIHByaXZhdGU6CiAKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYgYXR0cmlidXRlcywgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQmIHJlbmRlcmluZ0JhY2tlbmQpCitSZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0
cmlidXRlcywgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVuZGVyaW5nQmFja2VuZCwgSVBDOjpT
dHJlYW1Db25uZWN0aW9uQnVmZmVyJiYgc3RyZWFtKQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E+KGF0dHJpYnV0ZXMsIGNvbm5lY3Rpb24sIGlk
ZW50aWZpZXIsIHJlbmRlcmluZ0JhY2tlbmQpOworICAgIGF1dG8gaW5zdGFuY2UgPSBhZG9wdFJl
ZigqbmV3IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCByZW5kZXJpbmdCYWNrZW5kLCBXVEZN
b3ZlKHN0cmVhbSkpKTsKKyAgICBpbnN0YW5jZS0+aW5pdGlhbGl6ZShXVEZNb3ZlKGF0dHJpYnV0
ZXMpKTsKKyAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2E6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aW9uLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmllciwg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKGF0dHJpYnV0ZXMsICZtX3N3
YXBDaGFpbiksIHJlbmRlcmluZ0JhY2tlbmQpCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29h
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBn
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbmRl
cmluZ0JhY2tlbmQsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCwgV1RGTW92ZShzdHJlYW0p
KQogewogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OnBsYXRmb3JtV29y
a1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBh
dHRyaWJ1dGVzKQoreworICAgIG1fY29udGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpj
cmVhdGVGb3JHUFVQcm9jZXNzKFdURk1vdmUoYXR0cmlidXRlcyksICZtX3N3YXBDaGFpbik7Cit9
CisKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXko
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXVEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgbV9jb250ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCmluZGV4IGIzZWI2YjY5NmE5MzQ5OTM3NzIyM2Q3OTI4ZjlhMGQyOTk2
MTdmMmEuLjkyNDJjOTI2Yzc3NWM1YjFkYWY0ZTQ0ZWQyNWJjMzMxZTBlNzUyYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoKQogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChb
cmVtb3RlUmVzb3VyY2VDYWNoZSA9IFdURk1vdmUobV9yZW1vdGVSZXNvdXJjZUNhY2hlKV0geyB9
KTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaXNjb25uZWN0KCkKK3ZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3RvcExpc3RlbmluZ0ZvcklQQygpCiB7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggMDg1NmY2
ZDI3YWU4ZDUwNWY1YzFkYmY5ZTkzNTIxMTVhMDFhYzBjNS4uZTdjMzQyZmI3NWNmYWMzNTcyOTRk
NTJlZjI0ZDU2NDU5YTcxNTZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC02Niw2ICs2Niw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3Jl
YXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
ciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7CiAgICAgdmly
dHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFja2VuZCgpOworICAgIHZvaWQgc3RvcExpc3RlbmluZ0Zv
cklQQygpOwogCiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZSYgcmVtb3RlUmVzb3VyY2VDYWNoZSgp
IHsgcmV0dXJuIG1fcmVtb3RlUmVzb3VyY2VDYWNoZTsgfQogCkBAIC03OCw4ICs3OSw2IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgZGVzdGluYXRpb24pOwogCi0gICAgdm9pZCBkaXNjb25uZWN0KCk7Ci0KICAgICAv
LyBSdW5zIEZ1bmN0aW9uIGluIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgdGFzayBxdWV1ZS4KICAg
ICB2b2lkIGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5k
ZXggYTkxZjliZTFmYjliNTk4MzRkMWE5MmY2MTFkY2I0NjZiYmJlNzFkZC4uNTJjYzVkYTEyMWEy
ZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2NTVjMGNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNs
dWRlICJOZXR3b3JrTG9hZENsaWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAppbmRleCA0OTcxNzFiNTY0
MjY4OTI4OTUyMTA2YmQ3ZWVhNTRiZWU5M2JlZTIzLi5iMGNmNzBmMDZlMTE4ZTAyMWQ4NjRkZWI5
OGQ0MTRlZmJhOWU3YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lm
IFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIk5ldHdvcmtSVENNb25pdG9yLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IDMyMDc2YWZk
MDJhODk4YTFlMzlkZTI4M2UxMDJiODU5NDdmOGVkYzcuLjUzMzUwZjlmN2M4YzEyYmU2Mjc1OTk5
YzdlYmZjM2M3ZTA5MWJjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVu
dENvZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNs
dWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC03NSw2ICs3Niw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgewog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUg
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBUIHZhbHVlKQogICAgIHsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQpLCBh
bGlnbm9mKFQpKTsKQEAgLTkxLDYgKzkzLDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtX3Y8VD4+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2YWx1
ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChXVEY6OmlzVmFsaWRFbnVtPFQ+KFdURjo6ZW51bVRv
VW5kZXJseWluZ1R5cGU8VD4odmFsdWUpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Bcmd1bWVudENvZGVycy5jcHAKaW5kZXggYjBhNDNkZTlkN2ExMzcyMTZhMTliZjdkMGJkNWUx
OTExM2I1ZGE2OC4uYWVlODllNjI2OTZjNTYwZjBhMThiZmIxZDY3NjkxNjUwZTdmZjJhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTExMSw3ICsxMTIsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENv
ZGVyPENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ1N0cmluZwogICAgIHJldHVy
biB0cnVlOwogfQogCi0KK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiB2b2lkIEFyZ3VtZW50
Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogewogICAgIC8vIFNwZWNpYWwgY2FzZSB0aGUgbnVsbCBzdHJpbmcuCkBAIC0xMzAsNiAr
MTMxLDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgZWxzZQogICAgICAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJp
bmcuY2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBhbGlnbm9mKFVDaGFy
KSk7CiB9Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxFbmNv
ZGVyPihFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENv
ZGVyPFN0cmluZz46OmVuY29kZTxTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVj
dGlvbkVuY29kZXImLCBjb25zdCBTdHJpbmcmKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4
dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCAyMGViMTdhMGZkODI2MGQ0MGJlYzdmY2Rh
YWVhMjNiYzVlODY1ZTA5Li5mODU2OTgwNzNkZDA0NWIyODE2ZTE2MTBjYTQ5OTZhNWQ0ZWU2YzI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTU1
LDYgKzU1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50Q29k
ZXIgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJyYXlSZWZl
cmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW50PjsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQogICAgIHsKICAgICAgICAg
aWYgKCFFeHRlbnQpCkBAIC03NCw2ICs3NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVuCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNl
PFQsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD4+IHsKICAgICB1c2luZyBBcnJheVJlZmVy
ZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVu
Y2UpCiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJh
eVJlZmVyZW5jZS5zaXplKCkpOwpAQCAtMjY2LDYgKzI2OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6cGFpcjxULCBVPj4gewog
CiB0ZW1wbGF0ZTxzaXplX3QgaW5kZXgsIHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1
cGxlRW5jb2RlciB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50cy4u
Lj4mIHR1cGxlKQogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxzaXplb2YuLi4o
RWxlbWVudHMpIC0gaW5kZXg+KHR1cGxlKTsKQEAgLTI3NSw2ICsyNzgsNyBAQCBzdHJ1Y3QgVHVw
bGVFbmNvZGVyIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+CiBzdHJ1Y3QgVHVw
bGVFbmNvZGVyPDAsIEVsZW1lbnRzLi4uPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rl
cj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IHN0ZDo6dHVwbGU8RWxl
bWVudHMuLi4+JikKICAgICB7CiAgICAgfQpAQCAtMzM4LDYgKzM0Miw3IEBAIHN0cnVjdCBUdXBs
ZURlY29kZXI8MD4gewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+IHN0cnVj
dCBBcmd1bWVudENvZGVyPHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+PiB7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4mIHR1cGxlKQogICAgIHsKICAgICAgICAg
VHVwbGVFbmNvZGVyPHNpemVvZi4uLihFbGVtZW50cyksIEVsZW1lbnRzLi4uPjo6ZW5jb2RlKGVu
Y29kZXIsIHR1cGxlKTsKQEAgLTM3NCw2ICszNzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlU
eXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6S2V5VmFs
dQogdGVtcGxhdGU8Ym9vbCBmaXhlZFNpemVFbGVtZW50cywgdHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0
eT4gc3RydWN0IFZlY3RvckFyZ3VtZW50Q29kZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWlu
Q2FwYWNpdHk+IHN0cnVjdCBWZWN0b3JBcmd1bWVudENvZGVyPGZhbHNlLCBULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0
eT4mIHZlY3RvcikKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KHZlY3Rvci5zaXplKCkpOwpAQCAtNDExLDYgKzQxNyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXpl
X3QgbWluCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PiBzdHJ1Y3QgVmVj
dG9yQXJndW1lbnRDb2Rlcjx0cnVlLCBULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVD
YXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mIHZlY3RvcikKICAgICB7CiAg
ICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZlY3Rvci5zaXplKCkpOwpA
QCAtNzUzLDYgKzc2MCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Q1N0cmlu
Zz4gewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxTdHJpbmc+IHsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgU3RyaW5nJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4g
ZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5j
cHAKaW5kZXggOTJjYzk3YThmMGZjY2JkM2M4MGY1MDNjYjZkNmEyMDQ1MmZjNjI2MS4uZjg4YjFm
NDM4ZDFmNWVlYTVjMzQ2NzIwNTJjYWU5ZGI3ZDEyYWQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVy
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVzLmgiCkBAIC05MzAsOCArOTMxLDEzIEBAIHZvaWQg
Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogCiB2b2lk
IENvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1l
IG1lc3NhZ2VOYW1lKQogewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KKyAgICBp
ZiAoIVJ1bkxvb3A6OmlzTWFpbigpKSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtZXNzYWdlTmFtZV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+aXNWYWxpZCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fY2xpZW50LmRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShwcm90ZWN0ZWRUaGlzLCBtZXNzYWdlTmFtZSk7CisgICAgICAg
IH0pOworICAgIH0KICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggNDg1NTIwMTI0N2MyNWRmODU1
MmM1YTU0YTA0Njc3YjhkNzJiODJjYS4uZmU5Y2EzMTg2MDZmZGVkYzYxZDIxZDA3ZGYwZjhhYjFi
ZmU5M2JkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzAs
MTAgKzMwLDkgQEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgi
Ci0jaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVl
dWVNYXAuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlIDxhdG9taWM+
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRp
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CkBAIC0zMTIsNiArMzExLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGRpc3BhdGNo
TWVzc2FnZVJlY2VpdmVyTWVzc2FnZShNZXNzYWdlUmVjZWl2ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4mJik7CisgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisgICAg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSk7CiBwcml2
YXRlOgogICAgIENvbm5lY3Rpb24oSWRlbnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50Jik7
CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoSWRlbnRpZmllcik7CkBAIC0zMzksNyArMzQw
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4pOwogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlKERlY29kZXImKTsKICAgICB2b2lk
IGRpc3BhdGNoU3luY01lc3NhZ2UoRGVjb2RlciYpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSW52YWxpZE1lc3NhZ2UoTWVzc2FnZU5hbWUpOwogICAgIHZvaWQgZGlkRmFpbFRvU2VuZFN5
bmNNZXNzYWdlKCk7CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCmluZGV4IDgwYTBmNzVjNzA1NzJiZjRjMjQ4
NTI2ZmVkMmZlZmIwOTdjZGM4ZjkuLjRkZTA1MDk4YzQ2MzJhZDQ1ZjRlODUzZjY3ZTllZTNlNzcx
MzZkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC05MCw2ICs5
MCwxNyBAQCBEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlclNpemUsIENvbnN0cnVjdFdpdGhvdXRIZWFkZQogICAgICAgICBtYXJrSW52YWxpZCgpOwog
fQogCitEZWNvZGVyOjpEZWNvZGVyKGNvbnN0IHVpbnQ4X3QqIHN0cmVhbSwgc2l6ZV90IHN0cmVh
bVNpemUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCisgICAgOiBtX2J1ZmZlciB7IHN0cmVhbSB9
CisgICAgLCBtX2J1ZmZlclBvcyB7IG1fYnVmZmVyIH0KKyAgICAsIG1fYnVmZmVyRW5kIHsgbV9i
dWZmZXIgKyBzdHJlYW1TaXplIH0KKyAgICAsIG1fYnVmZmVyRGVhbGxvY2F0b3IoW10gKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpIHsgfSkKKyAgICAsIG1fZGVzdGluYXRpb25JRChkZXN0aW5hdGlv
bklEKQoreworICAgIGlmICghZGVjb2RlKG1fbWVzc2FnZU5hbWUpKQorICAgICAgICByZXR1cm47
Cit9CisKIERlY29kZXI6On5EZWNvZGVyKCkKIHsKICAgICBBU1NFUlQobV9idWZmZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IDY2OTg1YmMzODdkNzQzOTEzNzAxYjEx
N2I5MTgwMGI5YTI3NzFhYjguLmIzYzZhYzhhMmQ1YWNiYTJjMjE1MjhkZmViMThjNjQxNWNlZGQy
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKQEAgLTUxLDYgKzUxLDcgQEAg
Y2xhc3MgRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNv
ZGVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9p
ZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0
dGFjaG1lbnQ+JiYpOwogICAgIGV4cGxpY2l0IERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyU2l6ZSwgdm9pZCAoKmJ1ZmZlckRlYWxsb2NhdG9yKShjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSwgVmVjdG9yPEF0dGFjaG1lbnQ+JiYpOworICAgIERlY29kZXIoY29uc3Qg
dWludDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCk7CiAgICAgfkRlY29kZXIoKTsKIAogICAgIERlY29kZXIoY29uc3QgRGVjb2RlciYpID0gZGVs
ZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2Fn
ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IGVh
OGFkNDVjMDllYjY4MmUwZTg2MjNiOTM0ZDVlMGU5YzcwMjYyMmEuLjkyOTYzZTIxZTFkNzE3ZjY0
YTgyMTljNTI4OWJhZjA1M2YwOTk0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9I
YW5kbGVNZXNzYWdlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTE2NCw2ICsxNjUsMjggQEAgdm9pZCBoYW5k
bGVNZXNzYWdlU3luY2hyb25vdXNXYW50c0Nvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgRGVjb2RlciYgZGUKICAgICBjYWxsTWVtYmVyRnVuY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92
ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9iamVjdCwgZnVuY3Rp
b24pOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4K
K3ZvaWQgaGFuZGxlTWVzc2FnZVN5bmNocm9ub3VzKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
JiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQor
eworICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQgPSAwOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc3luY1JlcXVlc3RJRCkgfHwgIXN5bmNSZXF1ZXN0SUQpIHsKKyAgICAgICAgZGVjb2Rlci5t
YXJrSW52YWxpZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgT3B0aW9uYWw8dHlw
ZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpBcmd1bWVudHM+OjpUeXBlPiBhcmd1bWVudHM7
CisgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAgICAg
ICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
dHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5IGNvbXBsZXRpb25IYW5kbGVyID0gW3N5bmNSZXF1ZXN0
SUQsIGNvbm5lY3Rpb24gPSBtYWtlUmVmKGNvbm5lY3Rpb24pXSAoYXV0byYmLi4uIGFyZ3MpIG11
dGFibGUgeworICAgICAgICBjb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KHN5bmNSZXF1ZXN0SUQs
IGFyZ3MuLi4pOworICAgIH07CisgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3Vt
ZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKK30K
KwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CiB2b2lkIGhh
bmRsZU1lc3NhZ2VBc3luYyhDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBEZWNvZGVyJiBkZWNvZGVy
LCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmUzYTA1NmEwMjAxYzJhZDBlNzQ5MGVjN2Q3ZmViYmRkNzcxMDk3YjEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TY29wZWRBY3RpdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx1dGlsaXR5PgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBJUEMgeworCisv
LyBTY29wZWQgaG9sZGVyIGZvciBvYmplY3RzIHRoYXQgaGF2ZSBhY3RpdmUgbWVzc2FnZSByZWNl
aXZlIHF1ZXVlcy4gRW5mb3JjZXMgdGhhdAorLy8gb25jZSBob2xkZXIgc3RvcHMgaG9sZGluZyB0
aGUgb2JqZWN0LCB0aGUgbWVzc2FnZSBxdWV1ZSBzaG91bGQgYmUgcmVtb3ZlZC4KKy8vIFRoZSBj
b252ZW50aW9uIGlzIHRvIGNhbGwgc3RvcExpc3RlbmluZ0ZvcklQQygpIGZvciB0aGUgb2JqZWN0
LgorLy8gT3B0aW9uYWxseSB0aGUgb2JqZWN0IGNhbiBvYnRhaW4gdGhlIG93bmluZyByZWZlcmVu
Y2UgdGhhdCB3YXMgdXNlZCB0byBob2xkIHRoZSBvYmplY3QKKy8vIGluIG9yZGVyIHRvIGF0dGVt
cHQgdG8gYXZvaWQgbmVlZGxlc3MgZGVzdHJ1Y3Rpb24gb2YgdGhlIG9iamVjdCBpbiBob2xkZXIg
dGhyZWFkLgorLy8gVGhpcyB1c2VmdWwgaW4gdGhlIGNhc2UgdGhlIHN0b3AgaW52b2tlcyBhIGNs
ZWFudXAgdGFzayBpbiB0aGUgbWVzc2FnZSBoYW5kbGVyCisvLyB0aHJlYWQuCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgSG9sZGVyVHlwZSA9IFJlZlB0cjxUPj4KK2NsYXNzIFNjb3Bl
ZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeworcHVibGljOgorICAgIFNjb3BlZEFjdGl2ZU1l
c3NhZ2VSZWNlaXZlUXVldWUoKSA9IGRlZmF1bHQ7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+
CisgICAgU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZShVJiYgb2JqZWN0KQorICAgICAg
ICA6IG1fb2JqZWN0KFdURk1vdmUob2JqZWN0KSkKKyAgICB7CisgICAgfQorICAgIFNjb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSYm
IG90aGVyKQorICAgICAgICA6IG1fb2JqZWN0KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3Qs
IG51bGxwdHIpKQorICAgIHsKKyAgICB9CisgICAgU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZSYgb3BlcmF0b3I9KFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUmJiBvdGhlcikK
KyAgICB7CisgICAgICAgIGlmICh0aGlzICE9ICZvdGhlcikgeworICAgICAgICAgICAgcmVzZXQo
KTsKKyAgICAgICAgICAgIG1fb2JqZWN0ID0gc3RkOjpleGNoYW5nZShvdGhlci5tX29iamVjdCwg
bnVsbHB0cik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICB+
U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZSgpCisgICAgeworICAgICAgICByZXNldCgp
OworICAgIH0KKyAgICB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIGlmICghbV9vYmplY3Qp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxl
YXNlKG1fb2JqZWN0KTsKKyAgICB9CisgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9vYmpl
Y3QuZ2V0KCk7IH0KK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICBzdGF0
aWMgYXV0byBzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZShVJiBvYmplY3QpIC0+IGRlY2x0
eXBlKG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhvYmplY3QucmVsZWFzZU5vbk51bGwoKSks
IHZvaWQoKSkKKyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhvYmpl
Y3QucmVsZWFzZU5vbk51bGwoKSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Cisg
ICAgc3RhdGljIGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0KSAt
PiBkZWNsdHlwZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMoV1RGTW92ZShvYmplY3QpKSwg
dm9pZCgpKQorICAgIHsKKyAgICAgICAgb2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKFdURk1v
dmUob2JqZWN0KSk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgc3RhdGlj
IGF1dG8gc3RvcExpc3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0KSAtPiBkZWNsdHlw
ZShvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMoKSwgdm9pZCgpKQorICAgIHsKKyAgICAgICAg
b2JqZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKCk7CisgICAgICAgIG9iamVjdCA9IG51bGxwdHI7
CisgICAgfQorICAgIEhvbGRlclR5cGUgbV9vYmplY3Q7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZShzdGQ6OnVuaXF1ZV9wdHI8VD4m
JikgLT4gU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxULCBzdGQ6OnVuaXF1ZV9wdHI8
VD4+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVR
dWV1ZShSZWY8VD4mJikgLT4gU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxULCBSZWZQ
dHI8VD4+OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1DbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNsaWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0ZjVjZGYwMDhlNWE3ZjJkMmYxMDJh
MjM1YzNjMjI1MTczMzc2ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNsaWVudENvbm5l
Y3Rpb24uaCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlN0
cmVhbUNsaWVudENvbm5lY3Rpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IHNpemUp
CisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fYnVmZmVyKHNpemUpCit7
CisgICAgLy8gUmVhZCBzdGFydHMgZnJvbSAwIHdpdGggbGltaXQgb2YgMCBhbmQgcmVhZGVyIHNs
ZWVwaW5nLgorICAgIHNoYXJlZFNlbmRlck9mZnNldCgpLnN0b3JlKFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc3RkOjptZW1vcnlfb3Jk
ZXJfcmVsYXhlZCk7CisgICAgLy8gV3JpdGUgc3RhcnRzIGZyb20gMCB3aXRoIGEgbGltaXQgb2Yg
dGhlIHdob2xlIGJ1ZmZlci4KKyAgICBzaGFyZWRSZWNlaXZlck9mZnNldCgpLnN0b3JlKDAsIHN0
ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rp
b246OnNldFdha2VVcFNlbWFwaG9yZShJUEM6OlNlbWFwaG9yZSYmIHNlbWFwaG9yZSkKK3sKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3dha2VVcFNlbWFwaG9yZSA9IFdURk1vdmUoc2VtYXBo
b3JlKTsKKyNlbmRpZgorICAgIHdha2VVcFJlY2VpdmVyKCk7Cit9CisKK3ZvaWQgU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6d2FrZVVwUmVjZWl2ZXIoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIGlmIChtX3dha2VVcFNlbWFwaG9yZSkKKyAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUtPnNp
Z25hbCgpOworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTM2YjkwMjY1YWRjY2I4
NDQyMjFhNjIwZDQ2N2ExMGI3ZGYwNGNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMjQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVk
ZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAi
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNv
ZGVyLmgiCisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CituYW1lc3BhY2UgSVBDIHsKKworLy8gQSBtZXNzYWdlIHN0cmVhbSBpcyBhIGhh
bGYtZHVwbGV4IHR3by13YXkgc3RyZWFtIG9mIG1lc3NhZ2VzIHRvIGEgYmV0d2VlbiBhIHNlbmRl
ciBhbmQgdGhlCisvLyBkZXN0aW5hdGlvbiByZWNlaXZlci4KKy8vCisvLyBTdHJlYW1DbGllbnRD
b25uZWN0aW9uIGNhbiBzZW5kIG1lc3NhZ2VzIGFuZCByZWNlaXZlIHN5bmNocm9ub3VzIHJlcGxp
ZXMKKy8vIHRocm91Z2ggdGhpcyBtZXNzYWdlIHN0cmVhbSBvciB0aHJvdWdoIElQQzo6Q29ubmVj
dGlvbi4KKy8vCisvLyBUaGUgZGVzdGluYXRpb24gcmVjZWl2ZXIgd2lsbCByZWNlaXZlIG1lc3Nh
Z2VzIGluIG9yZGVyIF9mb3IgdGhlIGRlc3RpbmF0aW9uIG1lc3NhZ2VzXy4KKy8vIFRoZSB3aG9s
ZSBJUEM6OkNvbm5lY3Rpb24gbWVzc2FnZSBvcmRlciBpcyBub3QgcHJlc2VydmVkLgorLy8KKy8v
IFRoZSBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHRydXN0cyB0aGUgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbi4KK2NsYXNzIFN0cmVhbUNsaWVudENvbm5lY3Rpb24gZmluYWwgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFN0cmVhbUNsaWVudENvbm5lY3Rpb24pOworcHVibGljOgorICAgIFN0cmVh
bUNsaWVudENvbm5lY3Rpb24oQ29ubmVjdGlvbiYsIHNpemVfdCBidWZmZXJTaXplKTsKKworICAg
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIHN0cmVhbUJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVy
OyB9CisgICAgdm9pZCBzZXRXYWtlVXBTZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJik7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBib29sIHNlbmQoVCYmIG1lc3NhZ2Us
IE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KTsKKwor
ICAgIHVzaW5nIFNlbmRTeW5jUmVzdWx0ID0gQ29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQ7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBTZW5kU3luY1Jlc3VsdCBz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgT2JqZWN0SWRlbnRpZmll
cjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQpOworCitwcml2YXRlOgorICAgIHN0
cnVjdCBTcGFuIHsKKyAgICAgICAgdWludDhfdCogZGF0YTsKKyAgICAgICAgc2l6ZV90IHNpemU7
CisgICAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtaW5pbXVtTWVzc2FnZVNpemUg
PSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWluaW11bU1lc3NhZ2VTaXplOworICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGlnbm1lbnQgPSBTdHJlYW1Db25uZWN0aW9uRW5j
b2Rlcjo6bWVzc2FnZUFsaWdubWVudDsKKyAgICBib29sIHRyeVNlbmREZXN0aW5hdGlvbklESWZO
ZWVkZWQodWludDY0X3QgZGVzdGluYXRpb25JRCwgTW9ub3RvbmljVGltZSB0aW1lb3V0KTsKKyAg
ICB2b2lkIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFNwYW4mJik7CisKKyAgICBPcHRp
b25hbDxTcGFuPiB0cnlBY3F1aXJlKE1vbm90b25pY1RpbWUgdGltZW91dCk7CisgICAgZW51bSBj
bGFzcyBXYWtlVXBSZWNlaXZlciA6IGJvb2wgeworICAgICAgICBObywKKyAgICAgICAgWWVzCisg
ICAgfTsKKyAgICBXYWtlVXBSZWNlaXZlciByZWxlYXNlKHNpemVfdCB3cml0ZVNpemUpOworICAg
IHZvaWQgd2FrZVVwUmVjZWl2ZXIoKTsKKworICAgIFNwYW4gYWxpZ25lZFNwYW4oc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAgICBzaXplX3Qgc2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGltaXQpOworICAgIHNpemVfdCBjbGFtcGVkTGltaXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0
KSBjb25zdDsKKworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zmc2V0KTsgfQorICAgIHNpemVfdCBhbGlnbk9m
ZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5hbGlnbk9mZnNldDxt
ZXNzYWdlQWxpZ25tZW50PihvZmZzZXQsIG1pbmltdW1NZXNzYWdlU2l6ZSk7IH0KKyAgICBBdG9t
aWM8c2l6ZV90PiYgc2hhcmVkU2VuZGVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuc2VuZGVy
T2Zmc2V0KCk7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKSB7
IHJldHVybiBtX2J1ZmZlci5yZWNlaXZlck9mZnNldCgpOyB9CisgICAgdWludDhfdCogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAgIHNpemVfdCBkYXRhU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFTaXplKCk7IH0KKworICAgIENvbm5lY3Rpb24m
IG1fY29ubmVjdGlvbjsKKyAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEIHsgMCB9
OworCisgICAgc2l6ZV90IG1fc2VuZGVyT2Zmc2V0IHsgMCB9OworICAgIFN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIgbV9idWZmZXI7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgT3B0aW9uYWw8U2Vt
YXBob3JlPiBtX3dha2VVcFNlbWFwaG9yZTsKKyNlbmRpZgorfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KK2Jvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZChUJiYg
bWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVv
dXQpCit7CisgICAgc3RhdGljX2Fzc2VydCghVDo6aXNTeW5jLCAiTWVzc2FnZSBpcyBzeW5jISIp
OworICAgIE1vbm90b25pY1RpbWUgYWJzb2x1dGVUaW1lb3V0ID0gTW9ub3RvbmljVGltZTo6bm93
KCkgKyB0aW1lb3V0OworICAgIGlmICghdHJ5U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZChkZXN0
aW5hdGlvbklELnRvVUludDY0KCksIGFic29sdXRlVGltZW91dCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKGFic29sdXRlVGltZW91dCk7CisgICAg
aWYgKCFzcGFuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgeworICAgICAgICBTdHJlYW1D
b25uZWN0aW9uRW5jb2RlciBtZXNzYWdlRW5jb2RlciB7IFQ6Om5hbWUoKSwgc3Bhbi0+ZGF0YSwg
c3Bhbi0+c2l6ZSB9OworICAgICAgICBpZiAobWVzc2FnZUVuY29kZXIgPDwgbWVzc2FnZS5hcmd1
bWVudHMoKSkgeworICAgICAgICAgICAgYXV0byB3YWtldXBSZXN1bHQgPSByZWxlYXNlKG1lc3Nh
Z2VFbmNvZGVyLnNpemUoKSk7CisgICAgICAgICAgICBpZiAod2FrZXVwUmVzdWx0ID09IFN0cmVh
bUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVyOjpZZXMpCisgICAgICAgICAgICAgICAg
d2FrZVVwUmVjZWl2ZXIoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgfQorICAgIHNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFdURk1vdmUoKnNwYW4pKTsK
KyAgICBpZiAoIW1fY29ubmVjdGlvbi5zZW5kKFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0aW9u
SUQsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3lu
Y1JlcGx5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
U2VuZFN5bmNSZXN1bHQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3Nh
Z2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGlu
YXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KQoreworICAgIHN0YXRpY19hc3NlcnQoVDo6aXNTeW5j
LCAiTWVzc2FnZSBpcyBub3Qgc3luYyEiKTsKKyAgICBNb25vdG9uaWNUaW1lIGFic29sdXRlVGlt
ZW91dCA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGltZW91dDsKKyAgICBpZiAoIXRyeVNlbmRE
ZXN0aW5hdGlvbklESWZOZWVkZWQoZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBhYnNvbHV0ZVRp
bWVvdXQpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gc3BhbiA9IHRyeUFjcXVpcmUo
YWJzb2x1dGVUaW1lb3V0KTsKKyAgICBpZiAoIXNwYW4pCisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kIHRocm91Z2ggc3RyZWFtLgorICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgcmVjZWl2ZSB0aHJvdWdoIHN0cmVhbS4KKyAgICBzZW5kUHJvY2Vzc091dE9m
U3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpzcGFuKSk7CisgICAgYXV0byByZXN1bHQgPSBtX2Nvbm5l
Y3Rpb24uc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0
aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCk7CisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworaW5saW5lIGJvb2wgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5
U2VuZERlc3RpbmF0aW9uSURJZk5lZWRlZCh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBNb25vdG9u
aWNUaW1lIGFic29sdXRlVGltZW91dCkKK3sKKyAgICBpZiAoZGVzdGluYXRpb25JRCA9PSBtX2N1
cnJlbnREZXN0aW5hdGlvbklEKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBhdXRvIHNwYW4g
PSB0cnlBY3F1aXJlKGFic29sdXRlVGltZW91dCk7CisgICAgaWYgKCFzcGFuKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZW5jb2RlciB7IE1lc3Nh
Z2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklELCBzcGFuLT5kYXRhLCBzcGFuLT5zaXplIH07
CisgICAgaWYgKCEoZW5jb2RlciA8PCBkZXN0aW5hdGlvbklEKSkgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgLy8gU2l6ZSBvZiB0aGUgbWluaW11bSBhbGxvY2F0aW9uIGlzIGluY29y
cmVjdC4gTGlrZWx5IGFuIGFsaWdubWVudCBpc3N1ZS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2UoZW5jb2Rlci5zaXplKCkpOwor
ICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVwUmVj
ZWl2ZXI6OlllcykKKyAgICAgICAgd2FrZVVwUmVjZWl2ZXIoKTsKKyAgICBtX2N1cnJlbnREZXN0
aW5hdGlvbklEID0gZGVzdGluYXRpb25JRDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5l
IHZvaWQgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3Nh
Z2UoU3BhbiYmIHNwYW4pCit7CisgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZW5jb2RlciB7
IE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlLCBzcGFuLmRhdGEsIHNwYW4u
c2l6ZSB9OworICAgIC8vIE5vdCBub3RpZnlpbmcgb24gd2FrZSB1cCBzaW5jZSB0aGUgb3V0LW9m
LXN0cmVhbSBtZXNzYWdlIHdpbGwgZG8gdGhhdC4KKyAgICBhdXRvIHJlc3VsdCA9IHJlbGVhc2Uo
ZW5jb2Rlci5zaXplKCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShyZXN1bHQpOworfQoraW5saW5l
IE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5l
Y3Rpb246OnRyeUFjcXVpcmUoTW9ub3RvbmljVGltZSB0aW1lb3V0KQoreworICAgIGZvciAoOzsp
IHsKKyAgICAgICAgc2l6ZV90IHNlbmRlckxpbWl0ID0gY2xhbXBlZExpbWl0KHNoYXJlZFJlY2Vp
dmVyT2Zmc2V0KCkubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxpbWl0KTsKKyAg
ICAgICAgaWYgKHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplKSB7CisgICAgICAgICAg
ICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgICAgICAgICAgaWYgKG5vdyA+
PSB0aW1lb3V0KQorICAgICAgICAgICAgICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgICAgICAgICAgc2l6ZV90IG9sZFNlbmRlckxpbWl0ID0gc2hhcmVkUmVjZWl2ZXJPZmZzZXQo
KS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcoc2VuZGVyTGltaXQsIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OnJlY2VpdmVyT2Zmc2V0U2VuZGVySXNXYWl0aW5nVGFnLCBzdGQ6Om1lbW9yeV9vcmRlcl9h
Y3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAgICAgICAgIGlmIChzZW5k
ZXJMaW1pdCA9PSBvbGRTZW5kZXJMaW1pdCkKKyAgICAgICAgICAgICAgICBtX2J1ZmZlci5zZW5k
ZXJXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0IC0gbm93KTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIHNlbmRlckxpbWl0ID0gY2xhbXBlZExpbWl0KG9sZFNlbmRl
ckxpbWl0KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3NlbmRlck9m
ZnNldCwgc2VuZGVyTGltaXQpOworICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgIFRo
cmVhZDo6eWllbGQoKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGlmIChyZXN1bHQuc2l6
ZSA+PSBtaW5pbXVtTWVzc2FnZVNpemUpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICAvLyBUaGUgYWxpZ25lZFNwYW4gdXNlcyB0aGUgbWluaW11bU1lc3NhZ2VTaXplIHRvIGNh
bGN1bGF0ZSB0aGUgbmV4dCBiZWdpbm5pbmcgcG9zaXRpb24gaW4gdGhlIGJ1ZmZlciwKKyAgICAg
ICAgLy8gYW5kIG5vdCB0aGUgc2l6ZS4gVGhlIHNpemUgbWlnaHQgYmUgbW9yZSBvciBsZXNzIHdo
YXQgaXMgbmVlZGVkLCBkZXBlbmRpbmcgb24gd2hlcmUgdGhlIHJlYWRlciBpcy4KKyAgICAgICAg
Ly8gSWYgdGhlcmUgaXMgbm8gY2FwYWNpdHkgZm9yIG1pbmltdW0gbWVzc2FnZSBzaXplLCB3YWl0
IHVudGlsIG1vcmUgaXMgYXZhaWxhYmxlLgorICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSBz
ZW5kZXJPZmZzZXQgPCByZWNlaXZlck9mZnNldCB3ZSBjYW4gYXJyaXZlIHRvIGEgc2l0dWF0aW9u
IHdoZXJlCisgICAgICAgIC8vIDAgPCByZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZS4K
KyAgICB9CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworaW5saW5lIFN0cmVhbUNsaWVu
dENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVyIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnJlbGVh
c2Uoc2l6ZV90IHNpemUpCit7CisgICAgc2l6ZSA9IHN0ZDo6bWF4KHNpemUsIG1pbmltdW1NZXNz
YWdlU2l6ZSk7CisgICAgbV9zZW5kZXJPZmZzZXQgPSB3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1f
c2VuZGVyT2Zmc2V0KSArIHNpemUpOworICAgIEFTU0VSVChtX3NlbmRlck9mZnNldCA8IGRhdGFT
aXplKCkpOworICAgIC8vIElmIHRoZSByZWNlaXZlciB3cm90ZSBvdmVyIHRoZSBzZW5kZXJPZmZz
ZXQgd2l0aCBzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHdlIGtub3cgaXQgaXMg
c2xlZXBpbmcuCisgICAgc2l6ZV90IHJlY2VpdmVyTGltaXQgPSBzaGFyZWRTZW5kZXJPZmZzZXQo
KS5leGNoYW5nZShtX3NlbmRlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7Cisg
ICAgaWYgKHJlY2VpdmVyTGltaXQgPT0gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zm
c2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKQorICAgICAgICByZXR1cm4gV2FrZVVwUmVjZWl2ZXI6
OlllczsKKyAgICBBU1NFUlQoIShyZWNlaXZlckxpbWl0ICYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZl
cjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKSk7CisgICAgcmV0dXJuIFdha2VV
cFJlY2VpdmVyOjpObzsKK30KKworaW5saW5lIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4g
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6YWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxpbWl0KQoreworICAgIEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBBU1NFUlQo
bGltaXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBzaXplX3QgYWxpZ25lZCA9IGFsaWduT2Zmc2V0KG9m
ZnNldCk7CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSAwOworICAgIGlmIChvZmZzZXQgPCBsaW1p
dCkgeworICAgICAgICBpZiAoYWxpZ25lZCA+PSBvZmZzZXQgJiYgYWxpZ25lZCA8IGxpbWl0KQor
ICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwgbGltaXQpCisg
ICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7CisgICAgfQorICAg
IHJldHVybiB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30KKworaW5saW5lIHNp
emVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzaXplKHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
aW1pdCkKK3sKKyAgICBpZiAoIWxpbWl0KQorICAgICAgICByZXR1cm4gZGF0YVNpemUoKSAtIDEg
LSBvZmZzZXQ7CisgICAgaWYgKGxpbWl0IDw9IG9mZnNldCkKKyAgICAgICAgcmV0dXJuIGRhdGFT
aXplKCkgLSBvZmZzZXQ7CisgICAgcmV0dXJuIGxpbWl0IC0gb2Zmc2V0IC0gMTsKK30KKworaW5s
aW5lIHNpemVfdCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpjbGFtcGVkTGltaXQoc2l6ZV90IHVu
dHJ1c3RlZExpbWl0KSBjb25zdAoreworICAgIEFTU0VSVCh1bnRydXN0ZWRMaW1pdCA8IChkYXRh
U2l6ZSgpIC0gMSkpOworICAgIHJldHVybiBzdGQ6Om1pbih1bnRydXN0ZWRMaW1pdCwgZGF0YVNp
emUoKSAtIDEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljNWY3ZjMxZTUzM2RkM2Jk
YmU4ZjQ1YjY2YmVjOGNmNzU4NzM3YTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApAQCAtMCwwICsxLDEwMSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBGZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlci5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisK
K25hbWVzcGFjZSBJUEMgeworCitzdGF0aWMgUmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5PiBjcmVh
dGVNZW1vcnkoc2l6ZV90IHNpemUpCit7CisgICAgYXV0byBtZW1vcnkgPSBXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZSk7CisgICAgaWYgKCFtZW1vcnkpCisgICAgICAgIENSQVNI
KCk7CisgICAgcmV0dXJuIG1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpOworfQorCitTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyKHNpemVfdCBtZW1vcnlTaXplKQor
ICAgIDogbV9kYXRhU2l6ZShtZW1vcnlTaXplIC0gaGVhZGVyU2l6ZSgpKQorICAgICwgbV9zaGFy
ZWRNZW1vcnkoY3JlYXRlTWVtb3J5KG1lbW9yeVNpemUpKQoreworICAgIEFTU0VSVChtX2RhdGFT
aXplIDw9IG1heGltdW1TaXplKCkpOworfQorCitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJl
YW1Db25uZWN0aW9uQnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiBtZW1vcnksIHNp
emVfdCBtZW1vcnlTaXplLCBTZW1hcGhvcmUmJiBzZW5kZXJXYWl0U2VtYXBob3JlKQorICAgIDog
bV9kYXRhU2l6ZShtZW1vcnlTaXplIC0gaGVhZGVyU2l6ZSgpKQorICAgICwgbV9zaGFyZWRNZW1v
cnkoV1RGTW92ZShtZW1vcnkpKQorICAgICwgbV9zZW5kZXJXYWl0U2VtYXBob3JlKFdURk1vdmUo
c2VuZGVyV2FpdFNlbWFwaG9yZSkpCit7CisgICAgQVNTRVJUKG1fZGF0YVNpemUgPD0gbWF4aW11
bVNpemUoKSk7Cit9CisKK1N0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OlN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIoU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIG90aGVyKSA9IGRlZmF1bHQ7CisKK1N0cmVh
bUNvbm5lY3Rpb25CdWZmZXI6On5TdHJlYW1Db25uZWN0aW9uQnVmZmVyKCkgPSBkZWZhdWx0Owor
CitTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpvcGVyYXRv
cj0oU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIG90aGVyKQoreworICAgIGlmICh0aGlzICE9ICZv
dGhlcikgeworICAgICAgICBtX2RhdGFTaXplID0gb3RoZXIubV9kYXRhU2l6ZTsKKyAgICAgICAg
bV9zaGFyZWRNZW1vcnkgPSBXVEZNb3ZlKG90aGVyLm1fc2hhcmVkTWVtb3J5KTsKKyAgICAgICAg
bV9zZW5kZXJXYWl0U2VtYXBob3JlID0gV1RGTW92ZShvdGhlci5tX3NlbmRlcldhaXRTZW1hcGhv
cmUpOworICAgIH0KKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKCFtX3NoYXJlZE1lbW9yeS0+Y3Jl
YXRlSGFuZGxlKGhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRX
cml0ZSkpCisgICAgICAgIENSQVNIKCk7CisgICAgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSBpcGNIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIG1fc2hhcmVkTWVtb3J5LT5zaXplKCkg
fTsKKyAgICBlbmNvZGVyIDw8IGlwY0hhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1fc2VuZGVyV2Fp
dFNlbWFwaG9yZTsKK30KKworT3B0aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9u
YWw8V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gaXBjSGFuZGxlOworICAgIGRlY29k
ZXIgPj4gaXBjSGFuZGxlOworICAgIGlmICghaXBjSGFuZGxlKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIE9wdGlvbmFsPFNlbWFwaG9yZT4gc2VtYXBob3JlOworICAgIGRlY29k
ZXIgPj4gc2VtYXBob3JlOworICAgIGlmICghc2VtYXBob3JlKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHNpemVfdCBkYXRhU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oaXBj
SGFuZGxlLT5kYXRhU2l6ZSk7CisgICAgaWYgKGRhdGFTaXplIDwgaGVhZGVyU2l6ZSgpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmIChkYXRhU2l6ZSA+IGhlYWRlclNpemUo
KSArIG1heGltdW1TaXplKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgYXV0
byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS0+aGFu
ZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKKyAgICBp
ZiAoc2hhcmVkTWVtb3J5LT5zaXplKCkgPCBkYXRhU2l6ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB7IHNoYXJlZE1lbW9y
eS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRhU2l6ZSwgIFdURk1vdmUoKnNlbWFwaG9yZSkgfTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2ZjBiOGQwNDEzNzIwM2I1NWViZDQxY2ZlMWI4OGYwNzhk
OWQwN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1Db25uZWN0aW9uQnVmZmVyLmgKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUu
aCIKKyNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSVBDIHsKKworLy8gU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciBpcyBhIHNoYXJlZCAiYmktcGFydGl0ZSIgY2lyY3VsYXIgYnVmZmVy
IHN1cHBvcnRpbmcKKy8vIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdlcywgc3BlY2lmaWMgZGF0YSBh
bGlnbm1lbnQgd2l0aCBtYW5kYXRlZCBtaW5pbXVtIHNpemUuCisvLyBTdHJlYW1DbGllbnRDb25u
ZWN0aW9uIGFuZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHVzZSBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyIHRvIGNvbW11bmljYXRlLgorLy8KKy8vIFRoZSAiYmktcGFydGl0ZSIgaXMgaGVyZSB0byBt
ZWFuIHRoYXQgd3JpdGVzIGFuZCByZWFkcyB0byB0aGUgYnVmZmVyIG11c3QgYmUKKy8vIGNvbnRp
bnVvdXMuCisvLworLy8gVGhlIGNsaWVudCAoc2VuZGVyIG9yIHJlY2VpdmVyKSAiYWNxdWlyZXMi
IHNvbWUgYW1vdW50IG9mIGJ1ZmZlciBkYXRhLiBUaGUgZGF0YSBwb2ludGVyCisvLyBsb2NhdGlv
biBkZXBlbmRzIG9uIHRoZSBhbW91bnQgb2YgZGF0YSBiZWluZyBhY3F1aXJlZC4gVGhlIGJ1ZmZl
ciByZXR1cm5zIGFsbCB0aGUgYXZhaWxhYmxlCisvLyBjYXBhY2l0eSAtLSB0aGlzIG1heSBiZSBs
ZXNzIHRoYW4gYWNxdWlyZWQuCisvLworLy8gVGhlIGNsaWVudCAicmVsZWFzZXMiIHRoZSBzb21l
IGFtb3VudCBvZiBkYXRhLCBhdCBsZWFzdCB0aGUgYW1vdW50IGFjcXVpcmVkIGJ1dCBwb3RlbnRp
YWxseQorLy8gbW9yZS4KKy8vCisvLyBCb3RoIHNlbmRlciBhbmQgcmVjZWl2ZXIgbXVzdCByZWxl
YXNlIHRoZSBzYW1lIGFtb3VudCBvZiBkYXRhIGF0IHRoZSBzYW1lIHN0ZXAgb2YgdGhlIGFjcXVp
cmUvcmVsZWFzZSBzZXF1ZW5jZS4KKy8vIFN1cHBvc2Ugc2VuZGVyIHJlbGVhc2VzIGZpcnN0IDgg
YW5kIHRoZW4gMTY2IGJ5dGVzLiBVcG9uIHRoZSBmaXJzdCBhY3F1aXJlLCByZWNlaXZlcgorLy8g
bXVzdCBhbHNvIHJlbGVhc2UgOCBieXRlcyBhbmQgdGhlbiB1cG9uIHRoZSBzZWNvbmQgYWNxdWly
ZSAxNjYgYnl0ZXMuCisvLyBEdWUgdG8gaG93IGFsaWdubWVudCBhbmQgbWluaW11bSBsZW5ndGgg
YWZmZWN0IHRoZSBwb3NpdGlvbiBhdCB3aGljaCB0aGUgbWVtb3J5IGNhbgorLy8gYmUgcmVmZXJy
ZWQgdG8sIHRoZSByZWNlaXZlciBjYW5ub3QgInJlYWQgdHdvIHRpbWVzIHNpbXVsdGFuZW91c2x5
IiBhbmQgcmVsZWFzZSAxNzQgYnl0ZXMuCisvLworLy8gVGhlIGNpcmN1bGFyIGJ1ZmZlciBoYXMg
Zm9sbG93aW5nIGltcGxlbWVudGF0aW9uOgorLy8gKiBTZW5kZXIgb3ducyB0aGUgZGF0YSBiZXR3
ZWVuIFtzZW5kZXJPZmZzZXQsIHJlY2VpdmVyT2Zmc2V0Wy4gV2hlbiBzZW5kZXJPZmZzZXQgPT0K
Ky8vIHJlY2VpdmVyT2Zmc2V0LCBzZW5kZXIgb3ducyBhbGwgdGhlIGRhdGEuCisvLyAqIFJlY2Vp
dmVyIG93bnMgdGhlIGRhdGEgYmV0d2VlbiBbcmVjZWl2ZXJPZmZzZXQsIHNlbmRlck9mZnNldFsu
CisvLyAqIFRoZSBidWZmZXIgY2FuIGhvbGQgbWF4aW11bSBvZiBzaXplIC0gMSB2YWx1ZXMuIFRo
ZSBsYXN0IHZhbHVlIGlzIHJlc2VydmVkIGZvcgorLy8gaW5kaWNhdGluZyB0aGF0IHRoZSBidWZm
ZXIgaXMgZnVsbC4gRklYTUU6IE1heWJlIHdvdWxkIGJlIHNpbXBsZXIgaW1wbGVtZW50YXRpb24g
aWYKKy8vIGl0IHdvdWxkIHVzZSB0aGUgIndyYXAiIGZsYWcgaW5zdGVhZCBvZiB0aGUgaG9sZSBh
cyB0aGUgaW5kaWNhdG9yLiBUaGlzIHdvdWxkIG1vdmUKKy8vIHRoZSBhbGlnbmVkU3BhbiBpbXBs
ZW1lbnRhdGlvbiB0byB0aGUgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci4KKy8vICogQWxsIGF0b21p
YyB2YXJpYWJsZSBsb2FkcyBhcmUgdW50cnVzdGVkLCBzbyB0aGV5J3JlIGNsYW1wZWQuIFZpb2xh
dGlvbnMgYXJlIG5vdCByZXBvcnRlZCwKKy8vIHRob3VnaC4KKy8vIFNlZSBTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZS4KK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgeworcHVibGljOgorICAg
IGV4cGxpY2l0IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoc2l6ZV90IG1lbW9yeVNpemUpOworICAg
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIoU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKKyAgICB+
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcigpOworICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImIG9w
ZXJhdG9yPShTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYpOworCisgICAgc2l6ZV90IHdyYXBPZmZz
ZXQoc2l6ZV90IG9mZnNldCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChvZmZzZXQgPD0g
ZGF0YVNpemUoKSk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gZGF0YVNpemUoKSkKKyAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKworICAgIHRlbXBs
YXRlPHNpemVfdCBtZXNzYWdlQWxpZ25tZW50PgorICAgIHNpemVfdCBhbGlnbk9mZnNldChzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgYWNxdWlyZVNpemUpIGNvbnN0CisgICAgeworICAgICAgICBvZmZz
ZXQgPSByb3VuZFVwVG9NdWx0aXBsZU9mPG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCk7CisgICAg
ICAgIGlmIChvZmZzZXQgKyBhY3F1aXJlU2l6ZSA+PSBkYXRhU2l6ZSgpKQorICAgICAgICAgICAg
b2Zmc2V0ID0gMDsKKyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICBBdG9taWM8
c2l6ZV90PiYgc2VuZGVyT2Zmc2V0KCkgeyByZXR1cm4gaGVhZGVyKCkuc2VuZGVyT2Zmc2V0OyB9
CisgICAgQXRvbWljPHNpemVfdD4mIHJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4gaGVhZGVyKCku
cmVjZWl2ZXJPZmZzZXQ7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KG1fc2hhcmVkTWVtb3J5LT5kYXRhKCkpICsgaGVhZGVyU2l6ZSgp
OyB9CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhU2l6ZTsgfQor
ICAgIFNlbWFwaG9yZSYgc2VuZGVyV2FpdFNlbWFwaG9yZSgpIHsgcmV0dXJuIG1fc2VuZGVyV2Fp
dFNlbWFwaG9yZTsgfQorCisgICAgLy8gVGFnIHZhbHVlIHN0b3JlZCBpbiBIZWFkZXI6OnNlbmRl
ck9mZnNldCB3aGVuIHJlY2VpdmVyIGlzIHNsZWVwaW5nLCBlLmcuIG5vdCBydW5uaW5nLgorICAg
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1Rh
ZyA9IDEgPDwgMzE7CisgICAgLy8gVGFnIHZhbHVlIHN0b3JlZCBpbiBIZWFkZXI6OnJlY2VpdmVy
T2Zmc2V0IHdoZW4gc2VuZGVyIGlzIHdhaXRpbmcsIGUuZy4gd2FpdGluZyBvbgorICAgIC8vIGEg
c2VtYXBob3JlLgorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHJlY2VpdmVyT2Zmc2V0U2Vu
ZGVySXNXYWl0aW5nVGFnID0gMSA8PCAzMTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IG1heGltdW1TaXplKCkgeyByZXR1cm4gc3RkOjptaW4oc2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1Ns
ZWVwaW5nVGFnLCBzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcpIC0gMTsgfQorICAg
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyKFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4mJiwgc2l6ZV90IG1l
bW9yeVNpemUsIFNlbWFwaG9yZSYmIHNlbmRlcldhaXRTZW1hcGhvcmUpOworCisgICAgc3RydWN0
IEhlYWRlciB7CisgICAgICAgIEF0b21pYzxzaXplX3Q+IHJlY2VpdmVyT2Zmc2V0OworICAgICAg
ICAvLyBQYWRkaW5nIHNvIHRoYXQgdGhlIHZhcmlhYmxlcyBtb3N0bHkgYWNjZXNzZWQgYnkgZGlm
ZmVyZW50IHByb2Nlc3NlcyBkbyBub3Qgc2hhcmUgYSBjYWNoZSBsaW5lLgorICAgICAgICAvLyBU
aGlzIGlzIGFuIGF0dGVtcHQgdG8gYXZvaWQgY2FjaGUtbGluZSBpbmR1Y2VkIHJlZHVjdGlvbiBv
ZiBwYXJhbGxlbCBhY2Nlc3MuCisgICAgICAgIGFsaWduYXMoc2l6ZW9mKHVpbnQ2NF90WzJdKSkg
QXRvbWljPHNpemVfdD4gc2VuZGVyT2Zmc2V0OworICAgIH07CisgICAgSGVhZGVyJiBoZWFkZXIo
KSBjb25zdCB7IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxIZWFkZXIqPihtX3NoYXJlZE1lbW9y
eS0+ZGF0YSgpKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGhlYWRlclNpemUoKSB7
IHJldHVybiByb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihzdGQ6Om1heF9hbGlnbl90KT4oc2l6
ZW9mKEhlYWRlcikpOyB9CisKKyAgICBzaXplX3QgbV9kYXRhU2l6ZSB7IDAgfTsKKyAgICBSZWY8
V2ViS2l0OjpTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OworICAgIFNlbWFwaG9yZSBtX3Nl
bmRlcldhaXRTZW1hcGhvcmU7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTIzMmRlY2Y2
Yzc5M2E0NTc3MTY4ZTk3ZWZiNTFhYWZiMzJmZGVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaApAQCAtMCwwICsx
LDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSVBDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUsIHR5
cGVuYW1lPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjsKKworLy8gSVBDIGVuY29kZXIgd2hpY2g6Cisv
LyAgLSBFbmNvZGVzIHRvIGEgY2FsbGVyIGJ1ZmZlciB3aXRoIGZpeGVkIHNpemUsIGRvZXMgbm90
IHJlc2l6ZSwgc3RvcHMgd2hlbiBzaXplIHJ1bnMgb3V0CisvLyAgLSBEb2VzIG5vdCBpbml0aWFs
aXplIGFsaWdubWVudCBnYXBzCisvLworY2xhc3MgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgZmlu
YWwgeworcHVibGljOgorICAgIC8vIFN0cmVhbSBtZXNzYWdlIG5lZWRzIHRvIGJlIGF0IGxlYXN0
IHNpemUgb2YgU3RyZWFtU2V0RGVzdGluYXRpb25JRCBtZXNzYWdlLgorICAgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IG1pbmltdW1NZXNzYWdlU2l6ZSA9IHNpemVvZihNZXNzYWdlTmFtZSkgKyBz
aXplb2YodWludDY0X3QpOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1lc3NhZ2VBbGln
bm1lbnQgPSBhbGlnbm9mKE1lc3NhZ2VOYW1lKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJUENFbmNvZGVyID0gdHJ1ZTsKKworICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyKE1lc3Nh
Z2VOYW1lIG1lc3NhZ2VOYW1lLCB1aW50OF90KiBzdHJlYW0sIHNpemVfdCBzdHJlYW1DYXBhY2l0
eSkKKyAgICAgICAgOiBtX2J1ZmZlcihzdHJlYW0pCisgICAgICAgICwgbV9idWZmZXJDYXBhY2l0
eShzdHJlYW1DYXBhY2l0eSkKKyAgICB7CisgICAgICAgICp0aGlzIDw8IG1lc3NhZ2VOYW1lOwor
ICAgIH0KKworICAgIH5TdHJlYW1Db25uZWN0aW9uRW5jb2RlcigpID0gZGVmYXVsdDsKKworICAg
IGJvb2wgZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplLCBzaXplX3QgYWxpZ25tZW50KQorICAgIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclBvaW50
ZXIgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fYnVm
ZmVyICsgbV9lbmNvZGVkU2l6ZSkpOworICAgICAgICBzaXplX3QgbmV3QnVmZmVyUG9pbnRlciA9
IHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25tZW50LCBidWZmZXJQb2ludGVyKTsKKyAgICAgICAg
aWYgKG5ld0J1ZmZlclBvaW50ZXIgPCBidWZmZXJQb2ludGVyKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpbnRwdHJfdCBhbGlnbmVkU2l6ZSA9IG1fZW5jb2RlZFNpemUgKyAo
bmV3QnVmZmVyUG9pbnRlciAtIGJ1ZmZlclBvaW50ZXIpOworICAgICAgICBpZiAoIXJlc2VydmUo
YWxpZ25lZFNpemUsIHNpemUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB1
aW50OF90KiBidWZmZXIgPSBtX2J1ZmZlciArIGFsaWduZWRTaXplOworICAgICAgICBtZW1jcHko
YnVmZmVyLCBkYXRhLCBzaXplKTsKKyAgICAgICAgbV9lbmNvZGVkU2l6ZSA9IGFsaWduZWRTaXpl
ICsgc2l6ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciYgb3BlcmF0b3I8PChUJiYgdCkK
KyAgICB7CisgICAgICAgIEFyZ3VtZW50Q29kZXI8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJl
bW92ZV9yZWZlcmVuY2VfdDxUPj4sIHZvaWQ+OjplbmNvZGUoKnRoaXMsIHN0ZDo6Zm9yd2FyZDxU
Pih0KSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgQVNTRVJUKGlzVmFsaWQoKSk7IHJldHVybiBtX2VuY29kZWRTaXplOyB9CisgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJDYXBhY2l0eTsgfQorICAgIG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1ZhbGlkKCk7IH0KK3ByaXZhdGU6CisgICAg
Ym9vbCByZXNlcnZlKHNpemVfdCBhbGlnbmVkU2l6ZSwgc2l6ZV90IGFkZGl0aW9uYWxTaXplKQor
ICAgIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBhbGlnbmVkU2l6ZSArIGFkZGl0aW9uYWxTaXpl
OworICAgICAgICBpZiAoc2l6ZSA8IGFsaWduZWRTaXplIHx8IHNpemUgPiBtX2J1ZmZlckNhcGFj
aXR5KSB7CisgICAgICAgICAgICBtX2J1ZmZlckNhcGFjaXR5ID0gMDsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
dWludDhfdCogbV9idWZmZXI7CisgICAgc2l6ZV90IG1fYnVmZmVyQ2FwYWNpdHk7CisgICAgc2l6
ZV90IG1fZW5jb2RlZFNpemUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTViNDQ5NGI3NGZkOTI4NTgwM2U0ZWEyZWY0OGMxMTczNjU5
ZDcxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUu
aCIKKworbmFtZXNwYWNlIElQQyB7CisKK1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OlN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUoY29uc3QgY2hhciogbmFtZSkKKyAgICA6IG1fbmFtZShuYW1l
KQoreworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OmRpc3BhdGNoKFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlcihtX2xvY2spOworICAgICAgICBtX2Z1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShmdW5jdGlv
bikpOworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmlu
ZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVkLgorICAgIH0KKyAgICB3YWtlVXBQcm9jZXNzaW5nVGhy
ZWFkKCk7CisKK30KK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6YWRkU3RyZWFtQ29u
bmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbikKK3sKKyAgICB7
CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgbV9jb25uZWN0aW9ucy5h
ZGQoY29ubmVjdGlvbik7CisgICAgICAgIEFTU0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50
ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5vdCBzdXBwb3J0ZWQuCisgICAgfQorICAgIHdha2VVcFBy
b2Nlc3NpbmdUaHJlYWQoKTsKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpy
ZW1vdmVTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0
aW9uKQoreworICAgIEFTU0VSVChtX3Byb2Nlc3NpbmdUaHJlYWQpOworICAgIHsKKyAgICAgICAg
TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBtX2Nvbm5lY3Rpb25zLnJlbW92ZShjb25u
ZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBk
dXJpbmcgc2h1dGRvd24gbm90IHN1cHBvcnRlZC4KKyAgICB9CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisjZW5kaWYKK30KKwordm9pZCBTdHJl
YW1Db25uZWN0aW9uV29ya1F1ZXVlOjpzdG9wKCkKK3sKKyAgICBtX3Nob3VsZFF1aXQgPSB0cnVl
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmICghbV9wcm9jZXNzaW5nVGhyZWFkKQorICAg
ICAgICByZXR1cm47CisgICAgbV93YWtlVXBTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgbV9wcm9j
ZXNzaW5nVGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOworICAgIG1fcHJvY2Vzc2luZ1RocmVh
ZCA9IG51bGxwdHI7CisjZW5kaWYKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVl
Ojp3YWtlVXAoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1fd2FrZVVwU2VtYXBob3Jl
LnNpZ25hbCgpOworI2VuZGlmCit9CisKK0lQQzo6U2VtYXBob3JlJiBTdHJlYW1Db25uZWN0aW9u
V29ya1F1ZXVlOjp3YWtlVXBTZW1hcGhvcmUoKQoreworICAgIHJldHVybiBtX3dha2VVcFNlbWFw
aG9yZTsKK30KKwordm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjp3YWtlVXBQcm9jZXNz
aW5nVGhyZWFkKCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAobV9wcm9jZXNzaW5n
VGhyZWFkKSB7CisgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byB0YXNrID0gW3RoaXNdKCkgbXV0YWJsZSB7CisgICAg
ICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIHByb2Nlc3NTdHJlYW1zKCk7CisgICAgICAgICAg
ICBpZiAobV9zaG91bGRRdWl0KSB7CisgICAgICAgICAgICAgICAgcHJvY2Vzc1N0cmVhbXMoKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3dh
a2VVcFNlbWFwaG9yZS53YWl0KCk7CisgICAgICAgIH0KKyAgICB9OworICAgIG1fcHJvY2Vzc2lu
Z1RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKG1fbmFtZSwgV1RGTW92ZSh0YXNrKSwgVGhyZWFkVHlw
ZTo6R3JhcGhpY3MsIFRocmVhZDo6UU9TOjpVc2VySW50ZXJhY3RpdmUpOworI2VuZGlmCit9CisK
K3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6cHJvY2Vzc1N0cmVhbXMoKQoreworICAg
IGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdE1lc3NhZ2VMaW1pdCA9IDEwMDA7CisgICAgYm9vbCBo
YXNNb3JlVG9Qcm9jZXNzID0gZmFsc2U7CisgICAgZG8geworICAgICAgICBEZXF1ZTxXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4+IGZ1bmN0aW9uczsKKyAgICAgICAgSGFzaFNldDxSZWY8U3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2U+PiBjb25uZWN0aW9uczsKKyAgICAgICAgeworICAgICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAgICAgICAgZnVuY3Rpb25zLnN3
YXAobV9mdW5jdGlvbnMpOworICAgICAgICAgICAgY29ubmVjdGlvbnMgPSBtX2Nvbm5lY3Rpb25z
OworICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbnMpCisg
ICAgICAgICAgICBXVEZNb3ZlKGZ1bmN0aW9uKSgpOworCisgICAgICAgIGhhc01vcmVUb1Byb2Nl
c3MgPSBmYWxzZTsKKyAgICAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogY29ubmVjdGlvbnMp
CisgICAgICAgICAgICBoYXNNb3JlVG9Qcm9jZXNzIHw9IGNvbm5lY3Rpb24tPmRpc3BhdGNoU3Ry
ZWFtTWVzc2FnZXMoZGVmYXVsdE1lc3NhZ2VMaW1pdCkgPT0gU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6Okhhc01vcmVNZXNzYWdlczsKKyAgICB9IHdoaWxlIChoYXNNb3JlVG9Qcm9jZXNzKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1MjZhMzUyNjY1MWRkZmYzOTBhN2RmNzFm
Yzk1ZGE1YTQxZGNjNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVk
ZSAiU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIFN0cmVhbUNvbm5lY3Rp
b25Xb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKK3B1YmxpYzoK
KyAgICBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlKGNvbnN0IGNoYXIqKTsKKyAgICB+U3RyZWFt
Q29ubmVjdGlvbldvcmtRdWV1ZSgpID0gZGVmYXVsdDsKKyAgICB2b2lkIGFkZFN0cmVhbUNvbm5l
Y3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmKTsKKyAgICB2b2lkIHJlbW92ZVN0cmVh
bUNvbm5lY3Rpb24oU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmKTsKKworICAgIHZvaWQgZGlz
cGF0Y2goV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpOwor
CisgICAgdm9pZCB3YWtlVXAoKTsKKworICAgIFNlbWFwaG9yZSYgd2FrZVVwU2VtYXBob3JlKCk7
Citwcml2YXRlOgorICAgIHZvaWQgd2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpOworICAgIHZvaWQg
cHJvY2Vzc1N0cmVhbXMoKTsKKworICAgIGNvbnN0IGNoYXIqIGNvbnN0IG1fbmFtZTsKKyAgICBT
ZW1hcGhvcmUgbV93YWtlVXBTZW1hcGhvcmU7CisgICAgUmVmUHRyPFRocmVhZD4gbV9wcm9jZXNz
aW5nVGhyZWFkOworCisgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9zaG91bGRRdWl0IHsgZmFsc2Ug
fTsKKworICAgIExvY2sgbV9sb2NrOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fZnVu
Y3Rpb25zOworICAgIEhhc2hTZXQ8UmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPj4gbV9j
b25uZWN0aW9uczsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRkNDg0Yjc4ZmJmOWRm
NmRmOGE5ZmRiN2U4Y2E4OWFkNTdlNTNiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTMw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbVNl
cnZlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCisKK25hbWVzcGFjZSBJUEMgeworCitTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UoQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSwgU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQorICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rp
b24pCisgICAgLCBtX3dvcmtRdWV1ZSh3b3JrUXVldWUpCisgICAgLCBtX2J1ZmZlcihXVEZNb3Zl
KHN0cmVhbSkpCit7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0
UmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpCit7CisgICAgbV9jb25uZWN0aW9uLT5hZGRNZXNzYWdlUmVjZWl2ZVF1
ZXVlKCp0aGlzLCByZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIG1fd29ya1F1ZXVl
LmFkZFN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOworfQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlOjpzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSByZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgbV9jb25uZWN0aW9uLT5yZW1v
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7CisgICAg
bV93b3JrUXVldWUucmVtb3ZlU3RyZWFtQ29ubmVjdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJiBtZXNzYWdlKQoreworICAgIHsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX291dE9mU3RyZWFtTWVzc2FnZXNMb2NrKTsKKyAgICAgICAgbV9v
dXRPZlN0cmVhbU1lc3NhZ2VzLmFwcGVuZChXVEZNb3ZlKG1lc3NhZ2UpKTsKKyAgICB9CisgICAg
bV93b3JrUXVldWUud2FrZVVwKCk7Cit9CisKK09wdGlvbmFsPFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKCkKK3sK
KyAgICBzaXplX3QgcmVjZWl2ZXJMaW1pdCA9IHNoYXJlZFNlbmRlck9mZnNldCgpLmxvYWQoc3Rk
OjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CisgICAgaWYgKHJlY2VpdmVyTGltaXQgPT0gU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4o
bV9yZWNlaXZlck9mZnNldCwgcmVjZWl2ZXJMaW1pdCk7CisgICAgaWYgKHJlc3VsdC5zaXplIDwg
bWluaW11bU1lc3NhZ2VTaXplKSB7CisgICAgICAgIHJlY2VpdmVyTGltaXQgPSBzaGFyZWRTZW5k
ZXJPZmZzZXQoKS5jb21wYXJlRXhjaGFuZ2VTdHJvbmcocmVjZWl2ZXJMaW1pdCwgU3RyZWFtQ29u
bmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCBzdGQ6Om1l
bW9yeV9vcmRlcl9hY3FfcmVsLCBzdGQ6Om1lbW9yeV9vcmRlcl9hY3FfcmVsKTsKKyAgICAgICAg
QVNTRVJUKCEocmVjZWl2ZXJMaW1pdCAmIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9m
ZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZykpOworICAgICAgICByZWNlaXZlckxpbWl0ID0gY2xh
bXBlZExpbWl0KHJlY2VpdmVyTGltaXQpOworICAgICAgICByZXN1bHQgPSBhbGlnbmVkU3Bhbiht
X3JlY2VpdmVyT2Zmc2V0LCByZWNlaXZlckxpbWl0KTsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0
LnNpemUgPj0gbWluaW11bU1lc3NhZ2VTaXplKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJh
c2U6OnJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKQoreworICAgIEFTU0VSVChyZWFkU2l6ZSk7Cisg
ICAgcmVhZFNpemUgPSBzdGQ6Om1heChyZWFkU2l6ZSwgbWluaW11bU1lc3NhZ2VTaXplKTsKKyAg
ICBzaXplX3QgcmVjZWl2ZXJPZmZzZXQgPSB3cmFwT2Zmc2V0KGFsaWduT2Zmc2V0KG1fcmVjZWl2
ZXJPZmZzZXQpICsgcmVhZFNpemUpOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgc2l6ZV90
IG9sZFJlY2VpdmVyT2Zmc2V0ID0gc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5leGNoYW5nZShyZWNl
aXZlck9mZnNldCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgLy8gSWYgdGhlIHNl
bmRlciB3cm90ZSBvdmVyIHJlY2VpdmVyT2Zmc2V0LCBpdCBtZWFucyB0aGUgc2VuZGVyIGlzIHdh
aXRpbmcuCisgICAgaWYgKG9sZFJlY2VpdmVyT2Zmc2V0ID09IFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OnJlY2VpdmVyT2Zmc2V0U2VuZGVySXNXYWl0aW5nVGFnKQorICAgICAgICBtX2J1ZmZlci5z
ZW5kZXJXYWl0U2VtYXBob3JlKCkuc2lnbmFsKCk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQo
IShvbGRSZWNlaXZlck9mZnNldCAmIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnJlY2VpdmVyT2Zm
c2V0U2VuZGVySXNXYWl0aW5nVGFnKSk7CisjZWxzZQorICAgIHNoYXJlZFJlY2VpdmVyT2Zmc2V0
KCkuc3RvcmUocmVjZWl2ZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2UpOworICAg
IC8vIElQQzo6U2VtYXBob3JlIG5vdCBpbXBsZW1lbnRlZCBmb3IgdGhlIHBsYXRmb3JtLiBDbGll
bnQgd2lsbCBwb2xsIGFuZCB5aWVsZC4KKyNlbmRpZgorCisgICAgbV9yZWNlaXZlck9mZnNldCA9
IHJlY2VpdmVyT2Zmc2V0OworfQorCitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3BhbiBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4oc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxpbWl0KQoreworICAgIEFTU0VSVChvZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBBU1NF
UlQobGltaXQgPCBkYXRhU2l6ZSgpKTsKKyAgICBzaXplX3QgYWxpZ25lZCA9IGFsaWduT2Zmc2V0
KG9mZnNldCk7CisgICAgc2l6ZV90IHJlc3VsdFNpemUgPSAwOworICAgIGlmIChvZmZzZXQgPCBs
aW1pdCkgeworICAgICAgICBpZiAob2Zmc2V0IDw9IGFsaWduZWQgJiYgYWxpZ25lZCA8IGxpbWl0
KQorICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0g
ZWxzZSBpZiAob2Zmc2V0ID4gbGltaXQpIHsKKyAgICAgICAgaWYgKGFsaWduZWQgPj0gb2Zmc2V0
IHx8IGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgIHJlc3VsdFNpemUgPSBzaXplKGFsaWdu
ZWQsIGxpbWl0KTsKKyAgICB9CisgICAgcmV0dXJuIHsgZGF0YSgpICsgYWxpZ25lZCwgcmVzdWx0
U2l6ZSB9OworfQorCitzaXplX3QgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNpemUoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KQoreworICAgIGlmIChvZmZzZXQgPD0gbGltaXQpCisg
ICAgICAgIHJldHVybiBsaW1pdCAtIG9mZnNldDsKKyAgICByZXR1cm4gZGF0YVNpemUoKSAtIG9m
ZnNldDsKK30KKworc2l6ZV90IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpjbGFtcGVkTGlt
aXQoc2l6ZV90IHVudHJ1c3RlZExpbWl0KSBjb25zdAoreworICAgIEFTU0VSVCh1bnRydXN0ZWRM
aW1pdCA8IChkYXRhU2l6ZSgpIC0gMSkpOworICAgIHJldHVybiBzdGQ6Om1pbih1bnRydXN0ZWRM
aW1pdCwgZGF0YVNpemUoKSAtIDEpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU4MWM2OTAx
ZDUxMjVhMDY0YmE0ZTNhNzA2OGU0MmExOWRmOTFiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaApAQCAtMCwwICsx
LDI4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgor
I2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCituYW1lc3BhY2UgSVBDIHsKKworY2xh
c3MgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTsKKworY2xhc3MgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U+LCBwcm90ZWN0ZWQgTWVzc2FnZVJlY2VpdmVRdWV1ZSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UpOworcHVibGljOgorICAgIH5T
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSgpIG92ZXJyaWRlID0gZGVmYXVsdDsKKworICAgIENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKworICAgIGVu
dW0gRGlzcGF0Y2hSZXN1bHQgOiBib29sIHsKKyAgICAgICAgSGFzTm9NZXNzYWdlcywKKyAgICAg
ICAgSGFzTW9yZU1lc3NhZ2VzCisgICAgfTsKKyAgICB2aXJ0dWFsIERpc3BhdGNoUmVzdWx0IGRp
c3BhdGNoU3RyZWFtTWVzc2FnZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkgPSAwOworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHZvaWQgc2VuZFN5bmNSZXBseSh1aW50
NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLik7CisKK3Byb3RlY3RlZDoKKyAgICBT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZShJUEM6OkNvbm5lY3Rpb24mLCBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiYsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmKTsKKworICAgIHZvaWQgc3Rh
cnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKTsKKyAgICB2b2lkIHN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwoUmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKworICAgIC8vIE1lc3NhZ2VSZWNlaXZlUXVldWUKKyAg
ICB2b2lkIGVucXVldWVNZXNzYWdlKENvbm5lY3Rpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
cj4mJikgZmluYWw7CisKKyAgICBzdHJ1Y3QgU3BhbiB7CisgICAgICAgIHVpbnQ4X3QqIGRhdGE7
CisgICAgICAgIHNpemVfdCBzaXplOworICAgIH07CisgICAgT3B0aW9uYWw8U3Bhbj4gdHJ5QXF1
aXJlKCk7CisKKyAgICB2b2lkIHJlbGVhc2Uoc2l6ZV90IHJlYWRTaXplKTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBtaW5pbXVtTWVzc2FnZVNpemUgPSBTdHJlYW1Db25uZWN0aW9uRW5j
b2Rlcjo6bWluaW11bU1lc3NhZ2VTaXplOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1l
c3NhZ2VBbGlnbm1lbnQgPSBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlcjo6bWVzc2FnZUFsaWdubWVu
dDsKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7Cisg
ICAgc2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAgICBzaXplX3Qg
Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7CisgICAgc2l6ZV90IHdy
YXBPZmZzZXQoc2l6ZV90IG9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIud3JhcE9mZnNl
dChvZmZzZXQpOyB9CisgICAgc2l6ZV90IGFsaWduT2Zmc2V0KHNpemVfdCBvZmZzZXQpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmFsaWduT2Zmc2V0PG1lc3NhZ2VBbGlnbm1lbnQ+KG9mZnNldCwg
bWluaW11bU1lc3NhZ2VTaXplKTsgfQorICAgIEF0b21pYzxzaXplX3Q+JiBzaGFyZWRTZW5kZXJP
ZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5zZW5kZXJPZmZzZXQoKTsgfQorICAgIEF0b21pYzxz
aXplX3Q+JiBzaGFyZWRSZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnJlY2VpdmVy
T2Zmc2V0KCk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
ZGF0YSgpOyB9CisgICAgc2l6ZV90IGRhdGFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
ZGF0YVNpemUoKTsgfQorCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwor
ICAgIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIG1fd29ya1F1ZXVlOworCisgICAgc2l6ZV90
IG1fcmVjZWl2ZXJPZmZzZXQgeyAwIH07CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1
ZmZlcjsKKworICAgIExvY2sgbV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jazsKKyAgICBEZXF1ZTxz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4+IG1fb3V0T2ZTdHJlYW1NZXNzYWdlczsKKworICAgIGZy
aWVuZCBjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2Vu
ZFN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBBcmd1bWVudHMmJi4uLiBhcmd1bWVu
dHMpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBzZW5kaW5nIHRvIGJ1ZmZlci4KKyAgICBh
dXRvIGVuY29kZXIgPSBtYWtlVW5pcXVlPElQQzo6RW5jb2Rlcj4oSVBDOjpNZXNzYWdlTmFtZTo6
U3luY01lc3NhZ2VSZXBseSwgc3luY1JlcXVlc3RJRCk7CisgICAgKCplbmNvZGVyIDw8IC4uLiA8
PCBhcmd1bWVudHMpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShXVEZNb3ZlKGVu
Y29kZXIpKTsKK30KKworLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbiByZXByZXNlbnRzIHRoZSBj
b25uZWN0aW9uIGJldHdlZW4gc3RyZWFtIHNlbmRlciBhbmQgcmVjZWl2ZXIsIGFzIHVzZWQgYnkg
dGhlIHJlY2VpdmVyLgorLy8gU3RyZWFtU2VydmVyQ29ubmVjdGlvbjoKKy8vICAqIEhvbGRzIHRo
ZSBtZXNzYWdlcyB0b3dhcmRzIHRoZSByZWNlaXZlci4KKy8vICAqIFNlbmRzIHRoZSByZXBsaWVz
IGJhY2sgdG8gdGhlIHNlbmRlciB2aWEgdGhlIHN0cmVhbSBvciBub3JtYWwgQ29ubmVjdGlvbiBm
YWxsYmFjay4KKy8vCisvLyBSZWNlaXZlciB0ZW1wbGF0ZSBjb250cmFjdDoKKy8vICAgdm9pZCBk
aWRSZWNlaXZlU3RyZWFtTWVzc2FnZShTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIERlY29k
ZXImKTsKKy8vCisvLyBUaGUgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiBkb2VzIG5vdCB0cnVzdCB0
aGUgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi4KK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgor
Y2xhc3MgU3RyZWFtU2VydmVyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uPiBjcmVhdGUoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlciYmIHN0cmVhbUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyZWFtU2VydmVyQ29ubmVj
dGlvbihjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1ZSkpOworICAg
IH0KKyAgICB+U3RyZWFtU2VydmVyQ29ubmVjdGlvbigpIGZpbmFsID0gZGVmYXVsdDsKKworICAg
IHZvaWQgc3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYsIFJlY2VpdmVyTmFtZSwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgLy8gU3RvcHMgdGhlIG1lc3NhZ2UgcmVjZWlwdC4g
Tm90ZTogYWxyZWFkeSByZWNlaXZlZCBtZXNzYWdlcyBtaWdodCBzdGlsbCBiZSBkZWxpdmVyZWQu
CisgICAgdm9pZCBzdG9wUmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKTsKKworICAgIC8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIG92ZXJy
aWRlcy4KKyAgICBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBt
ZXNzYWdlTGltaXQpIGZpbmFsOworCitwcml2YXRlOgorICAgIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVh
bUJ1ZmZlciwgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgd29ya1F1ZXVlKQorICAgICAgICA6
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKGNvbm5lY3Rpb24sIFdURk1vdmUoc3RyZWFtQnVm
ZmVyKSwgd29ya1F1ZXVlKQorICAgIHsKKyAgICB9CisgICAgYm9vbCBwcm9jZXNzU2V0U3RyZWFt
RGVzdGluYXRpb25JRChEZWNvZGVyJiYsIFJlZlB0cjxSZWNlaXZlcj4mIGN1cnJlbnRSZWNlaXZl
cik7CisgICAgYm9vbCBkaXNwYXRjaFN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmLCBSZWNlaXZlciYp
OworICAgIGJvb2wgZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmKTsKKyAgICBM
b2NrIG1fcmVjZWl2ZXJzTG9jazsKKyAgICB1c2luZyBSZWNlaXZlcnNNYXAgPSBIYXNoTWFwPHN0
ZDo6cGFpcjx1aW50OF90LCB1aW50NjRfdD4sIFJlZjxSZWNlaXZlcj4+OworICAgIFJlY2VpdmVy
c01hcCBtX3JlY2VpdmVyczsKKworICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQg
PSAwOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Cit2b2lkIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpzdGFydFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyJiBy
ZWNlaXZlciwgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCkKK3sKKyAgICB7CisgICAgICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nh
c3Q8dWludDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7CisgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgQVNTRVJUKCFtX3Jl
Y2VpdmVycy5jb250YWlucyhrZXkpKTsKKyAgICAgICAgbV9yZWNlaXZlcnMuYWRkKGtleSwgbWFr
ZVJlZihyZWNlaXZlcikpOworICAgIH0KKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6
c3RhcnRSZWNlaXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Cit2b2lkIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXJOYW1lIHJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZTo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzSW1wbChyZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQpOworICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4ocmVjZWl2ZXJOYW1lKSwgZGVzdGluYXRpb25JRCk7CisgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgIEFTU0VSVChtX3JlY2VpdmVycy5jb250YWlu
cyhrZXkpKTsKKyAgICBtX3JlY2VpdmVycy5yZW1vdmUoa2V5KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgUmVjZWl2ZXI+CitTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6RGlzcGF0Y2hSZXN1
bHQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoU3RyZWFtTWVzc2Fn
ZXMoc2l6ZV90IG1lc3NhZ2VMaW1pdCkKK3sKKyAgICBSZWZQdHI8UmVjZWl2ZXI+IGN1cnJlbnRS
ZWNlaXZlcjsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IFdURjo6aXNWYWxpZChSZWNlaXZlck5h
bWUpLgorICAgIHVpbnQ4X3QgY3VycmVudFJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KFJlY2VpdmVyTmFtZTo6SW52YWxpZCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1lc3NhZ2VMaW1pdDsgKytpKSB7CisgICAgICAgIGF1dG8gc3BhbiA9IHRyeUFxdWlyZSgpOwor
ICAgICAgICBpZiAoIXNwYW4pCisgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhh
c05vTWVzc2FnZXM7CisgICAgICAgIElQQzo6RGVjb2RlciBkZWNvZGVyIHsgc3Bhbi0+ZGF0YSwg
c3Bhbi0+c2l6ZSwgbV9jdXJyZW50RGVzdGluYXRpb25JRCB9OworICAgICAgICBpZiAoIWRlY29k
ZXIuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVj
ZWl2ZUludmFsaWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGlu
YXRpb25JRCkgeworICAgICAgICAgICAgaWYgKCFwcm9jZXNzU2V0U3RyZWFtRGVzdGluYXRpb25J
RChXVEZNb3ZlKGRlY29kZXIpLCBjdXJyZW50UmVjZWl2ZXIpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGlmICghZGlz
cGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoV1RGTW92ZShkZWNvZGVyKSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnJlbnRSZWNlaXZlck5hbWUgIT0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpKSB7CisgICAg
ICAgICAgICBjdXJyZW50UmVjZWl2ZXJOYW1lID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOworICAgICAgICAgICAgY3VycmVudFJlY2VpdmVyID0g
bnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNlaXZlcikgeworICAg
ICAgICAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90Pihj
dXJyZW50UmVjZWl2ZXJOYW1lKSwgbV9jdXJyZW50RGVzdGluYXRpb25JRCk7CisgICAgICAgICAg
ICBpZiAoIVJlY2VpdmVyc01hcDo6aXNWYWxpZEtleShrZXkpKSB7CisgICAgICAgICAgICAgICAg
bV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFz
Tm9NZXNzYWdlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG1f
cmVjZWl2ZXJzLmdldChrZXkpOworICAgICAgICB9CisgICAgICAgIGlmICghY3VycmVudFJlY2Vp
dmVyKSB7CisgICAgICAgICAgICAvLyBWYWxpZCBzY2VuYXJpbyBpcyB3aGVuIHJlY2VpdmVyIGhh
cyBiZWVuIHJlbW92ZWQsIGJ1dCB0aGVyZSBhcmUgbWVzc2FnZXMgZm9yIGl0IGluIHRoZSBidWZm
ZXIuCisgICAgICAgICAgICAvLyBGSVhNRTogU2luY2Ugd2UgZG8gbm90IGhhdmUgYSByZWNlaXZl
ciwgd2UgZG9uJ3Qga25vdyBob3cgdG8gZGVjb2RlIHRoZSBtZXNzYWdlLgorICAgICAgICAgICAg
Ly8gVGhpcyBtZWFucyB3ZSBtdXN0IHRpbWVvdXQgZXZlcnkgcmVjZWl2ZXIgaW4gdGhlIHN0cmVh
bSBjb25uZWN0aW9uLgorICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIGFzc2VydCB0aGF0IHRo
ZSByZWNlaXZlcnMgYXJlIGVtcHR5LCBhcyB3ZSBvbmx5IGhhdmUgdXAgdG8gb25lIHJlY2VpdmVy
IGluCisgICAgICAgICAgICAvLyBhIHN0cmVhbSBjb25uZWN0aW9uIHVudGlsIHBvc3NpYmlsaXR5
IG9mIHNraXBwaW5nIGlzIGltcGxlbWVudGVkIHByb3Blcmx5LgorICAgICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2spOworICAgICAgICAgICAgQVNTRVJUKG1f
cmVjZWl2ZXJzLmlzRW1wdHkoKSk7CisgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6
Okhhc05vTWVzc2FnZXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFkaXNwYXRjaFN0cmVhbU1l
c3NhZ2UoV1RGTW92ZShkZWNvZGVyKSwgKmN1cnJlbnRSZWNlaXZlcikpCisgICAgICAgICAgICBy
ZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgfQorICAgIHJldHVybiBE
aXNwYXRjaFJlc3VsdDo6SGFzTW9yZU1lc3NhZ2VzOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBS
ZWNlaXZlcj4KK2Jvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnByb2Nlc3NT
ZXRTdHJlYW1EZXN0aW5hdGlvbklEKERlY29kZXImJiBkZWNvZGVyLCBSZWZQdHI8UmVjZWl2ZXI+
JiBjdXJyZW50UmVjZWl2ZXIpCit7CisgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDA7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXN0aW5hdGlvbklEKSkgeworICAgICAgICBtX2Nvbm5l
Y3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5h
bWUoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG1fY3VycmVudERl
c3RpbmF0aW9uSUQgIT0gZGVzdGluYXRpb25JRCkgeworICAgICAgICBtX2N1cnJlbnREZXN0aW5h
dGlvbklEID0gZGVzdGluYXRpb25JRDsKKyAgICAgICAgY3VycmVudFJlY2VpdmVyID0gbnVsbHB0
cjsKKyAgICB9CisgICAgcmVsZWFzZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29s
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2Uo
RGVjb2RlciYmIGRlY29kZXIsIFJlY2VpdmVyJiByZWNlaXZlcikKK3sKKyAgICByZWNlaXZlci5k
aWRSZWNlaXZlU3RyZWFtTWVzc2FnZSgqdGhpcywgZGVjb2Rlcik7CisgICAgaWYgKCFkZWNvZGVy
LmlzVmFsaWQoKSkgeworICAgICAgICBtX2Nvbm5lY3Rpb24tPmRpc3BhdGNoRGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKGRlY29kZXIubWVzc2FnZU5hbWUoKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgcmVsZWFzZShkZWNvZGVyLmN1cnJlbnRCdWZmZXJQb3NpdGlvbigpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29s
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaE91dE9mU3RyZWFtTWVz
c2FnZShEZWNvZGVyJiYgZGVjb2RlcikKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4g
bWVzc2FnZTsKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9vdXRPZlN0
cmVhbU1lc3NhZ2VzTG9jayk7CisgICAgICAgIGlmIChtX291dE9mU3RyZWFtTWVzc2FnZXMuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtZXNzYWdlID0gbV9v
dXRPZlN0cmVhbU1lc3NhZ2VzLnRha2VGaXJzdCgpOworICAgIH0KKyAgICBpZiAoIW1lc3NhZ2Up
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0cjxSZWNlaXZlcj4gcmVjZWl2ZXI7
CisgICAgeworICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSksIG1lc3NhZ2UtPmRlc3RpbmF0
aW9uSUQoKSk7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2Nr
KTsKKyAgICAgICAgcmVjZWl2ZXIgPSBtX3JlY2VpdmVycy5nZXQoa2V5KTsKKyAgICB9CisgICAg
aWYgKHJlY2VpdmVyKSB7CisgICAgICAgIHJlY2VpdmVyLT5kaWRSZWNlaXZlU3RyZWFtTWVzc2Fn
ZSgqdGhpcywgKm1lc3NhZ2UpOworICAgICAgICBpZiAoIW1lc3NhZ2UtPmlzVmFsaWQoKSkgewor
ICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShtZXNzYWdlLT5tZXNzYWdlTmFtZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAvLyBJZiByZWNlaXZlciBkb2VzIG5vdCBleGlzdCBpZiBpdCBo
YXMgYmVlbiByZW1vdmVkIGJ1dCBtZXNzYWdlcyBhcmUgc3RpbGwgcGVuZGluZyB0byBiZQorICAg
IC8vIHByb2Nlc3NlZC4gSXQncyBvayB0byBza2lwIHN1Y2ggbWVzc2FnZXMuCisgICAgLy8gRklY
TUU6IE5vdGUsIGNvcnJlc3BvbmRpbmcgc2tpcCBpcyBub3QgcG9zc2libGUgYXQgdGhlIG1vbWVu
dCBmb3Igc3RyZWFtIG1lc3NhZ2VzLgorICAgIHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVy
UG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oCmluZGV4IDc4NTRmYThmMTg2OGZiOGU0NTYyMjg5
ZmRkZjZmMjc5NWFmMmQ5MGQuLjgzZDk5ZjBjYmM4ZmUwNDgyMGI0NzgzYzljMDc2YWI1N2EzZWFi
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvTWFjaFBvcnQuaApAQCAt
MjUsOSArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIu
aCIKICNpbmNsdWRlICJBdHRhY2htZW50LmgiCi0jaW5jbHVkZSAiRGVjb2Rlci5oIgotI2luY2x1
ZGUgIkVuY29kZXIuaCIKIAogbmFtZXNwYWNlIElQQyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcAppbmRleCA1YWRmZDgyYmVjYTQ2ZGIw
MjQ0N2U4YmNiNmQzODRjMmMwMTU2YTYwLi45MGI4MDJjODA5NmQ3NmMzMmI0Yjk3ZmI4MTJlYWY5
MWZmMTMzZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vQ29u
bmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5l
Y3Rpb25XaW4uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRDb2Rlci5oIgogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JhbmRvbU51bWJlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKaW5kZXggOTI5YmViZDA5ZTdjNGY1Y2UzMTRjNTRiZDY5MTM2MjljMzVlMjY3Yi4uMTRj
MzhjZmViZTgyOGQ2YTIxNzU5Y2I4NGM3MGY0MjY3MTYzZWM1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yNCw4ICsyNCw5IEBAIGltcG9ydCBjb2xsZWN0
aW9ucwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiAKK2Zyb20gbW9kZWwgaW1wb3J0IE1lc3NhZ2VS
ZWNlaXZlciwgTWVzc2FnZQogZnJvbSB3ZWJraXQgaW1wb3J0IHBhcnNlcgotZnJvbSB3ZWJraXQu
bW9kZWwgaW1wb3J0IEJVSUxUSU5fQVRUUklCVVRFLCBBU1lOQ19BVFRSSUJVVEUsIFNZTkNIUk9O
T1VTX0FUVFJJQlVURSwgTUFJTlRIUkVBRENBTExCQUNLX0FUVFJJQlVURQorZnJvbSB3ZWJraXQu
bW9kZWwgaW1wb3J0IEJVSUxUSU5fQVRUUklCVVRFLCBBU1lOQ19BVFRSSUJVVEUsIFNZTkNIUk9O
T1VTX0FUVFJJQlVURSwgTUFJTlRIUkVBRENBTExCQUNLX0FUVFJJQlVURSwgU1RSRUFNX0FUVFJJ
QlVURSwgV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUKIAogX2xpY2Vuc2VfaGVhZGVyID0gIiIi
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KQEAgLTUzLDEzICs1NCwxMSBAQCBfbGljZW5zZV9oZWFkZXIgPSAiIiIvKgogCiAiIiIK
IAotV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUgPSAnV2FudHNDb25uZWN0aW9uJwogV0FOVFNf
RElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUgPSAnV2FudHNEaXNwYXRjaE1lc3NhZ2UnCiBXQU5U
U19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSA9ICdXYW50c0FzeW5jRGlzcGF0Y2hN
ZXNzYWdlJwogTEVHQUNZX1JFQ0VJVkVSX0FUVFJJQlVURSA9ICdMZWdhY3lSZWNlaXZlcicKIE5P
VF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSA9ICdOb3RSZWZDb3VudGVkJwogCi0KIGRl
ZiByZWNlaXZlcl9lbnVtZXJhdG9yX29yZGVyX2tleShyZWNlaXZlcl9uYW1lKToKICAgICBpZiBy
ZWNlaXZlcl9uYW1lID09ICdJUEMnOgogICAgICAgICByZXR1cm4gMQpAQCAtMjEzLDcgKzIxMiw3
IEBAIGRlZiBtZXNzYWdlX3RvX3N0cnVjdF9kZWNsYXJhdGlvbihyZWNlaXZlciwgbWVzc2FnZSk6
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNh
bGxiYWNrVGhyZWFkID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlckNhbGxUaHJlYWQ6Ok1haW5UaHJl
YWQ7XG4nKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9IFdURjo6Q29tcGxldGlvbkhhbmRs
ZXJDYWxsVGhyZWFkOjpDb25zdHJ1Y3Rpb25UaHJlYWQ7XG4nKQotICAgICAgICBpZiBtZXNzYWdl
Lmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRy
aWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAgaWYgKG1lc3NhZ2UuaGFzX2F0dHJpYnV0
ZShTWU5DSFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19B
VFRSSUJVVEUpKSBhbmQgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVU
RSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3RhdGljIHZvaWQgc2VuZChzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYmLCBJUEM6OkNvbm5lY3Rpb24mJykKICAgICAgICAg
ICAgIGlmIGxlbihzZW5kX3BhcmFtZXRlcnMpOgogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJywgJXMnICUgY29tcGxldGlvbl9oYW5kbGVyX3BhcmFtZXRlcnMpCkBAIC0yNjEsNiArMjYw
LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICBy
ZXR1cm4gZnJvemVuc2V0KFsKICAgICAgICAgJ0lQQzo6RGF0YVJlZmVyZW5jZScsCiAgICAgICAg
ICdJUEM6OkZvbnRSZWZlcmVuY2UnLAorICAgICAgICAnSVBDOjpTZW1hcGhvcmUnLAogICAgICAg
ICAnTWFjaFNlbmRSaWdodCcsCiAgICAgICAgICdNZWRpYVRpbWUnLAogICAgICAgICAnU3RyaW5n
JywKQEAgLTU3MywxMCArNTczLDE1IEBAIGRlZiBzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KHJlY2Vp
dmVyLCBtZXNzYWdlKToKICAgICAgICAgZGlzcGF0Y2hfZnVuY3Rpb24gKz0gJ0FzeW5jJwogCiAg
ICAgd2FudHNfY29ubmVjdGlvbiA9IG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5DSFJPTk9VU19B
VFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShXQU5UU19DT05ORUNUSU9OX0FUVFJJ
QlVURSkKKyAgICBtYXliZV9yZXBseV9lbmNvZGVyID0gIiwgKnJlcGx5RW5jb2RlciIKKyAgICBp
ZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAgICAgICBtYXli
ZV9yZXBseV9lbmNvZGVyID0gJycKKyAgICBlbGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShTWU5D
SFJPTk9VU19BVFRSSUJVVEUpIG9yIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShBU1lOQ19BVFRSSUJV
VEUpOgorICAgICAgICBtYXliZV9yZXBseV9lbmNvZGVyID0gJywgcmVwbHlFbmNvZGVyJwogCiAg
ICAgcmVzdWx0ID0gW10KICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZU5hbWUoKSA9PSBNZXNzYWdlczo6JXM6OiVzOjpuYW1lKCkpIHtcbicgJSAocmVjZWl2ZXIubmFt
ZSwgbWVzc2FnZS5uYW1lKSkKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVz
c2FnZXM6OiVzOjolcz4oJXNkZWNvZGVyLCAlc3JlcGx5RW5jb2RlciwgdGhpcywgJiVzKTtcbicg
JSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJ2Nvbm5l
Y3Rpb24sICcgaWYgd2FudHNfY29ubmVjdGlvbiBlbHNlICcnLCAnJyBpZiBtZXNzYWdlLmhhc19h
dHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUo
QVNZTkNfQVRUUklCVVRFKSBlbHNlICcqJywgaGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwgbWVz
c2FnZSkpKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgSVBDOjolczxNZXNzYWdlczo6JXM6
OiVzPiglc2RlY29kZXIlcywgdGhpcywgJiVzKTtcbicgJSAoZGlzcGF0Y2hfZnVuY3Rpb24sIHJl
Y2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFtZSwgJ2Nvbm5lY3Rpb24sICcgaWYgd2FudHNfY29ubmVj
dGlvbiBlbHNlICcnLCBtYXliZV9yZXBseV9lbmNvZGVyLCBoYW5kbGVyX2Z1bmN0aW9uKHJlY2Vp
dmVyLCBtZXNzYWdlKSkpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICByZXR1cm47XG4nKQog
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9XG4nKQogICAgIHJldHVybiBzdXJyb3VuZF9pbl9jb25k
aXRpb24oJycuam9pbihyZXN1bHQpLCBtZXNzYWdlLmNvbmRpdGlvbikKQEAgLTg3NSw3ICs4ODAs
NyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgaWYg
bWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9IE5vbmUgYW5kIChtZXNzYWdlLmhhc19hdHRyaWJ1
dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNf
QVRUUklCVVRFKSk6CiAgICAgICAgICAgICBkZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzLmFwcGVu
ZChtZXNzYWdlKQogCi0gICAgaWYgZGVsYXllZF9vcl9hc3luY19tZXNzYWdlczoKKyAgICBpZiBk
ZWxheWVkX29yX2FzeW5jX21lc3NhZ2VzIGFuZCBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShT
VFJFQU1fQVRUUklCVVRFKToKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnbmFtZXNwYWNlIE1lc3Nh
Z2VzIHtcblxubmFtZXNwYWNlICVzIHtcblxuJyAlIHJlY2VpdmVyLm5hbWUpCiAKICAgICAgICAg
Zm9yIG1lc3NhZ2UgaW4gZGVsYXllZF9vcl9hc3luY19tZXNzYWdlczoKQEAgLTkyMywyNSArOTI4
LDQ0IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIocmVjZWl2ZXIpOgogICAgICAgICBl
bHNlOgogICAgICAgICAgICAgYXN5bmNfbWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpCiAKLSAgICBp
ZiBhc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENI
X01FU1NBR0VfQVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5D
X0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKToKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9p
ZCAlczo6ZGlkUmVjZWl2ZSVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBp
ZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2Ug
JycpKQorICAgIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSk6Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tc
bicpCi0gICAgICAgIGlmIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKE5PVF9SRUZDT1VOVEVE
X1JFQ0VJVkVSX0FUVFJJQlVURSk6CisgICAgICAgIGFzc2VydChyZWNlaXZlci5oYXNfYXR0cmli
dXRlKE5PVF9SRUZDT1VOVEVEX1JFQ0VJVkVSX0FUVFJJQlVURSkpCisgICAgICAgIGFzc2VydChu
b3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVU
RSkpCisgICAgICAgIGFzc2VydChub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lO
Q19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkpCisKKyAgICAgICAgcmVzdWx0ICs9IFthc3lu
Y19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gYXN5
bmNfbWVzc2FnZXNdCisgICAgICAgIHJlc3VsdCArPSBbc3luY19tZXNzYWdlX3N0YXRlbWVudChy
ZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gc3luY19tZXNzYWdlc10KKworICAgICAg
ICBpZiAocmVjZWl2ZXIuc3VwZXJjbGFzcyk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgJXM6OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpO1xuJyAl
IChyZWNlaXZlci5zdXBlcmNsYXNzKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7XG4nKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTtcbicpCisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7XG4nKQorICAgICAgICBy
ZXN1bHQuYXBwZW5kKCd9XG4nKQorICAgIGVsaWYgYXN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIu
aGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3IgcmVjZWl2
ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6
CisgICAgICAgIHJlY2VpdmVfdmFyaWFudCA9IHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFz
X2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnCisgICAgICAgIHJl
c3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUs
IHJlY2VpdmVfdmFyaWFudCkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCisgICAgICAg
IGlmIG5vdCAocmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9B
VFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSkpOgog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpO1xuJykKIAogICAgICAgICByZXN1bHQgKz0gW2FzeW5jX21lc3NhZ2Vfc3RhdGVt
ZW50KHJlY2VpdmVyLCBtZXNzYWdlKSBmb3IgbWVzc2FnZSBpbiBhc3luY19tZXNzYWdlc10KKwog
ICAgICAgICBpZiByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0Vf
QVRUUklCVVRFKSBvciByZWNlaXZlci5oYXNfYXR0cmlidXRlKFdBTlRTX0FTWU5DX0RJU1BBVENI
X01FU1NBR0VfQVRUUklCVVRFKToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBpZiAo
ZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpKVxuJykKICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuO1xuJykKICAgICAgICAgaWYgKHJlY2VpdmVyLnN1
cGVyY2xhc3MpOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3VwZXJjbGFzcykp
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgJXM6OmRpZFJlY2VpdmUlc01lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xhc3MsIHJlY2VpdmVf
dmFyaWFudCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
VU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pO1xuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
JyAgICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
fVxuJykKIAotICAgIGlmIHN5bmNfbWVzc2FnZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShX
QU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSk6CisgICAgaWYgbm90IHJlY2VpdmVyLmhh
c19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVURSkgYW5kIChzeW5jX21lc3NhZ2VzIG9yIHJlY2Vp
dmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKToKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd2b2lkICVz
OjpkaWRSZWNlaXZlU3luYyVzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mIHJlcGx5
RW5jb2RlcilcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSBpZiByZWNlaXZlci5o
YXNfYXR0cmlidXRlKExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUpIGVsc2UgJycpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCd7XG4nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKaW5kZXggNDhkOGUxYjYyN2NjMzFiMThmYTFjNTBmYWJl
ZWVkOTcxYmQxNWJlOS4uZTg5ZTE3ZTE0MDdiNWI1NjZiYzE5MmM0MGE5OWEyOGQ4YmY4ZGNkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVz
dC5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3VuaXR0ZXN0
LnB5CkBAIC00Niw2ICs0Niw4IEBAIF90ZXN0X3JlY2VpdmVyX25hbWVzID0gWwogICAgICdUZXN0
V2l0aElmTWVzc2FnZScsCiAgICAgJ1Rlc3RXaXRoU2VtYXBob3JlJywKICAgICAnVGVzdFdpdGhJ
bWFnZURhdGEnLAorICAgICdUZXN0V2l0aFN0cmVhbScsCisgICAgJ1Rlc3RXaXRoU3RyZWFtQnVm
ZmVyJwogXQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9k
ZWwucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5CmluZGV4IDQ4MDBm
YTRlZmNhOTY3OGE4OWFmYzdlNDM0ZjI2YjM0NmNlOGNmNmMuLjUwN2UwNDJhNTc3ZmY4YTAyMzM3
MmMzYTYwN2FiMTA4YTVmYTk2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbW9kZWwucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5w
eQpAQCAtMjgsNiArMjgsOCBAQCBCVUlMVElOX0FUVFJJQlVURSA9ICJCdWlsdGluIgogQVNZTkNf
QVRUUklCVVRFID0gIkFzeW5jIgogTUFJTlRIUkVBRENBTExCQUNLX0FUVFJJQlVURSA9ICJNYWlu
VGhyZWFkQ2FsbGJhY2siCiBTWU5DSFJPTk9VU19BVFRSSUJVVEUgPSAnU3luY2hyb25vdXMnCitT
VFJFQU1fQVRUUklCVVRFID0gIlN0cmVhbSIKK1dBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFID0g
J1dhbnRzQ29ubmVjdGlvbicKIAogY2xhc3MgTWVzc2FnZVJlY2VpdmVyKG9iamVjdCk6CiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN1cGVyY2xhc3MsIGF0dHJpYnV0ZXMsIG1lc3NhZ2Vz
LCBjb25kaXRpb24pOgpAQCAtNzMsNyArNzUsOSBAQCBpcGNfcmVjZWl2ZXIgPSBNZXNzYWdlUmVj
ZWl2ZXIobmFtZT0iSVBDIiwgc3VwZXJjbGFzcz1Ob25lLCBhdHRyaWJ1dGVzPVtCVUlMVElOXwog
ICAgIE1lc3NhZ2UoJ1dyYXBwZWRBc3luY01lc3NhZ2VGb3JUZXN0aW5nJywgW10sIFtdLCBhdHRy
aWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURSwgU1lOQ0hST05PVVNfQVRUUklCVVRFXSwgY29uZGl0
aW9uPU5vbmUpLAogICAgIE1lc3NhZ2UoJ1N5bmNNZXNzYWdlUmVwbHknLCBbXSwgW10sIGF0dHJp
YnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAogICAgIE1lc3NhZ2Uo
J0luaXRpYWxpemVDb25uZWN0aW9uJywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJ
QlVURV0sIGNvbmRpdGlvbj0iUExBVEZPUk0oQ09DT0EpIiksCi0gICAgTWVzc2FnZSgnTGVnYWN5
U2Vzc2lvblN0YXRlJywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElOX0FUVFJJQlVURV0sIGNv
bmRpdGlvbj1Ob25lKQorICAgIE1lc3NhZ2UoJ0xlZ2FjeVNlc3Npb25TdGF0ZScsIFtdLCBbXSwg
YXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSksCisgICAgTWVz
c2FnZSgnU2V0U3RyZWFtRGVzdGluYXRpb25JRCcsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJ
Tl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSksCisgICAgTWVzc2FnZSgnUHJvY2Vzc091dE9m
U3RyZWFtTWVzc2FnZScsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBj
b25kaXRpb249Tm9uZSkKIF0sIGNvbmRpdGlvbj1Ob25lKQogCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCmluZGV4IDIxYjMwYWUyMGZhMTAzM2ZhNjY0ZTAz
YWRiZDg4MDg2YTZjNzJjNDIuLmUxOTdiZDNjMjY3YWU0MTFhNDUwMGQwZmY2OTM5ODYwM2E0NTA4
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZp
bGUKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NYWtlZmlsZQpAQCAt
Niw2ICs2LDggQEAgVEVTVFMgPSBcCiAgICAgVGVzdFdpdGhJZk1lc3NhZ2UgXAogICAgIFRlc3RX
aXRoU2VtYXBob3JlIFwKICAgICBUZXN0V2l0aEltYWdlRGF0YSBcCisJVGVzdFdpdGhTdHJlYW0g
XAorCVRlc3RXaXRoU3RyZWFtQnVmZmVyIFwKICMKIAogYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuY3BwCmluZGV4IDdkNWFmYzkx
OGU1YjA1YjhmN2E1Y2Q2MjM4NTJiNWMwZTBjMThhMDMuLjJlN2NhMTVlNzRlYmJkYTg2Yzc5Zjhm
YzBiOGYzOGI0YjVmNzU4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5jcHAKQEAgLTEzNCw2ICsxMzQsMTAgQEAgY29uc3QgY2hh
ciogZGVzY3JpcHRpb24oTWVzc2FnZU5hbWUgbmFtZSkKICAgICAgICAgcmV0dXJuICJJbml0aWFs
aXplQ29ubmVjdGlvbiI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRl
OgogICAgICAgICByZXR1cm4gIkxlZ2FjeVNlc3Npb25TdGF0ZSI7CisgICAgY2FzZSBNZXNzYWdl
TmFtZTo6UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZToKKyAgICAgICAgcmV0dXJuICJQcm9jZXNz
T3V0T2ZTdHJlYW1NZXNzYWdlIjsKKyAgICBjYXNlIE1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0
aW5hdGlvbklEOgorICAgICAgICByZXR1cm4gIlNldFN0cmVhbURlc3RpbmF0aW9uSUQiOwogICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVwbHk6CiAgICAgICAgIHJldHVybiAiU3lu
Y01lc3NhZ2VSZXBseSI7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNz
X1Rlc3RBc3luY01lc3NhZ2VSZXBseToKQEAgLTIyNCw2ICsyMjgsOCBAQCBSZWNlaXZlck5hbWUg
cmVjZWl2ZXJOYW1lKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogICAgICAgICByZXR1cm4gUmVj
ZWl2ZXJOYW1lOjpUZXN0V2l0aG91dEF0dHJpYnV0ZXM7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6
SW5pdGlhbGl6ZUNvbm5lY3Rpb246CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lv
blN0YXRlOgorICAgIGNhc2UgTWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2U6
CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRDoKICAgICBjYXNl
IE1lc3NhZ2VOYW1lOjpTeW5jTWVzc2FnZVJlcGx5OgogICAgICAgICByZXR1cm4gUmVjZWl2ZXJO
YW1lOjpJUEM7CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RB
c3luY01lc3NhZ2VSZXBseToKQEAgLTQwMSw2ICs0MDcsMTAgQEAgYm9vbCBpc1ZhbGlkTWVzc2Fn
ZU5hbWUoTWVzc2FnZU5hbWUgbWVzc2FnZU5hbWUpCiAjZW5kaWYKICAgICBpZiAobWVzc2FnZU5h
bWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6TGVnYWN5U2Vzc2lvblN0YXRlKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6UHJvY2Vz
c091dE9mU3RyZWFtTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1lc3Nh
Z2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQpCisgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6Ok1lc3NhZ2VOYW1l
OjpTeW5jTWVzc2FnZVJlcGx5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9NZXNzYWdlTmFtZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVz
c2FnZU5hbWVzLmgKaW5kZXggZWZlYTIzMDJkNjg3YmU0ZjUyMjY5MGY3OGEzYzY0ZjYzNmUzMWZk
OC4uYTIyYmQxY2ZkN2Y3M2JlOWVhYjFjYmJjMGZmMGM2ZWYwNmEwNjQwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCkBAIC05Myw2
ICs5Myw4IEBAIGVudW0gY2xhc3MgTWVzc2FnZU5hbWUgOiB1aW50MTZfdCB7CiAgICAgLCBUZXN0
V2l0aG91dEF0dHJpYnV0ZXNfVG91Y2hFdmVudAogICAgICwgSW5pdGlhbGl6ZUNvbm5lY3Rpb24K
ICAgICAsIExlZ2FjeVNlc3Npb25TdGF0ZQorICAgICwgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2Fn
ZQorICAgICwgU2V0U3RyZWFtRGVzdGluYXRpb25JRAogICAgICwgU3luY01lc3NhZ2VSZXBseQog
ICAgICwgVGVzdFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VSZXBseQogICAgICwgVGVz
dFdpdGhTdXBlcmNsYXNzX1Rlc3RBc3luY01lc3NhZ2VXaXRoQ29ubmVjdGlvblJlcGx5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFt
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDBmNTI4YzY5Y2RlZmRkYTljNDg2Nzkx
MzhjNjM4YjhhYzBjYjMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDI3IEBA
CisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
CisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgVGVzdHMgU3RyZWFt
IHJlY2VpdmVyIGF0dHJpYnV0ZS4KK21lc3NhZ2VzIC0+IFRlc3RXaXRoU3RyZWFtIE5vdFJlZkNv
dW50ZWQgU3RyZWFtIHsKKyAgICB2b2lkIFNlbmRTdHJpbmcoU3RyaW5nIHVybCkKKyAgICB2b2lk
IFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQoU3RyaW5nIHVybCkgLT4gKGludDY0X3QgcmV0dXJuKQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbUJ1ZmZlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE3MGFj
ODlhMjVmMDM5MjE5ZmU0MTgxMDViMmMxZDA0YWUwYzdlOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjIFRlc3RzIFN0cmVhbSByZWNlaXZlciBhdHRyaWJ1dGUuCittZXNzYWdlcyAt
PiBUZXN0V2l0aFN0cmVhbUJ1ZmZlciAgeworICAgIHZvaWQgU2VuZFN0cmVhbUJ1ZmZlcihJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgc3RyZWFtKQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNl
aXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3Ry
ZWFtQnVmZmVyTWVzc2FnZVJlY2VpdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOWM5MjQwYTRlYjFhYjU1
NzQwOTYwMjI5MWRjMTI3MzE5ODdmMDU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VSZWNlaXZl
ci5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbUJ1ZmZlci5oIgorCisjaW5jbHVkZSAiRGVj
b2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25u
ZWN0aW9uQnVmZmVyLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXIm
IGRlY29kZXIpCit7CisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyk7Cisg
ICAgaWYgKGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1C
dWZmZXI6OlNlbmRTdHJlYW1CdWZmZXI6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1l
c3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyPihk
ZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW1CdWZmZXI6OnNlbmRTdHJlYW1CdWZmZXIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKKyAg
ICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmggYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42YTI0ZWJkZDIwMGYzMzkwNDc3ZGZhZjdjZDg1NzE5MWJkNTNiMjg3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
KyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVz
dFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
SVBDIHsKK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI7Cit9CisKK25hbWVzcGFjZSBNZXNz
YWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIgeworCitzdGF0aWMgaW5saW5l
IElQQzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJ
UEM6OlJlY2VpdmVyTmFtZTo6VGVzdFdpdGhTdHJlYW1CdWZmZXI7Cit9CisKK2NsYXNzIFNlbmRT
dHJlYW1CdWZmZXIgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8
Y29uc3QgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJj47CisKKyAgICBzdGF0aWMgSVBDOjpN
ZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJl
YW1CdWZmZXJfU2VuZFN0cmVhbUJ1ZmZlcjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3lu
YyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgU2VuZFN0cmVhbUJ1ZmZlcihjb25zdCBJUEM6OlN0
cmVhbUNvbm5lY3Rpb25CdWZmZXImIHN0cmVhbSkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhzdHJl
YW0pCisgICAgeworICAgIH0KKworICAgIGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQXJndW1lbnRzIG1fYXJndW1lbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdp
dGhTdHJlYW1CdWZmZXIKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2Fn
ZXNSZXBsaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdmYTJhZDdkNTA2MzAw
ZjNjY2IzOTBmMTk3MjU5ZDkwZTY5M2YzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlc1JlcGxp
ZXMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorICogT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisK
K25hbWVzcGFjZSBNZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW1CdWZmZXIgewor
CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyCit9IC8vIG5hbWVzcGFjZSBN
ZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44Mzk4ODU1YWQ1NmU5NTE5OTdjOWQyYWIzZjg4ODA5NGM4ODkyMzI2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1l
c3NhZ2VSZWNlaXZlci5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbS5oIgorCisjaW5jbHVk
ZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSGFu
ZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQg
VGVzdFdpdGhTdHJlYW06OmRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6
U2VuZFN0cmluZzo6bmFtZSgpKSB7CisgICAgICAgIElQQzo6aGFuZGxlTWVzc2FnZTxNZXNzYWdl
czo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc+KGRlY29kZXIsIHRoaXMsICZUZXN0V2l0aFN0
cmVhbTo6c2VuZFN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmdT
eW5jaHJvbml6ZWQ6Om5hbWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2Fn
ZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkPihkZWNvZGVyLCB0aGlz
LCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIFVOVVNFRF9QQVJBTShkZWNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0o
Y29ubmVjdGlvbik7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0
cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGJmZWJhYjIzNzJj
MWY2NjA1YzU1ODk0NTkzOGJmMWU0ZTdhYWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgKQEAgLTAs
MCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
QXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVz
c2FnZU5hbWVzLmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxpZXMuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisKK25hbWVzcGFjZSBN
ZXNzYWdlcyB7CituYW1lc3BhY2UgVGVzdFdpdGhTdHJlYW0geworCitzdGF0aWMgaW5saW5lIElQ
Qzo6UmVjZWl2ZXJOYW1lIG1lc3NhZ2VSZWNlaXZlck5hbWUoKQoreworICAgIHJldHVybiBJUEM6
OlJlY2VpdmVyTmFtZTo6VGVzdFdpdGhTdHJlYW07Cit9CisKK2NsYXNzIFNlbmRTdHJpbmcgewor
cHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47
CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdlTmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNz
YWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2VuZFN0cmluZzsgfQorICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzU3luYyA9IGZhbHNlOworCisgICAgZXhwbGljaXQgU2VuZFN0cmluZyhjb25zdCBTdHJp
bmcmIHVybCkKKyAgICAgICAgOiBtX2FyZ3VtZW50cyh1cmwpCisgICAgeworICAgIH0KKworICAg
IGNvbnN0IEFyZ3VtZW50cyYgYXJndW1lbnRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2FyZ3VtZW50czsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXJndW1lbnRzIG1fYXJndW1l
bnRzOworfTsKKworY2xhc3MgU2VuZFN0cmluZ1N5bmNocm9uaXplZCB7CitwdWJsaWM6CisgICAg
dXNpbmcgQXJndW1lbnRzID0gc3RkOjp0dXBsZTxjb25zdCBTdHJpbmcmPjsKKworICAgIHN0YXRp
YyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUoKSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpUZXN0
V2l0aFN0cmVhbV9TZW5kU3RyaW5nU3luY2hyb25pemVkOyB9CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNTeW5jID0gdHJ1ZTsKKworICAgIHVzaW5nIFJlcGx5ID0gc3RkOjp0dXBsZTxpbnQ2NF90
Jj47CisgICAgdXNpbmcgUmVwbHlBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGludDY0X3Q+OworICAg
IGV4cGxpY2l0IFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQoY29uc3QgU3RyaW5nJiB1cmwpCisgICAg
ICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVh
bU1lc3NhZ2VzUmVwbGllcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYzVhMDc4ZGUwMWVj
MTQzMGY4OTRmMjBjYjljMmY5MTU1ZTdjYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgK
QEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisg
KiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTWVzc2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1l
c3BhY2UgTWVzc2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtIHsKKworCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2l0aFN0cmVhbQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CmluZGV4IGY5YmE1ZGM3ODI0YjFlNWIwM2U1M2Y5OGI3YTdmOGU0ZGVmMjFjNjQuLjQ1ODkyNmYy
NWJkNmQ1MTYyYTc1OWNlMGM3M2Y4ZWExZWIxN2Q1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMTUwLDYg
KzE1MCwxMCBAQCBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyTWFwLmNwcCBAbm8tdW5pZnkK
IFBsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcCBAbm8tdW5pZnkKIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25u
ZWN0aW9uLmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVy
LmNwcCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNw
cCBAbm8tdW5pZnkKK1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBAbm8t
dW5pZnkKIFBsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuY3BwIEBuby11bmlmeQogCiBQbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCBjMzMw
NzgyNWIyMDA4NmRlZDRjODZjNjQ4OGNlNWRkNTdlYzBjMzU4Li44OTUyMDhjM2JjMjI2ZDZmYjEy
ODYxZGE0MzdjZGEzODFmNDhkNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDZjZDc4
YTFlOGM1ODNiNjEzYmY1MjU1YjI4ZDRkNzhjNDBiYzQzYjcuLmU3OTRhMzNmYTgzZDJhYTg4Njkw
NWRhOWJjNTlmZmMwZDUzMDNhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBUElX
ZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVk
ZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVycy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmgKaW5kZXggN2EzOGRlNTU2OGNkNDc4Nzk1Y2VhNTZjMzEyMjYyMGQ0
NWM2NTczYy4uZmQ1MWU1YjliMTI4YzI3OGYxNTY5YTc1OGI4NjA5MDNhMDZkMzk2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIK
ICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDBlNTk4OTBlNWMyZmRhZWYyM2M2MjRjOWZk
ZWQ4NjE4YmMzYjBjMS4uMzhkMDAzMjBmNTQ1MDMzMmFmZGNhOTA3ZGFhNTEyYmY4MmY5NmJkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMzM1LDYgKzEzMzUsMTYgQEAKIAkJN0I0ODNGMjAyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3Nh
Z2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCNDgzRjFDMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgg
Ki87IH07CiAJCTdCNDgzRjIxMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVl
TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
NDgzRjFEMjVDRERBOUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLzsg
fTsKIAkJN0I0ODNGMjIyNUNEREE5QzAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxRTI1
Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZXMuaCAqLzsgfTsKKwkJN0I3MzEy
M0EyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjMxMjVDQzg1MjMwMDNC
Mjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi87IH07CisJCTdCNzMxMjNCMjVDQzg1
MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjMyMjVDQzg1MjMwMDNCMjc5
NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAqLzsgfTsKKwkJN0I3MzEyM0MyNUND
ODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjMzMjVDQzg1MjMwMDNCMjc5NiAv
KiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggKi87IH07CisJCTdCNzMxMjNEMjVDQzg1MjUwMDNC
Mjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM0MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyLmNwcCAqLzsgfTsKKwkJN0I3MzEyM0UyNUNDODUyNTAwM0IyNzk2
IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM1MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1D
b25uZWN0aW9uV29ya1F1ZXVlLmggKi87IH07CisJCTdCNzMxMjNGMjVDQzg1MjUwMDNCMjc5NiAv
KiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMxMjM2MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1DbGll
bnRDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJN0I3MzEyNDAyNUNDODUyNTAwM0IyNzk2IC8qIFN0
cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I3MzEyMzcyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNv
bm5lY3Rpb24uY3BwICovOyB9OworCQk3QjczMTI0MTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFt
U2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0I3MzEyMzgyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaCAqLzsgfTsKKwkJN0I3MzEyNDIyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjczMTIzOTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCAq
LzsgfTsKKwkJN0JBQjExMTAyNUREMDJCMzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCQUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2
ZVF1ZXVlLmggKi87IH07CiAJCTdDMDY1RjJDMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMDY1RjJBMUM4Q0Q5NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJEYXRhVHlwZXMuaCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUy
IC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9y
bWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0MxQkEzM0UxQTRBMEU2MDAwNDNFMjQ5IC8qIEFQSURpY3Rpb25hcnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMUJBMzNDMUE0QTBFNjAwMDQz
RTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggKi87IH07CkBAIC00NTQ1LDYgKzQ1NTUsMTUgQEAKIAkJ
N0I0ODNGMUQyNUNEREE5QjAwMTIwNDg2IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVzc2FnZVJlY2VpdmVRdWV1ZU1h
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCNDgzRjFFMjVDRERBOUIwMDEy
MDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QjY0QzBCNjI1NEM1QzI1MDAwNkI0QUYgLyogR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
NzMxMjMyMjVDQzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzMzI1Q0M4NTIz
MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCNzMxMjM0MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIz
NTI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM2MjVDQzg1MjQwMDNCMjc5NiAvKiBT
dHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QjczMTIzNzI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzgyNUND
ODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QjczMTIzOTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbkVuY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29u
bmVjdGlvbkVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjUy
NTRBRkRFQTAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY2MjU0QUZERUIwMDZFRUI4QyAvKiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MDQxNjcyNTRB
RkUxNzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NTIsNiArNDU3MSw3IEBACiAJCTdCOTA0MTY5MjU0QUZF
QTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCOTA0MTZBMjU0QUZFQTcwMDZFRUI4QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2RDI1NTAxMDhDMDA2RUVCOEMgLyogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0JBQjExMEYyNUREMDJCMjAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3Nh
Z2VSZWNlaXZlUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QkU3MjY1NzI1NzRGNjcyMDBFODVEOTggLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0JFNzI2NjgyNTc2ODBFRjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5
NUYwMEMyRDk1MCAvKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5ODcsMTAgKzcw
MDcsMjAgQEAKIAkJCQkxQTNFRUQwRDE2MUE1MzUzMDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVy
TWFwLmggKi8sCiAJCQkJMUFBQjAzNzcxODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIu
Y3BwICovLAogCQkJCTFBQUIwMzc4MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmgg
Ki8sCisJCQkJN0JBQjExMEYyNUREMDJCMjAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWUuaCAqLywKIAkJCQkyREMxODAwMUQ5MERERDE1RkM2OTkxQTkgLyogU2hhcmVk
QnVmZmVyQ29weS5jcHAgKi8sCiAJCQkJNUNDNURCOTEyMTQ4OEUxNjAwNkNCOEE4IC8qIFNoYXJl
ZEJ1ZmZlckNvcHkuaCAqLywKIAkJCQkyREMxODU1RURCRkI4NTBCQTBCNkQwNkQgLyogU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMkRDMTg4MUFDQkNBQjVENTdDNUM2RUYw
IC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCAqLywKKwkJCQk3QjczMTIzNjI1Q0M4NTI0
MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJN0I3MzEyMzMy
NUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCAqLywKKwkJCQk3Qjcz
MTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi8sCisJ
CQkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCAq
LywKKwkJCQk3QjczMTIzOTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkVuY29k
ZXIuaCAqLywKKwkJCQk3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5jcHAgKi8sCisJCQkJN0I3MzEyMzUyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAqLywKKwkJCQk3QjczMTIzNzI1Q0M4NTI0MDAzQjI3OTYg
LyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJN0I3MzEyMzgyNUNDODUyNDAw
M0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCAqLywKIAkJCQkxQUUwMEQ2OTE4MzI3
QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCAqLywKIAkJCQkxQUUwMEQ2QTE4MzI3
QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmggKi8sCiAJCQkpOwpAQCAtMTIwMTUsNiAr
MTIwNDUsNyBAQAogCQkJCUJDMkQwMjE3MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBQjRBOEQxMjk2RjBBMjAwMjM5
NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTU1MkM1MTZB
RTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QkFCMTExMDI1REQwMkIzMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVz
c2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRENTREMDQyMUYxRDcyRDAw
N0UzQzM2IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMUMxQzE4
QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMjA2NCw2ICsxMjA5NSwxMSBAQAogCQkJCTkzNkIwNTk4MjMw
MzkwOTcwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTM2OEVFREYyMzAzQTlFRDAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2NUY0RTA2MjMwQjJFOTUwMDNDRURCNyAvKiBTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyM0MyNUNDODUyNTAw
M0IyNzk2IC8qIFN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTdC
NzMxMjNBMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3QjczMTI0MjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bkVuY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjNFMjVDQzg1MjUwMDNCMjc5NiAv
KiBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTI0
MTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFFMDBENkMxODMyN0MxMjAwMDg3REQ3IC8qIFN0cmluZ1JlZmVyZW5jZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjk2QkQ4NUQxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODYyMkIzNTE2QzAwOEQwRThCIC8qIFN1
YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzg5MCw2
ICsxMzkyNiwxMCBAQAogCQkJCTkzRDZCNzgyMjU0Q0NDRjQwMDU4REQzQSAvKiBTcGVlY2hSZWNv
Z25pdGlvblNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTMz
NERFRDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTM2OEVFREUyMzAzQTkwMjAwQkRCMTFBIC8qIFN0b3JhZ2VN
YW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjNG
MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTdCNzMxMjNEMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjNCMjVDQzg1MjUwMDNCMjc5NiAvKiBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCNzMxMjQw
MjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEOTJBNzgzMjEyQjZBNzEwMEY0OTNGRCAvKiBTdHJpbmdSZWZlcmVuY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3NTEyMTI2QTI4MjAwNkY4ODc4IC8qIFVuaWZpZWRT
b3VyY2UxLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3NTIyMTI2QTI4MjAwNkY4ODc4
IC8qIFVuaWZpZWRTb3VyY2UxLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggYzA1MjkyMWUwMTdlOGMzYzYyMTQ4NGUxMzk3
YjgzYjNmYmZmZDFiMC4uZjg5ZWZjNDI2MDJjYTRhNzQzZTQyNmI2N2NiOGE0YjkxMjg3NDAyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC00OSwxMyAr
NDksMTYgQEAgUmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+IFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OmNyZWF0ZShjb25zdAogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLCBhdHRyaWJ1dGVzLCByZW5kZXJpbmdCYWNrZW5kKSk7
CiB9CiAKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0gMSA8PCAy
MTsKKwogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZCkKICAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlCYXNlKGF0dHJpYnV0ZXMpCiAgICAgLCBtX2dwdVByb2Nlc3NDb25uZWN0aW9uKCZn
cHVQcm9jZXNzQ29ubmVjdGlvbikKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihncHVQcm9jZXNz
Q29ubmVjdGlvbi5jb25uZWN0aW9uKCksIGRlZmF1bHRTdHJlYW1TaXplKQogewogICAgIG1fZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24tPmFkZENsaWVudCgqdGhpcyk7CiAgICAgbV9ncHVQcm9jZXNzQ29u
bmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKLSAgICBjb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q3JlYXRl
R3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIHJlbmRlcmluZ0JhY2tlbmQpLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2Fn
ZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4dEdM
KGF0dHJpYnV0ZXMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCByZW5kZXJpbmdCYWNr
ZW5kLCBtX3N0cmVhbUNvbm5lY3Rpb24uc3RyZWFtQnVmZmVyKCkpLCAwLCBJUEM6OlNlbmRPcHRp
b246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
KCkKQEAgLTE4NCw3ICsxODcsNyBAQCBHQ0dMZW51bSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpnZXRFcnJvcigpCiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9lcnJvcldoZW5Db250
ZXh0SXNMb3N0LCBOT19FUlJPUik7CiB9CiAKLXZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6d2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVu
c2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lvbnMpCit2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9y
ZSYmIHNlbWFwaG9yZSwgU3RyaW5nJiYgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nJiYgcmVx
dWVzdGVkRXh0ZW5zaW9ucykKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xOTMsNiArMTk2LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgU3RyaW5nJiYgYXZhaWxhYmwKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoIW1fZGlkSW5pdGlhbGl6ZSk7CisgICAgbV9z
dHJlYW1Db25uZWN0aW9uLnNldFdha2VVcFNlbWFwaG9yZShXVEZNb3ZlKHNlbWFwaG9yZSkpOwog
ICAgIG1fZGlkSW5pdGlhbGl6ZSA9IHRydWU7CiAgICAgaW5pdGlhbGl6ZShhdmFpbGFibGVFeHRl
bnNpb25zLCByZXF1ZXN0ZWRFeHRlbnNpb25zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmgKaW5kZXggNWNlNTc2NzZiMDkwNWE2NTc0MDQyYTlmNTQzOGE0NzFmYjdl
Zjk5MC4uMzMyYjQ0MDVmYjZjNzQwYjNlZDRkYmE1ODVjYmFkMjFiNjQwNWEzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKQEAgLTI5LDExICsyOSwxMiBAQAogCiAj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJUENTZW1hcGhvcmUuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAi
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmg+CkBAIC0z
MzUsMTkgKzMzNiwxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAg
ICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQogICAgIHsKLSAgICAg
ICAgY29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIudG9VSW50NjQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VF
dmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuIG1fc3RyZWFtQ29ubmVjdGlvbi5zZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwogICAgIH0KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5l
Y3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpS
ZXBseSYmIHJlcGx5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIudG9VSW50NjQoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICAgICAgcmV0dXJu
IG1fc3RyZWFtQ29ubmVjdGlvbi5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJl
cGx5KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIGRlZmF1bHRTZW5kVGltZW91dCk7
CiAgICAgfQogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKTsgfQogCiBwcml2YXRlOgogICAg
IC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgd2FzQ3JlYXRlZChib29sIGRp
ZFN1Y2NlZWQsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3Rl
ZEV4dGVuc2lvbnMpOworICAgIHZvaWQgd2FzQ3JlYXRlZChib29sIGRpZFN1Y2NlZWQsIElQQzo6
U2VtYXBob3JlJiYsIFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVl
c3RlZEV4dGVuc2lvbnMpOwogICAgIHZvaWQgd2FzTG9zdCgpOwogICAgIHZvaWQgd2FzQ2hhbmdl
ZCgpOwogCkBAIC0zNjEsOCArMzYxLDggQEAgcHJpdmF0ZToKICAgICBHUFVQcm9jZXNzQ29ubmVj
dGlvbiogbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBib29sIG1fZGlkSW5pdGlhbGl6ZSB7
IGZhbHNlIH07CiAgICAgR0NHTGVudW0gbV9lcnJvcldoZW5Db250ZXh0SXNMb3N0ID0gTk9fRVJS
T1I7Ci0KICAgICBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgbV9ncmFwaGljc0NvbnRleHRH
TElkZW50aWZpZXIgeyBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsK
KyAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gbV9zdHJlYW1Db25uZWN0aW9uOwogfTsK
IAogLy8gVGhlIEdDR0wgdHlwZXMgbWFwIHRvIGZvbGxvd2luZyBXZWJLaXQgSVBDIHR5cGVzLiBU
aGUgbGlzdCBpcyB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGE3
YzY0MTJhYzk0NmUyNThjZTAxMzhiYzQ3YmMzODYyMTk1MDIxZDcuLmY0M2VjMGEyZWFhMzg0ZTRl
ZGU4ZGQ0NDBkOWVmZTAyOGFjYjdiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShXRUJHTCkKIAogbWVzc2FnZXMgLT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSBOb3RSZWZDb3VudGVkIHsKLSAgICB2b2lkIFdhc0NyZWF0ZWQo
Ym9vbCBkaWRTdWNjZWVkLCBTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5nIHJlcXVl
c3RhYmxlRXh0ZW5zaW9ucykKKyAgICB2b2lkIFdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJ
UEM6OlNlbWFwaG9yZSBzdHJlYW1XYWtlVXBTZW1hcGhvcmUsIFN0cmluZyBhdmFpbGFibGVFeHRl
bnNpb25zLCBTdHJpbmcgcmVxdWVzdGFibGVFeHRlbnNpb25zKQogICAgIHZvaWQgV2FzTG9zdCgp
CiAgICAgdm9pZCBXYXNDaGFuZ2VkKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlci5oCmluZGV4IDdhYWQ3ZGEyMDcwZGU4M2QxNGM3MWRkOTgyNDc0YWFmMTA2YTdk
YjUuLmYxMzQxZGNkMjc2ZDBjMTAxZTQ0YmRkYTE3Y2U0MGI4YTNjYjM2MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9u
VHlwZXMuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmgKaW5k
ZXggYmJlN2ZjMjZjZjMyMzQ2Njk1ZTYxZmQwMWQ2YTBiMjMyZGUwZDE4OC4uYTYxMWRhYmY0ZWJi
NTZlN2E0MjU5NGRkN2JkM2JiMGM4MWE1YzgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIK
ICNpbmNsdWRlICJMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViTUROU1Jl
Z2lzdGVyLmgiCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggOTc3NjY5MzE3MjlkMjBhZGNjNTVmNWRjZjllMGQ5OTc3ODRmMGRjYS4uNDgyZTI2YTA1
MTQ5ODc0MDlkMTlkNWMzYjNkYTUyMTNjNmJjYTExZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAyLTA1ICBL
aW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BV
IHByb2Nlc3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1l
c3NhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTk2NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIE1hcmsgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wgbWVzc2FnZSByZWNlaXZlciBhcyAiU3RyZWFtIiwKKyAgICAgICAgYSBuZXcgdmFyaWFudCBv
ZiByZWNlaXZlci4KKworICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoKKwog
MjAyMS0wMi0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBTcGVjaWZ5IGEgX1VJRGF0YU93bmVyIHdoZW4gcmVhZGluZyBvciB3cml0aW5n
IGZyb20gdGhlIHN5c3RlbSBwYXN0ZWJvYXJkCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dl
bmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKaW5k
ZXggZmU4ZmE5YWU1MTc0MGJkYTYzZjUxNTNmZGE4ZjE2ZDdlNjJiNWZiZi4uMGZhZjJjZGZhMDlm
NDc3YmZjZDVlNDIxNjgxOGMwY2VkOTVkZWMyNSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9n
ZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJn
bApAQCAtODksNyArODksNyBAQCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlID0gKAogICAgIHRl
bXBsYXRlX3ByZWFtYmxlCiAgICAgKyAiIiIjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoV0VCR0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNv
dW50ZWQge3sKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50
ZWQgU3RyZWFtIHt7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVp
Z2h0KQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAt
PiAoTWFjaFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIzOWIz
M2ZlNzc4MDg0YWIwOGIyMTNjNWI1Yjk3MjNkYzMwOWUwM2YuLjk2MWE2Nzc5Y2Q0YTQ0OWMxZmI0
OWJlZGM1ZTgyNWE1ZDRjMmRlYjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMi0xNyAg
S2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIEdQ
VSBwcm9jZXNzIElQQyBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIGFzeW5jaHJvbm91cyBt
ZXNzYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE5NjQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM0MDY1MT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBNYXJrIGZldyB0ZXN0cyBhcyBub3QgdGlt
aW5nIG91dCBub3cgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm90IHNvIHNsb3cuCisKKyAg
ICAgICAgKiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTAyLTE5ICBSb2Jl
cnQgSmVubmVyICA8amVubmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbIG1hY09TIFdrIDIgXSBp
bnNwZWN0b3IvZGVidWdnZXIvYXN5bmMtc3RhY2stdHJhY2UtYmFzaWMuaHRtbCBpcyBmbGFrZXkg
dGltaW5nIG91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ZjUwZmRhZDZmOWY3ZTcxNjU4ZmI3YzMyMzBhNThkOTRmNTEzM2E0Ny4uYTQ1NDA2NDkxNjgzNTVm
NDg3NTIwMWRjNWFmMzhkZTZlMDY1YzEwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zCkBAIC0zNSw4ICszNSwxMiBAQCBmYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJl
LWFjdGl2ZS1iaW5kLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvY2FudmFzL2NhbnZhcy1ibGVuZGlu
Zy1jb2xvci1vdmVyLWltYWdlLmh0bWwgWyBUaW1lb3V0IF0KIGZhc3QvY2FudmFzL3dlYmdsL2Nv
bnRleHQtdXBkYXRlLW9uLWRpc3BsYXktY29uZmlndXJhdGlvbi5odG1sIFsgVGltZW91dCBdCiBm
YXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELXZpZGVvLWZsaXBZLWZhbHNlLmh0bWwgWyBUaW1l
b3V0IF0KLWZhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgVGlt
ZW91dCBdCiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBb
IFRpbWVvdXQgXQorCitmYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRt
bCBbIFNsb3cgXQord2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvYXR0cmlicy9nbC12ZXJ0ZXhhdHRy
aWJwb2ludGVyLmh0bWwgWyBTbG93IF0KK3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9yZW5kZXJp
bmcvYmxpdGZyYW1lYnVmZmVyLWZpbHRlci1vdXRvZmJvdW5kcy5odG1sIFsgU2xvdyBdCisKIGZh
c3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLW1wNC1jcmFzaC5odG1sIFsgVGltZW91dCBdCiBmYXN0
L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1tcDQuaHRtbCBbIFRpbWVvdXQgXQogCkBAIC0xODAsNyAr
MTg0LDYgQEAgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1m
bG9hdC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9h
dC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9l
eHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVy
ZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0
bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3N0YXRlL2dsLW9iamVjdC1n
ZXQtY2FsbHMuaHRtbCBbIFRpbWVvdXQgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMtcmdiNTY1Lmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXJnYmE0NDQ0Lmh0bWwgWyBGYWlsdXJlIF0KQEAgLTE5
NCwxMyArMTk3LDEyIEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleC1pbWFn
ZS13ZWJnbC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJl
cy90ZXhwYXJhbWV0ZXItdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3Jt
YW5jZS90ZXh0dXJlcy90ZXh0dXJlLWFjdGl2ZS1iaW5kLTIuaHRtbCBbIEZhaWx1cmUgXQogd2Vi
Z2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1hY3RpdmUtYmluZC5odG1sIFsg
RmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBs
ZXJzLXRlc3QuaHRtbCBbIFRpbWVvdXQgXQord2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdW5pZm9y
bXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBTbG93IF0KIHdlYmdsLzIuMC4wL2NvbmZv
cm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1jYW52YXMuaHRtbCBbIEZh
aWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1m
bG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLWNhbnZhcy5odG1sIFsgRmFp
bHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhh
bGYtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3Jt
YW5jZS9yZWFkaW5nL3JlYWQtcGl4ZWxzLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQotd2ViZ2wvMi4w
LjAvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJhdy1jYWxscy5odG1sIFsgVGltZW91dCBd
CiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwg
WyBUaW1lb3V0IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgt
MmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9zaG9ydF81
XzZfNS5odG1sIFsgRmFpbHVyZSBdCkBAIC0yMjAsNyArMjIyLDcgQEAgd2ViZ2wvMi4wLjAvY29u
Zm9ybWFuY2UvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82
XzUuaHRtbAogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJn
YmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZv
cm1hbmNlL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNF80
XzRfNC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy92
aWRlby90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBbIEZhaWx1
cmUgXQotd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10
ZXN0Lmh0bWwgWyBUaW1lb3V0IF0KK3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3VuaWZvcm1zL3Vu
aWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgU2xvdyBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5j
ZTIvcmVhZGluZy9yZWFkLXBpeGVscy1wYWNrLXBhcmFtZXRlcnMuaHRtbCBbIEZhaWx1cmUgXQog
d2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbCBb
IFRpbWVvdXQgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgt
MmQtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421097</attachid>
            <date>2021-02-20 12:20:10 -0800</date>
            <delta_ts>2021-02-20 12:42:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-219641-20210220222008.patch</filename>
            <type>text/plain</type>
            <size>168138</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFiYmQyNDRlMDA0YzIyOGYx
NzRiZGUwMGVmODI0ZTM3NDQ3NDliZmMuLjAyMGQ4ZGE3MDIxNDkyNTk0YTk3NzM4NGE5NDk0NmQ3
NjFhNmZlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAwIEBACisyMDIxLTAyLTA5ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViR0wgR1BVIHByb2Nl
c3MgSVBDIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgYXN5bmNocm9ub3VzIG1lc3NhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk2NDEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyMzQwNjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEltcGxlbWVudCBhIGNvbmNlcHQgb2YgYSBtZXNzYWdl
IGJ1ZmZlci4gVGhpcyBpcyBhIHNpbWlsYXIgY29uY2VwdCBhcworICAgICAgICAiY29tbWFuZCBi
dWZmZXIiIG9yICJkaXNwbGF5IGxpc3QiIGluIHNvbWUgZ3JhcGhpY3MgQVBJcy4gTWVzc2FnZXMK
KyAgICAgICAgY2FuIGJlIGFkZGVkIHRvIHRoZSBidWZmZXIgYnkgYSBjbGllbnQgYW5kIHRoZW4g
cGxheWVkIGJhY2sgYnkgYQorICAgICAgICBzZXJ2ZXIuCisKKyAgICAgICAgQ3VycmVudCBpbXBs
ZW1lbnRhdGlvbiBhZGRzIGEgc3BlY2lmaWMgcHNldWRvLWluZmluaXRlLAorICAgICAgICBzZW1p
LWR1cGxleCBtZXNzYWdlIGJ1ZmZlciB0eXBlIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci4g
VGhpcworICAgICAgICBpcyBhIGJ1ZmZlciB0aGF0IGNhbiBiZSBhdHRhY2hlZCB0byBzdHJlYW0g
Y29ubmVjdGlvbiwgYW4gb2JqZWN0CisgICAgICAgIHRoYXQgY2FuIGRlbGl2ZXIgSVBDIG1lc3Nh
Z2VzIGVpdGhlciB0aHJvdWdoIHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICBvciB0aHJvdWdo
IG5vcm1hbCBJUEM6OkNvbm5lY3Rpb24uIFRoZSBzdHJlYW0gY29ubmVjdGlvbiBpcworICAgICAg
ICBpbXBsZW1lbnRlZCBhcyBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gYW5kIElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi4KKyAgICAgICAgVGhlIGNvbm5lY3Rpb24gaGFzIHNlcnZlciBh
bmQgY2xpZW50IGRpc3RpbmN0aW9uLCBzaW1pbGFyIHRvCisgICAgICAgIElQQzo6Q29ubmVjdGlv
bi4gVW5saWtlIElQQzo6Q29ubmVjdGlvbiwgYSBzdHJlYW0gY29ubmVjdGlvbiBpcyBhc3ltbWV0
cmljCisgICAgICAgIGluIGZlYXR1cmVzOiB0aGUgY2xpZW50IGNhbiBzZW5kIG1lc3NhZ2VzIGFu
ZCByZWNlaXZlIHJlcGxpZXMsIHdoZXJlCisgICAgICAgIGFzIHRoZSBzZXJ2ZXIgY2FuIHJlY2Vp
dmUgbWVzc2FnZXMgYW5kIHNlbmQgcmVwbGllcy4KKworICAgICAgICBNZXNzYWdlcyByZWNlaXZl
ZCB0aHJvdWdoIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbiBjYW4gYmUKKyAgICAgICAgcHJv
Y2Vzc2VkIGJ5IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuCisKKyAgICAgICAgQ3VycmVudGx5
IGFzeW5jaHJvbm91cyBtZXNzYWdlcyBhcmUgYWRkZWQgdG8gdGhlIHN0cmVhbS4gU3luY2hyb25v
dXMgbWVzc2FnZXMKKyAgICAgICAgYW5kIHRoZWlyIHJlcGxpZXMgYXJlIGRpc3BhdGNoZWQgdGhy
b3VnaCBub3JtYWwgSVBDLgorCisgICAgICAgIFdlYkdMIGlzIGltcGxlbWVudGVkIGJ5IGhhdmlu
ZyBvbmUgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSBmb3IgYWxsIFdlYkdMCisgICAgICAgIGlu
IHRoZSBicm93c2VyLiBDdXJyZW50bHkgZWFjaCB3ZWIgcHJvY2VzcyBXZWJHTCBjb250ZXh0IGlu
IGhhcyBvbmUKKyAgICAgICAgU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhdHRhY2hlZCB0byBvbmUg
Mm1iIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisKKyAgICAgICAgTGF0ZXIgb24sIHRoZXJlIHdp
bGwgYmUgb25seSBvbmUgV2ViR0wgc3RyZWFtIGNvbm5lY3Rpb24gYW5kIGNvbm5lY3Rpb24KKyAg
ICAgICAgYnVmZmVyIHNoYXJlZCBiZXR3ZWVuIGFsbCBjb250ZXh0cyBpbiBwYXJ0aWN1bGFyIHRo
cmVhZCBpbiBXZWIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzICJvcHRp
bWl6ZWQiIGZvciB0aGUgbGF0ZXIgb24gY2FzZS4gRHVlIHRvIHNpbmdsZS0KKyAgICAgICAgcHJv
Y2VzcyBuYXR1cmUgb2YgZWFjaCBwYWdlLCBpdCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2UgdG8g
aGF2ZSBidWZmZXIKKyAgICAgICAgcGVyIGNvbnRleHQuIEhvd2V2ZXIsIGl0IGlzIGFudGljaXBh
dGVkIHRoYXQgbWFueSBvZiB0aGUgc3VjY2Vzc2l2ZSBjYWxscworICAgICAgICBhcmUgdG8gc2Ft
ZSBjb250ZXh0LiBUaGUgU0hNIG1lc3NhZ2UgZm9ybWF0IGltcGxlbWVudHMgYW4gb3B0aW1pemF0
aW9uCisgICAgICAgIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiBpZCBpcyBtYWludGFpbmVkIGFzIHBh
cnQgb2YgdGhlIHN0cmVhbSBjb25uZWN0aW9uCisgICAgICAgIHN0YXRlLgorCisgICAgICAgIElu
IEdQVSBwcm9jZXNzIHNpZGUsIGFsbCBXZWJHTCBpcyBwcm9jZXNzZWQgaW4gb25lIHRhc2sgcXVl
dWUsCisgICAgICAgICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTCB0YXNrIHF1ZXVlIi4gSXQgd2ls
bCBwcm9jZXNzIHVwIHRvIDEwMDAgY29tbWFuZHMKKyAgICAgICAgcGVyIGNvbm5lY3Rpb24gcGVy
IGl0ZXJhdGlvbi4KKworICAgICAgICBJbXBsZW1lbnRlZCBhcyBmb2xsb3dzOgorICAgICAgICBT
ZW5kZXIgc2hhcmVzIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgZGVzdGluYXRpb24g
d2hlbiBjcmVhdGluZworICAgICAgICB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgSWYgdGhl
IG1lc3NhZ2UgZml0cyB0byB0aGUgc3RyZWFtIHNoYXJlZCBtZW1vcnkgYXJlYSwgd3JpdGUgaXQg
dGhlcmUuCisgICAgICAgIE90aGVyd2lzZSBzZW5kIGl0IHZpYSBub3JtYWwgSVBDIGFzIG91dCBv
ZiBsaW5lIG1lc3NhZ2UuCisKKyAgICAgICAgTWVzc2FnZXMgdG8gdGhlIGRlc3RpbmF0aW9uIGFy
cml2ZSBhcyBiZWZvcmUsIGluIG9yZGVyLiBGb3IgZWFjaCBvdXQgb2YgbGluZQorICAgICAgICBt
ZXNzYWdlLCBhbiBlbnRyeSBpcyBwdXNoZWQgdG8gdGhlIHN0cmVhbS4gUmVjZWl2ZXIgd2lsbCBz
dG9wIHByb2Nlc3NpbmcgdGhlCisgICAgICAgIHN0cmVhbSBhbmQgcHJvY2Vzc2luZyB3aWxsIGNv
bnRpbnVlIG9uY2UgdGhlIG91dC1vZi1saW5lCisgICAgICAgIG1lc3NhZ2UgaGFzIGJlZW4gcHJv
Y2Vzc2VkLgorCisgICAgICAgIFNlbmRlciBjYW4gd3JpdGUgbWVzc2FnZXMgdG8gdGhlIHN0cmVh
bSBzaW11bHRhbmVvdXMgdG8gdGhlIHJlY2VpdmVyIHJlYWRpbmcKKyAgICAgICAgdGhlIG1lc3Nh
Z2VzLiBUaGlzIGlzIGltcGxlbWVudGVkIGFzIGEgcmluZyBidWZmZXIgd2l0aCBhdG9taWMgc2Vu
ZGVyIGFuZCByZWNlaXZlcgorICAgICAgICBwb2ludGVycy4KKworICAgICAgICBTdHJlYW0gY29u
bmVjdGlvbiBwcm9jZXNzaW5nIGlzIGltcGxlbWVudGVkIGFzIGEgc2hhcmVkIHNlbWFwaG9yZS4g
VGhpcyBzZW1hcGhvcmUKKyAgICAgICAgaXMgbm90aWZpZWQgaWYgdGhlIHJlY2VpdmVyIGlzIHdh
aXRpbmcgb24gaXQuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgaW1wYWN0IChpTWFjIFBybyk6Cisg
ICAgICAgICAgICAtIE1vdGlvbk1hcmsgdHJpYW5nbGVzOiAzMDAgcG9pbnRzIC0+IDQwMDAgcG9p
bnRzCisgICAgICAgICAgICAgICh+NzAwMCBwb2ludHMgbm8tR1BVUCkKKyAgICAgICAgICAgIC0g
V2ViR0wgc2FtcGxlcyBBcXVhcml1bTogMTAwMCBmaXNoIH42MGZwcyAtPiA1MDAwIGZpc2ggfjYw
ZnBzCisgICAgICAgICAgICAgICh+NTAwMCBmaXNoIHdpdGggbm8tR1BVUCkKKworICAgICAgICBO
byBuZXcgdGVzdHMsIHRlc3RlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Ojpjb25uZWN0V2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6ZGlzY29ubmVjdFdlYlByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6d29ya1F1ZXVlVW5p
bml0aWFsaXplKToKKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgT3BlbkdMIGNvbnRleHQgaW4gdGhl
IHdvcmsgcXVldWUsIHNpbmNlIE9wZW5HTAorICAgICAgICBoYXMgdmFyaW91cyBsaW1pdGF0aW9u
cyB3cnQgdGhyZWFkIG1vYmlsaXR5LgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpmb3JjZUNvbnRleHRMb3N0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24pOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBsYXRmb3JtV29ya1F1ZXVl
SW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpz
ZW5kIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Xb3JrUXVldWVJ
bml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaDoKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVycy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBt
dWx0aXBsZSBkaWZmZXJlbnQgRW5jb2RlciBjbGFzc2VzIHRvIGVuY29kZQorICAgICAgICB0aGUg
SVBDIGRhdGEuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZSk6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgQWRkIHBvc3NpYmlsaXR5
IGZvciB0aGUgc3RyZWFtIGRlY29kaW5nIGxvZ2ljIHRvIHNlbmQgdGhlIGRpZFJlY2VpdmVJbnZh
bGlkTWVzc2FnZQorICAgICAgICBub3RpZmljYXRpb24gdG8gdGhlIGNvbm5lY3Rpb24gY2xpZW50
LgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpE
ZWNvZGVyOjpEZWNvZGVyKToKKyAgICAgICAgKElQQzo6bV9idWZmZXJEZWFsbG9jYXRvcik6Cisg
ICAgICAgIChJUEM6Om1fZGVzdGluYXRpb25JRCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuaDoKKyAgICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIERlY29kZXIgZm9yIGNvbnN0
cnVjdGluZyBhIGRlY29kZXIgaW4gcGxhY2UgaW4KKyAgICAgICAgdGhlIHN0cmVhbSBidWZmZXIu
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoSVBD
OjpoYW5kbGVNZXNzYWdlU3luY2hyb25vdXMpOgorICAgICAgICBBZGRzIGEgc3RyZWFtLXNwZWNp
ZmljIGhhbmRsZU1lc3NhZ2VTeW5jaHJvbm91cy4KKyAgICAgICAgVGhlIG9sZCBvbmVzIGFyZSB1
bm5lY2Nlc3NhcmlseSBjb21wbGV4LCBhcyB0aGV5IG5lZWQgcmVkdW5kYW50IGNhbGxzIHRocm91
Z2ggcmVkdW5kYW50CisgICAgICAgIGdlbmVyYXRlZCBzZW5kIGZ1bmN0aW9ucy4KKyAgICAgICAg
VGhlIG9sZCBvbmVzIG5lZWQgdGhlIHJlcGx5IGVuY29kZXIgcGFzc2VkIGluLCB3aGljaCBpcyBy
ZWR1bmRhbnQgYW5kIHByb2JsZW1hdGljCisgICAgICAgIGZvciB0aGUgdXBjb21pbmcgY2FzZSB3
aGVyZSB0aGUgc3RyZWFtIG1lc3NhZ2luZyB3aWxsIG1haW5seSByZXBseSB0aHJvdWdoIHRoZSBz
dHJlYW0gaXRzZWxmLAorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIElQQzo6U3RyZWFtQ29ubmVj
dGlvbkVuY29kZXIgaW5zdGVhZCBvZiBub3JtYWwgSVBDOjpFbmNvZGVyLgorCisgICAgICAgICog
UGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oLgorICAgICAgICAoSVBDOjpT
dHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uKToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2V0V2FrZVVwU2VtYXBob3JlKToKKyAgICAg
ICAgQWRkIGZ1bmN0aW9uIHRvIHNldCB0aGUgY29ubmVjdGlvbiByZWNlaXZlIHNpZGUgd2FrZXVw
IHNlbWFwaG9yZS4KKyAgICAgICAgQ3VycmVudGx5IHRoZSBzZW1hcGhvcmUgaXMgdGhlIHNlbWFw
aG9yZSB0aGF0IFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUKKyAgICAgICAgd2FpdHMgb24uIEFs
bCBzdHJlYW1zIHByb2Nlc3NlZCBieSB0aGUgc2FtZSB3b3JrIHF1ZXVlIHdpbGwgcmVjZWl2ZSB0
aGUgc2FtZQorICAgICAgICBzZW1hcGhvcmUgYW5kIHdpbGwgbm90aWZ5IGl0IHdoZW4gdGhleSBo
YXZlIHdyaXR0ZW4gbmV3IGRhdGEuCisKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6d2FrZVVwUmVjZWl2ZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpzZW5kKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2VuZFN5
bmMpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlTZW5kRGVzdGlu
YXRpb25JRElmTmVlZGVkKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6
c2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29u
bmVjdGlvbjo6cmVsZWFzZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246
OmFsaWduZWRTcGFuKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6c2l6
ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb246OmNsYW1wZWRMaW1pdCBj
b25zdCk6CisgICAgICAgIEFkZCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHNlbmRpbmcgZGF0YSB0
aHJvdWdoIHRoZSBzaGFyZWQgbWVtb3J5LgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoSVBDOjpjcmVhdGVNZW1v
cnkpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3BlcmF0
b3I9KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oOiBBZGRlZC4KKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6d3JhcE9mZnNldCBjb25zdCk6CisgICAg
ICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6c2VuZGVyT2Zmc2V0KToKKyAgICAg
ICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6cmVjZWl2ZXJPZmZzZXQpOgorICAgICAg
ICAoSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGF0YVNpemUgY29uc3QpOgorICAgICAgICAoSVBD
OjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJXYWl0U2VtYXBob3JlKToKKyAgICAgICAg
KElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyIGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6aGVhZGVyU2l6ZSk6CisgICAgICAgIEFkZCB0aGUg
Y29tbW9uIGltcGxlbWVudGF0aW9uIGZvciB0aGUgc2hhcmVkIG1lbW9yeSByaW5nIGJ1ZmZlci4K
KyAgICAgICAgVGhpcyBpcyB0aGUgY29tbW9uIGltcGxlbWVudGF0aW9uIHVzZWQgYnkgYm90aCB0
aGUgc2VuZGVyIHNpZGUKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgcmVjZWl2ZXIgc2lkZS4KKyAg
ICAgICAgRHVlIHRvIHRoZSBzZWxlY3Rpb24gb2YgaG93IHRoZSBzaXplIGlzIG1hcmtlZCB1cCwg
dGhlCisgICAgICAgIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjb250YWluIGFsbCB0
aGUgbm9uLXRyaXZpYWwgY29kZS4KKyAgICAgICAgVGhlICJhbGdvcml0aG0iIHVzZXMgYSAiaG9s
ZSBpbmRpY2F0b3IiIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbgorICAgICAgICBjYXNlcyBvZiAi
YnVmZmVyIGlzIGVtcHR5IiBhbmQgImJ1ZmZlciBpcyBmdWxsIi4gVGhlIG90aGVyCisgICAgICAg
IGFsdGVybmF0aXZlIGNvdWxkIGJlIGJldHRlciBhbmQgbWF5YmUgZXhwbG9yZWQgbGF0ZXIuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaDogQWRkZWQu
CisgICAgICAgICogUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6U3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWU6OmRpc3BhdGNoKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6
YWRkU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWU6OnJlbW92ZVN0cmVhbUNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlOjpzdG9wKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6d2FrZVVwKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1
ZTo6d2FrZVVwU2VtYXBob3JlKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCk6CisgICAgICAgIChJUEM6OlN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgV29yayBxdWV1ZSBjb250
YWlucyBtdWx0aXBsZSBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIGluc3RhbmNlcy4KKyAgICAgICAg
Rm9yIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSB3b3JrIHF1ZXVlIHRocmVhZCwgaXQgd2lsbCBwcm9j
ZXNzCisgICAgICAgIDEwMDAgaXRlbXMgZnJvbSBlYWNoIGNvbm5lY3Rpb24uIElmIG5vbmUgb2Yg
dGhlIGNvbm5lY3Rpb25zIGNvbnRhaW4KKyAgICAgICAgd29yaywgdGhlIHF1ZXVlIHdpbGwgc2xl
ZXAgb24gdGhlIHdvcmsgcXVldWUgc2VtYXBob3JlLgorICAgICAgICBUaGUgc2VuZGVycyB3aWxs
IHNlbmQgdGhyb3VnaCBTdHJlYW1DbGllbnRDb25uZWN0aW9uIHdoaWNoCisgICAgICAgIHdpbGwg
d2FrZSB1cCB0aGUgd29yayBxdWV1ZSBieSBzaWduYWxpbmcgdGhlIHNlbWFwaG9yZS4KKworICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmguCisgICAgICAg
ICogUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0
UmVjZWl2aW5nTWVzc2FnZXNJbXBsKToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVj
dGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwpOgorICAgICAgICAoSVBDOjpTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QXF1aXJlKToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnJlbGVhc2UpOgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6YWxpZ25lZFNwYW4pOgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c2l6ZSk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlOjpjbGFtcGVkTGltaXQgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y29ubmVjdGlvbik6CisgICAgICAgIChJUEM6OlN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjp3cmFwT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQQzo6U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmFsaWduT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKElQ
Qzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNoYXJlZFNlbmRlck9mZnNldCk6CisgICAg
ICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaGFyZWRSZWNlaXZlck9mZnNl
dCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpkYXRhIGNvbnN0
KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OmRhdGFTaXplIGNv
bnN0KToKKyAgICAgICAgKElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5j
UmVwbHkpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6
c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyk6
CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9jZXNz
U2V0U3RyZWFtRGVzdGluYXRpb25JRCk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpT
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3Nh
Z2UpOgorICAgICAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uIHdpbGwgcHJvY2VzcyB0aGUgbWVz
c2FnZSBidWZmZXIgYW5kIGRpc3BhdGNoCisgICAgICAgIG1lc3NhZ2VzIGJhc2VkIG9uIHRoZSBi
dWZmZXIgY29udGVudHMuIFRoZSBjbGFzcyBpcyBhIHRlbXBsYXRlIHNvCisgICAgICAgIHRoYXQg
dGhlIG1lc3NhZ2UgZGF0YSBkZWNvZGUgc3dpdGNoIChnZW5lcmF0ZWQgYnkgdGhlIG5vcm1hbCBJ
UEMKKyAgICAgICAgZ2VuZXJhdG9yKSBpcyBwZXJoYXBzIGlubGluZWQgdG8gdGhlIG1lc3NhZ2Ug
dW5wYWNrIGxvb3AuCisgICAgICAgICogUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0Lmg6CisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weToKKyAgICAgICAgSW1wbGVtZW50cyBhICdTdHJl
YW0nIGF0dHJpYnV0ZSBmb3IgdGhlIG1lc3NhZ2UgcmVjZWl2ZXIuIFdoZW4gbWFya2VkIGFzCisg
ICAgICAgICdTdHJlYW0nLCB0aGUgcmVjZWl2ZXIgbWVzc2FnZSBoYW5kbGVyIGlzIGRpZFJlY2Vp
dmVTdHJlYW1NZXNzYWdlIGFuZCBpdAorICAgICAgICB3aWxsIGJlIGNhbGxlZCBmb3IgYWxsIG1l
c3NhZ2VzLCBzdHJlYW0gb3Igbm9ybWFsIElQQywgc3luYyBvciBhc3luYy4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0L21vZGVsLnB5OgorICAgICAgICBBZGRzIElQQyBjb250cm9sIG1lc3Nh
Z2UgUHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSB0aGF0IGlzIGFjdGVkIG9uIGlmCisgICAgICAg
IGl0IGlzIHBhcnQgb2YgdGhlIHN0cmVhbSBtZXNzYWdlcy4gSXQgbWVhbnMgdGhhdCB0aGUgc3Ry
ZWFtIHByb2Nlc3NpbmcKKyAgICAgICAgc2hvdWxkIHN0b3AgdW50aWwgb25lIG5vcm1hbCBJUEMg
bWVzc2FnZSwgc3luYyBvciBub24tc3luY2gsIHNob3VsZCBiZQorICAgICAgICBwcm9jZXNzZWQu
CisKKyAgICAgICAgQWRkcyBJUEMgY29udHJvbCBtZXNzYWdlIFNldFN0cmVhbURlc3RpbmF0aW9u
SUQgdGhhdCBpcyBhY3RlZCBvbiBpZiBpdAorICAgICAgICBpcyBwYXJ0IG9mIHRoZSBzdHJlYW0g
bWVzc2FnZXMuIEl0IHdpbGwgc2V0IHRoZSBkZXN0aW5hdGlvbiBJRCBmb3IgYWxsCisgICAgICAg
IHRoZSBzdWJzZXF1ZW50IHN0cmVhbSBtZXNzYWdlcywgdW50aWwgYW5vdGhlciBTZXRTdHJlYW1E
ZXN0aW5hdGlvbklECisgICAgICAgIG1lc3NhZ2UgaXMgc2Vlbi4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3Rz
L01lc3NhZ2VOYW1lcy5jcHA6CisgICAgICAgIChJUEM6OmRlc2NyaXB0aW9uKToKKyAgICAgICAg
KElQQzo6cmVjZWl2ZXJOYW1lKToKKyAgICAgICAgKElQQzo6aXNWYWxpZE1lc3NhZ2VOYW1lKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaDoKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbjogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rl
c3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkubWVzc2FnZXMuaW4uCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhT
dHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
VGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmg6IEFkZGVkLgor
ICAgICAgICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVh
bUJ1ZmZlcjo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW1CdWZmZXI6
OlNlbmRTdHJlYW1CdWZmZXI6OlNlbmRTdHJlYW1CdWZmZXIpOgorICAgICAgICAoTWVzc2FnZXM6
OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3RyZWFtQnVmZmVyOjphcmd1bWVudHMgY29uc3Qp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVz
c2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rl
c3RXaXRoU3RyZWFtTWVzc2FnZVJlY2VpdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OlRlc3RXaXRoU3RyZWFtOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZSk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oOiBBZGRlZC4KKyAgICAg
ICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6bWVzc2FnZVJlY2VpdmVyTmFtZSk6CisgICAg
ICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5hbWUpOgorICAgICAg
ICAoTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nOjpTZW5kU3RyaW5nKToKKyAg
ICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZzo6YXJndW1lbnRzIGNv
bnN0KToKKyAgICAgICAgKE1lc3NhZ2VzOjpUZXN0V2l0aFN0cmVhbTo6U2VuZFN0cmluZ1N5bmNo
cm9uaXplZDo6bmFtZSk6CisgICAgICAgIChNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRT
dHJpbmdTeW5jaHJvbml6ZWQ6OlNlbmRTdHJpbmdTeW5jaHJvbml6ZWQpOgorICAgICAgICAoTWVz
c2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjphcmd1bWVudHMg
Y29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtTWVz
c2FnZXNSZXBsaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNDcmVhdGVkKToKKyAg
ICAgICAgU2VuZCB0aGUgd29yayBxdWV1ZSB3YWtldXAgc2VtYXBob3JlIGFzIGEgcmVzdWx0IG9m
IHRoZSBjb250ZXh0IGNyZWF0aW9uLgorCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKElQQzo6U2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6Om9wZXJh
dG9yPSk6CisgICAgICAgIChJUEM6OlNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU6On5T
Y29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlKToKKyAgICAgICAgKElQQzo6U2NvcGVkQWN0
aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTo6cmVzZXQpOgorICAgICAgICAoSVBDOjpTY29wZWRBY3Rp
dmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpnZXQgY29uc3QpOgorICAgICAgICAoSVBDOjpTY29wZWRB
Y3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlOjpzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZSk6
CisgICAgICAgIEFkZCBhIGhvbGRlciB0byByZXBsYWNlIHByZXZpb3VzIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRXcmFwcGVyLgorICAgICAgICBOb3cgb3RoZXIgY2xhc3NlcyBjYW4gYmUgaGVsZCBz
aW1pbGFybHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaDoKKwogMjAyMS0wMi0yMCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByZXZlcnRpbmcgcjI3MzExNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBlMTY3ZWMwMjY0NDIwNTY5
ODdiZTk4ZTU0Nzk2YzYzMTY1NTk2MTY3Li5kYWYwMzgxNDUzODlkNDY3NjgyZDRjOTRiNjAwODU3
ZGQxZTMxYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmltYWdlRGVjb2RlckFW
RlByb3h5KCkKIHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlUmVuZGVyaW5n
QmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNlbWFw
aG9yZSYmIHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKQogewogICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmVuc3VyZShpZGVudGlmaWVyLCBbJl0oKSB7
Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVy
PihSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1v
dmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpKSk7CisgICAgICAgIHJldHVybiBJUEM6OlNj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUgeyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpj
cmVhdGUoKnRoaXMsIGlkZW50aWZpZXIsIFdURk1vdmUocmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmUpKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQu
aXNOZXdFbnRyeSk7CiB9CkBAIC0zMjYsMjUgKzMyNiwxNiBAQCB2b2lkIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsKIH0KIAotR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRXcmFwcGVyKFJlZjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kPiYmIHJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQpCi0gICAgOiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQoV1RGTW92ZShy
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kKSkKLXsKLX0KLQotR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFdyYXBwZXI6On5SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
V3JhcHBlcigpCi17Ci0gICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLT5kaXNjb25uZWN0KCk7
Ci19Ci0KICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBhdHRyaWJ1dGVzLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250
ZXh0R0xJZGVudGlmaWVyLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcikKK3ZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJp
YnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlm
aWVyLCBJUEM6OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0pCiB7Ci0gICAgYXV0byog
cmVuZGVyaW5nQmFja2VuZCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcC5nZXQocmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOwotICAgIGlmICghcmVuZGVyaW5nQmFja2VuZCkKKyAgICBh
dXRvIGl0ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwLmZpbmQocmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIpOworICAgIGlmIChpdCA9PSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXAu
ZW5kKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBhdXRvKiByZW5kZXJpbmdCYWNrZW5kID0gaXQt
PnZhbHVlLmdldCgpOwogCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMTWFwLmVuc3VyZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFsmXSgpIHsKLSAg
ICAgICAgcmV0dXJuIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVhdGUoYXR0cmlidXRlcywg
KnRoaXMsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZC0+Z2V0
KCkpOworICAgICAgICByZXR1cm4gSVBDOjpTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
IHsgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShhdHRyaWJ1
dGVzKSwgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCAqcmVuZGVyaW5nQmFja2VuZCwgV1RG
TW92ZShzdHJlYW0pKSB9OwogICAgIH0pOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBh
ZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA1ZTgyMDMzNTdmNzgxZmRjMDUz
ZTE1ZGNjOGZjOGUxNTk2MDQ0ZTQ2Li45MmQxODI0NTRlMzgwZDEzMjlhZTFmMjQzMzlkMWViYjFm
ZjExYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZW1vdGVBdWRp
b1Nlc3Npb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVtb3RlQ29tbWFuZExpc3Rl
bmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIgogCiAjaW5jbHVk
ZSA8V2ViQ29yZS9MaWJXZWJSVENFbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3dQ
bGF5aW5nTWFuYWdlci5oPgpAQCAtMTM4LDcgKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWxlYXNlUmVuZGVyaW5nQmFja2VuZChSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiAKICNp
ZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciwgUmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRlR3JhcGhpY3ND
b250ZXh0R0woV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLCBJUEM6OlN0cmVh
bUNvbm5lY3Rpb25CdWZmZXImJik7CiAgICAgdm9pZCByZWxlYXNlR3JhcGhpY3NDb250ZXh0R0wo
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKICNlbmRpZgogCkBAIC0yMDYsMjAgKzIwNywx
MCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd3NEaXNwbGF5Q2FwdHVyZSB7IGZhbHNlIH07
CiAjZW5kaWYKIAotICAgIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyIHsKLSAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHVibGljOgotICAgICAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcihSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4mJik7
Ci0gICAgICAgIH5SZW1vdGVSZW5kZXJpbmdCYWNrZW5kV3JhcHBlcigpOwotICAgICAgICBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kJiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuZ2V0KCk7IH0KLSAgICBwcml2YXRlOgotICAgICAgICBSZWY8UmVtb3RlUmVuZGVy
aW5nQmFja2VuZD4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwotICAgIH07Ci0KLSAgICB1c2lu
ZyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kTWFwID0gSGFzaE1hcDxSZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRXcmFwcGVyPj47
CisgICAgdXNpbmcgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIsIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kPj47CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1hcCBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRNYXA7CiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHVzaW5n
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwID0gSGFzaE1hcDxHcmFwaGljc0NvbnRleHRHTElk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4+OworICAg
IHVzaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwID0gSGFzaE1hcDxHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIsIElQQzo6U2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZTxSZW1v
dGVHcmFwaGljc0NvbnRleHRHTD4+OwogICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwIG1f
cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXA7CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyYjY4ZTNiMDg3YTkzNWQx
OWViMWQ3OTdiYmU4M2FkOWQzODA0ODAyLi5hMzQxMjlmZDFkMzA1N2MzOGM2YzRiYzNlMmE2ODNm
OWQ1NjAxY2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsNyBA
QCBtZXNzYWdlcyAtPiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIFdhbnRzRGlzcGF0Y2hNZXNz
YWdlIHsKICAgICB2b2lkIENyZWF0ZVJlbmRlcmluZ0JhY2tlbmQoV2ViS2l0OjpSZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNlbWFwaG9yZSByZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZSkKICAgICB2b2lkIFJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFdlYktpdDo6
UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpCiAj
aWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgQ3JlYXRlR3JhcGhpY3NDb250ZXh0R0woc3RydWN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6
OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIs
IFdlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIgcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIpCisgICAgdm9pZCBDcmVhdGVHcmFwaGljc0NvbnRleHRHTChzdHJ1Y3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6R3JhcGhpY3ND
b250ZXh0R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgV2ViS2l0OjpS
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBD
OjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHN0cmVhbSkKICAgICB2b2lkIFJlbGVhc2VHcmFwaGlj
c0NvbnRleHRHTChXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIpCiAjZW5kaWYKICAgICB2b2lkIENsZWFyTm93UGxheWluZ0luZm8o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZWEzMTEzYjNmMWQ5ZDQ0YmEzOGM4OWY1
MDMxNTgwNzJhOWY1OGY5MC4uYmZiZTcyNTUzMjcyZTFiZWY2YzRjNTk0ZmE2ZGY3NWY5YzAyZmJl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0zMSw1NiArMzEsODAgQEAKICNpbmNs
dWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAor
Ly8gQ3VycmVudGx5IHdlIGhhdmUgb25lIGdsb2JhbCBXZWJHTCBwcm9jZXNzaW5nIGluc3RhbmNl
Lgorc3RhdGljIElQQzo6U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZSYgcmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJ
UEM6OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU+IGluc3RhbmNlKCJSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTCB3b3JrIHF1ZXVlIik7CisgICAgcmV0dXJuIGluc3RhbmNlLmdldCgpOworfQorCiAj
aWYgIVBMQVRGT1JNKENPQ09BKQotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmKQorUmVmPFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKEdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYmIGF0dHJpYnV0ZXMsIEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQmIHJlbmRlcmluZ0JhY2tlbmQsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVh
bSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBhdXRvIGluc3RhbmNlID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTChn
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLCBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHJl
bmRlcmluZ0JhY2tlbmQsIFdURk1vdmUoc3RyZWFtKSkpOworICAgIGluc3RhbmNlLT5pbml0aWFs
aXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIHJldHVybiBpbnN0YW5jZTsKIH0KICNlbmRp
ZgogCi1SZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBHcmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIgaWRlbnRpZmllciwgUmVmPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMPiBjb250ZXh0LCBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW5kZXJpbmdCYWNrZW5kKQotICAgIDogbV9jb250ZXh0
KFdURk1vdmUoY29udGV4dCkpCi0gICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MobWFr
ZVdlYWtQdHIoY29ubmVjdGlvbikpCi0gICAgLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cihpZGVudGlmaWVyKQorUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbmRlcmluZ0JhY2tlbmQsIElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IG1fc3RyZWFtQ29ubmVjdGlvbihJUEM6
OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+OjpjcmVhdGUo
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtKSwg
cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKSkpCisgICAgLCBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcihncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCiAgICAg
LCBtX3JlbmRlcmluZ0JhY2tlbmQobWFrZVJlZihyZW5kZXJpbmdCYWNrZW5kKSkKIHsKLSAgICBp
ZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+bWVzc2Fn
ZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0gICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRo
aXMpOwotICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9jb250ZXh0LT5nZXRTdHJpbmcoR3JhcGhp
Y3NDb250ZXh0R0w6OkVYVEVOU0lPTlMpOwotICAgIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lv
bnMgPSBtX2NvbnRleHQtPmdldFN0cmluZyhFeHRlbnNpb25zR0w6OlJFUVVFU1RBQkxFX0VYVEVO
U0lPTlNfQU5HTEUpOwotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Oldhc0NyZWF0ZWQodHJ1ZSwgZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25z
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiB9CiAKIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp+UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0woKQogewotICAgIGlmIChhdXRvKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzID0g
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpKQotICAgICAgICBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIEFTU0VSVCgh
bV9zdHJlYW1Db25uZWN0aW9uKTsKKyAgICBBU1NFUlQoIW1fY29udGV4dCk7CiB9CiAKLUdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Omlu
aXRpYWxpemUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKLSAg
ICByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmdldCgpOworICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisgICAgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3Jr
UXVldWUoKS5kaXNwYXRjaChbYXR0cmlidXRlcyA9IFdURk1vdmUoYXR0cmlidXRlcyksIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvdGVjdGVk
VGhpcy0+d29ya1F1ZXVlSW5pdGlhbGl6ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICB9KTsK
KyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0YXJ0UmVjZWl2aW5nTWVzc2FnZXMoKnRoaXMsIE1l
c3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTDo6c3RvcExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0w+JiYgcmVmRnJvbUNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICBtX3N0cmVhbUNvbm5lY3Rpb24tPnN0b3BSZWNlaXZpbmdNZXNzYWdl
cyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgcmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocmVmRnJvbUNvbm5lY3Rpb24pXSgpIHsKKyAgICAgICAgcHJvdGVjdGVkVGhp
cy0+d29ya1F1ZXVlVW5pbml0aWFsaXplKCk7CisgICAgfSk7CiB9CiAKLUlQQzo6Q29ubmVjdGlv
biogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QKK3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OndvcmtRdWV1ZUluaXRpYWxpemUoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcykKIHsKLSAgICBp
ZiAoYXV0byogZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcyA9IG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5nZXQoKSkKLSAgICAgICAgcmV0dXJuICZncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LT5jb25uZWN0aW9uKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcGxhdGZvcm1Xb3JrUXVl
dWVJbml0aWFsaXplKFdURk1vdmUoYXR0cmlidXRlcykpOworICAgIGlmIChtX2NvbnRleHQpIHsK
KyAgICAgICAgbV9jb250ZXh0LT5hZGRDbGllbnQoKnRoaXMpOworICAgICAgICBTdHJpbmcgZXh0
ZW5zaW9ucyA9IG1fY29udGV4dC0+Z2V0U3RyaW5nKEdyYXBoaWNzQ29udGV4dEdMOjpFWFRFTlNJ
T05TKTsKKyAgICAgICAgU3RyaW5nIHJlcXVlc3RhYmxlRXh0ZW5zaW9ucyA9IG1fY29udGV4dC0+
Z2V0U3RyaW5nKEV4dGVuc2lvbnNHTDo6UkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRSk7Cisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0Ny
ZWF0ZWQodHJ1ZSwgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKS53YWtl
VXBTZW1hcGhvcmUoKSwgZXh0ZW5zaW9ucywgcmVxdWVzdGFibGVFeHRlbnNpb25zKSk7CisgICAg
fSBlbHNlCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHk6Oldhc0NyZWF0ZWQoZmFsc2UsIElQQzo6U2VtYXBob3JlIHsgfSwgIiIsICIiKSk7CiB9CiAK
LXVpbnQ2NF90IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjptZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0Cit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjp3b3JrUXVldWVVbmlu
aXRpYWxpemUoKQogewotICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci50
b1VJbnQ2NCgpOworICAgIG1fY29udGV4dCA9IG51bGxwdHI7CisgICAgbV9zdHJlYW1Db25uZWN0
aW9uID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlkQ29t
cG9zaXRlKCkKQEAgLTg5LDcgKzExMyw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6
OmRpZENvbXBvc2l0ZSgpCiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmZvcmNlQ29u
dGV4dExvc3QoKQogewotICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Oldhc0xvc3QoKSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHNl
bmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Oldhc0xvc3QoKSk7CiB9
CiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0KCkKQEAgLTk5
LDcgKzEyMyw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnJlY3ljbGVDb250ZXh0
KCkKIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6ZGlzcGF0Y2hDb250ZXh0Q2hhbmdl
ZE5vdGlmaWNhdGlvbigpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6V2FzQ2hhbmdlZCgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7
CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6V2FzQ2hh
bmdlZCgpKTsKIH0KIAogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6cmVzaGFwZShpbnQz
Ml90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYWFh
NTc0OWQwYmM1NDY0NmIyYzFmOGY0YzM5ZTU4YmRhOTYxZTg0Zi4uZjhmNWI3MzMxYWFlODkwNTBm
OTA3YTk2MGJhYmZkMjUwZDNlZGMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTI4LDEw
ICsyOCwxMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQogCiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKLSNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnNHTC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CkBAIC00OSwzMiArNDksMjggQEAgY2xhc3MgTWFjaFNlbmRSaWdodDsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7Ci0K
IC8vIEdQVSBwcm9jZXNzIHNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCByZWNlaXZlcyBtZXNz
YWdlcyBhYm91dCBHcmFwaGljc0NvbnRleHRHTCBjYWxscwogLy8gYW5kIGlzc3VlcyByZWFsIEdy
YXBoaWNzQ29udGV4dEdMIGNhbGxzIGJhc2VkIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlcy4KIC8v
IFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGdlbmVyYXRlZCBieSBydW5uaW5nIFRvb2xz
L1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbC4KLWNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMCi0gICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgLCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyCi0gICAgLCBwcml2YXRlIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpDbGllbnQgeworY2xhc3MgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+LCBwcml2YXRlIFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMOjpDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
LCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJik7CisgICAgc3RhdGljIFJlZjxSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYp
OwogICAgIH5SZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpIG92ZXJyaWRlOworICAgIHZvaWQgc3Rv
cExpc3RlbmluZ0ZvcklQQyhSZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+JiYgcmVmRnJvbUNv
bm5lY3Rpb24pOwogCi0gICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlv
blRvV2ViUHJvY2VzcygpIGNvbnN0OworICAgIC8vIElQQzo6U3RyZWFtU2VydmVyQ29ubmVjdGlv
bjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gdGVtcGxhdGUgY29udHJhY3QgaW1wbGVtZW50YXRp
b24uCisgICAgdm9pZCBkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNv
bm5lY3Rpb25CYXNlJiwgSVBDOjpEZWNvZGVyJik7CiAKIHByb3RlY3RlZDoKLSAgICBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyLCBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+LCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kJik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIgb3ZlcnJpZGVzLgotICAg
IElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsK
LSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwor
ICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmLCBJUEM6
OlN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgdm9pZCBpbml0aWFsaXplKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKIAotICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIG92ZXJyaWRlcy4KLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
OkVuY29kZXI+JikgZmluYWw7CisgICAgdm9pZCB3b3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1Xb3JrUXVldWVJbml0aWFsaXplKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYmKSB7IH07CisgICAgdm9pZCB3b3JrUXVldWVVbmluaXRpYWxpemUoKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkgY29uc3QgeyByZXR1cm4g
bV9zdHJlYW1Db25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7IH0KIAogICAgIC8vIEdyYXBoaWNzQ29udGV4
dEdMOjpDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkQ29tcG9zaXRlKCkgZmluYWw7CkBA
IC0xMDAsOCArOTYsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHBhaW50SW1hZ2VEYXRhVG9J
bWFnZUJ1ZmZlcihSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiYmLCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAg
ICBSZWY8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w+IG1fY29udGV4dDsKLSAgICBX
ZWFrUHRyPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKKyAgICBSZWZQdHI8SVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMPj4gbV9zdHJlYW1Db25uZWN0aW9uOworICAgIFJlZlB0cjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTD4gbV9jb250ZXh0OwogICAgIEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcjsKICAgICBSZWY8UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZD4gbV9yZW5kZXJpbmdCYWNrZW5kOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBkMTUwOTU5YWFhNWU1NGEzZWM1MGI3NGEy
MjE5NzA4NGIwMGRhNjg5Li5mN2Q1MjkwMzU0MzQ0MmFiZjNiYjE0MTllMWM5ZDQyNTE5NWMyYTE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsy
NCw3IEBACiAvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wu
IERvIG5vdCBlZGl0LgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKFdFQkdMKQog
Ci1tZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKK21l
c3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsK
ICAgICB2b2lkIFJlc2hhcGUoaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgdm9pZCBQcmVwYXJlRm9yRGlzcGxheSgpIC0+IChNYWNoU2VuZFJp
Z2h0IGRpc3BsYXlCdWZmZXIpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xD
b2NvYS5jcHAKaW5kZXggNzllNTMwNzFhMTJjMDg0MmViYTc4YjU2ODRmNjU4NTU1ODcxNmQ5Zi4u
YmU1OWUyZmU5MDk1ZjE4OTM1MjRiNTc0ZjRjYzJhNWQyNTYzNjhiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29j
b2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTENvY29hLmNwcApAQCAtMzksMTAgKzM5LDExIEBAIG5hbWVzcGFjZSB7CiAK
IGNsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EgZmluYWwgOiBwdWJsaWMgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgewogcHVibGljOgotICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCYpOworICAgIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EoR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZCYsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmKTsKICAg
ICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xDb2NvYSgpIGZpbmFsID0gZGVmYXVsdDsKIAogICAg
IC8vIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG92ZXJyaWRlcy4KKyAgICB2b2lkIHBsYXRmb3Jt
V29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMm
JikgZmluYWw7CiAgICAgdm9pZCBwcmVwYXJlRm9yRGlzcGxheShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdURjo6TWFjaFNlbmRSaWdodCYmKT4mJikgZmluYWw7CiBwcml2YXRlOgogICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMSU9TdXJmYWNlU3dhcENoYWluIG1fc3dhcENoYWluOwpAQCAt
NTAsMTYgKzUxLDIzIEBAIHByaXZhdGU6CiAKIH0KIAotc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYgYXR0cmlidXRlcywgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbmRlcmluZ0JhY2tlbmQpCitS
ZWY8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjcmVh
dGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcywg
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiYgYXR0cmlidXRlcywgR3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCYgcmVuZGVyaW5nQmFja2VuZCwgSVBDOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiYg
c3RyZWFtKQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
Q29jb2E+KGF0dHJpYnV0ZXMsIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIHJlbmRlcmluZ0JhY2tl
bmQpOworICAgIGF1dG8gaW5zdGFuY2UgPSBhZG9wdFJlZigqbmV3IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcywgZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLCByZW5kZXJpbmdCYWNrZW5kLCBXVEZNb3ZlKHN0cmVhbSkpKTsKKyAgICBpbnN0
YW5jZS0+aW5pdGlhbGl6ZShXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKKyAgICByZXR1cm4gaW5zdGFu
Y2U7CiB9CiAKLVJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMQ29jb2EoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiBh
dHRyaWJ1dGVzLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYg
cmVuZGVyaW5nQmFja2VuZCkKLSAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0
ZXMsIGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVh
dGVGb3JHUFVQcm9jZXNzKGF0dHJpYnV0ZXMsICZtX3N3YXBDaGFpbiksIHJlbmRlcmluZ0JhY2tl
bmQpCitSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hOjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TENvY29hKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXIsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbmRlcmluZ0JhY2tlbmQsIElQQzo6U3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciYmIHN0cmVhbSkKKyAgICA6IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
KGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwg
cmVuZGVyaW5nQmFja2VuZCwgV1RGTW92ZShzdHJlYW0pKQogewogfQogCit2b2lkIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMQ29jb2E6OnBsYXRmb3JtV29ya1F1ZXVlSW5pdGlhbGl6ZShXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmJiBhdHRyaWJ1dGVzKQoreworICAgIG1fY29u
dGV4dCA9IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjcmVhdGVGb3JHUFVQcm9jZXNzKFdURk1v
dmUoYXR0cmlidXRlcyksICZtX3N3YXBDaGFpbik7Cit9CisKIHZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xDb2NvYTo6cHJlcGFyZUZvckRpc3BsYXkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
VEY6Ok1hY2hTZW5kUmlnaHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jb250
ZXh0LT5wcmVwYXJlRm9yRGlzcGxheSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGIz
ZWI2YjY5NmE5MzQ5OTM3NzIyM2Q3OTI4ZjlhMGQyOTk2MTdmMmEuLjkyNDJjOTI2Yzc3NWM1YjFk
YWY0ZTQ0ZWQyNWJjMzMxZTBlNzUyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTg5
LDcgKzg5LDcgQEAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6flJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQoKQogICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbcmVtb3RlUmVzb3VyY2VDYWNoZSA9IFdU
Rk1vdmUobV9yZW1vdGVSZXNvdXJjZUNhY2hlKV0geyB9KTsKIH0KIAotdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkaXNjb25uZWN0KCkKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
c3RvcExpc3RlbmluZ0ZvcklQQygpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggMDg1NmY2ZDI3YWU4ZDUwNWY1YzFkYmY5ZTkzNTIx
MTVhMDFhYzBjNS4uZTdjMzQyZmI3NWNmYWMzNTcyOTRkNTJlZjI0ZDU2NDU5YTcxNTZhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBSZWY8UmVtb3RlUmVuZGVyaW5nQmFja2VuZD4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllciwgSVBDOjpTZW1hcGhvcmUmJiByZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSk7CiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCgpOworICAgIHZvaWQgc3RvcExpc3RlbmluZ0ZvcklQQygpOwogCiAgICAgUmVtb3RlUmVz
b3VyY2VDYWNoZSYgcmVtb3RlUmVzb3VyY2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZTsgfQogCkBAIC03OCw4ICs3OSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TmV4
dEl0ZW1CdWZmZXJUb1JlYWQoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb24pOwog
Ci0gICAgdm9pZCBkaXNjb25uZWN0KCk7Ci0KICAgICAvLyBSdW5zIEZ1bmN0aW9uIGluIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQgdGFzayBxdWV1ZS4KICAgICB2b2lkIGRpc3BhdGNoKEZ1bmN0aW9u
PHZvaWQoKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggYTkxZjliZTFmYjliNTk4MzRkMWE5
MmY2MTFkY2I0NjZiYmJlNzFkZC4uNTJjYzVkYTEyMWEyZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2NTVj
MGNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
UGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZENsaWVudC5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuaAppbmRleCA0OTcxNzFiNTY0MjY4OTI4OTUyMTA2YmQ3ZWVhNTRiZWU5
M2JlZTIzLi5iMGNmNzBmMDZlMTE4ZTAyMWQ4NjRkZWI5OGQ0MTRlZmJhOWU3YzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNs
dWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
IkxpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSVENNb25p
dG9yLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IDMyMDc2YWZkMDJhODk4YTFlMzlkZTI4M2UxMDJiODU5
NDdmOGVkYzcuLjUzMzUwZjlmN2M4YzEyYmU2Mjc1OTk5YzdlYmZjM2M3ZTA5MWJjYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2luY2x1ZGUgIkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVk
ZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNw
YWNlIElQQyB7CkBAIC03NSw2ICs3Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
ID0gdm9pZD4gc3RydWN0IEFyZ3VtZW50Q29kZXIgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
c3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X2FyaXRobWV0aWNfdjxUPj4+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBUIHZhbHVlKQogICAgIHsKICAg
ICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKQEAgLTkxLDYgKzkz
LDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVj
dCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVt
X3Y8VD4+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgVCB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChXVEY6OmlzVmFsaWRFbnVtPFQ+KFdURjo6ZW51bVRvVW5kZXJseWluZ1R5cGU8VD4odmFsdWUp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggYjBhNDNkZTlkN2ExMzcyMTZhMTliZjdkMGJkNWUxOTExM2I1ZGE2OC4uYWVlODllNjI2OTZj
NTYwZjBhMThiZmIxZDY3NjkxNjUwZTdmZjJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkFy
Z3VtZW50Q29kZXJzLmgiCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTExMSw3ICsxMTIsNyBAQCBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENvZGVyPENTdHJpbmc+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgQ1N0cmluZwogICAgIHJldHVybiB0cnVlOwogfQogCi0KK3RlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+CiB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIFNwZWNpYWwg
Y2FzZSB0aGUgbnVsbCBzdHJpbmcuCkBAIC0xMzAsNiArMTMxLDEwIEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiAgICAgZWxzZQogICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczE2KCkpLCBsZW5n
dGggKiBzaXplb2YoVUNoYXIpLCBhbGlnbm9mKFVDaGFyKSk7CiB9Cit0ZW1wbGF0ZQordm9pZCBB
cmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxFbmNvZGVyPihFbmNvZGVyJiwgY29uc3QgU3Ry
aW5nJik7Cit0ZW1wbGF0ZQordm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZTxTdHJl
YW1Db25uZWN0aW9uRW5jb2Rlcj4oU3RyZWFtQ29ubmVjdGlvbkVuY29kZXImLCBjb25zdCBTdHJp
bmcmKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5l
IE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50
MzJfdCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMu
aAppbmRleCAyMGViMTdhMGZkODI2MGQ0MGJlYzdmY2RhYWVhMjNiYzVlODY1ZTA5Li5mODU2OTgw
NzNkZDA0NWIyODE2ZTE2MTBjYTQ5OTZhNWQ0ZWU2YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTU1LDYgKzU1LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50Q29kZXIgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxU
LCBFeHRlbnQ+PiB7CiAgICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVu
Y2U8VCwgRXh0ZW50PjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcnJheVJlZmVyZW5jZVR5cGUm
IGFycmF5UmVmZXJlbmNlKQogICAgIHsKICAgICAgICAgaWYgKCFFeHRlbnQpCkBAIC03NCw2ICs3
NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVuCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1p
Y0V4dGVudD4+IHsKICAgICB1c2luZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5j
ZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+OworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IEFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2UpCiAgICAgewogICAgICAgICBlbmNv
ZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhcnJheVJlZmVyZW5jZS5zaXplKCkpOwpAQCAt
MjY2LDYgKzI2OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBB
cmd1bWVudENvZGVyPHN0ZDo6cGFpcjxULCBVPj4gewogCiB0ZW1wbGF0ZTxzaXplX3QgaW5kZXgs
IHR5cGVuYW1lLi4uIEVsZW1lbnRzPgogc3RydWN0IFR1cGxlRW5jb2RlciB7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVtZW50cy4uLj4mIHR1cGxlKQogICAgIHsKICAgICAg
ICAgZW5jb2RlciA8PCBzdGQ6OmdldDxzaXplb2YuLi4oRWxlbWVudHMpIC0gaW5kZXg+KHR1cGxl
KTsKQEAgLTI3NSw2ICsyNzgsNyBAQCBzdHJ1Y3QgVHVwbGVFbmNvZGVyIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUuLi4gRWxlbWVudHM+CiBzdHJ1Y3QgVHVwbGVFbmNvZGVyPDAsIEVsZW1lbnRzLi4u
PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IHN0ZDo6dHVwbGU8RWxlbWVudHMuLi4+JikKICAgICB7CiAgICAg
fQpAQCAtMzM4LDYgKzM0Miw3IEBAIHN0cnVjdCBUdXBsZURlY29kZXI8MD4gewogfTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUuLi4gRWxlbWVudHM+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6dHVw
bGU8RWxlbWVudHMuLi4+PiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KICAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjp0dXBsZTxFbGVt
ZW50cy4uLj4mIHR1cGxlKQogICAgIHsKICAgICAgICAgVHVwbGVFbmNvZGVyPHNpemVvZi4uLihF
bGVtZW50cyksIEVsZW1lbnRzLi4uPjo6ZW5jb2RlKGVuY29kZXIsIHR1cGxlKTsKQEAgLTM3NCw2
ICszNzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6S2V5VmFsdQogdGVtcGxhdGU8Ym9vbCBmaXhlZFNp
emVFbGVtZW50cywgdHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eT4gc3RydWN0IFZlY3RvckFyZ3VtZW50
Q29kZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlw
ZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+IHN0cnVjdCBWZWN0b3JB
cmd1bWVudENvZGVyPGZhbHNlLCBULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBt
aW5DYXBhY2l0eT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4mIHZlY3RvcikKICAgICB7CiAgICAg
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZlY3Rvci5zaXplKCkpOwpAQCAt
NDExLDYgKzQxNyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluCiB9OwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxl
ciwgc2l6ZV90IG1pbkNhcGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQXJndW1lbnRDb2Rlcjx0cnVlLCBU
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4geworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eT4mIHZlY3RvcikKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHZlY3Rvci5zaXplKCkpOwpAQCAtNzUzLDYgKzc2MCw3IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Q1N0cmluZz4gewogfTsKIAogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxTdHJpbmc+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNv
ZGVyPgogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgU3RyaW5n
Jik7CiAgICAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggOTJjYzk3YThmMGZjY2Jk
M2M4MGY1MDNjYjZkNmEyMDQ1MmZjNjI2MS4uZjg4YjFmNDM4ZDFmNWVlYTVjMzQ2NzIwNTJjYWU5
ZGI3ZDEyYWQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VGbGFncy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVl
dWVzLmgiCkBAIC05MzAsOCArOTMxLDEzIEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5j
TWVzc2FnZShEZWNvZGVyJiBkZWNvZGVyKQogCiB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoRGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKE1lc3NhZ2VOYW1lIG1lc3NhZ2VOYW1lKQogewotICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KKyAgICBpZiAoIVJ1bkxvb3A6OmlzTWFpbigpKSB7
CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBtZXNzYWdlTmFtZV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghcHJv
dGVjdGVkVGhpcy0+aXNWYWxpZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPm1fY2xpZW50LmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShwcm90
ZWN0ZWRUaGlzLCBtZXNzYWdlTmFtZSk7CisgICAgICAgIH0pOworICAgIH0KICAgICBpZiAoIWlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmgKaW5kZXggNDg1NTIwMTI0N2MyNWRmODU1MmM1YTU0YTA0Njc3YjhkNzJiODJjYS4u
ZmU5Y2EzMTg2MDZmZGVkYzYxZDIxZDA3ZGYwZjhhYjFiZmU5M2JkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzAsMTAgKzMwLDkgQEAKIAogI2luY2x1ZGUg
IkRlY29kZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCi0jaW5jbHVkZSAiSGFuZGxlTWVzc2Fn
ZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuaCIKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0zMTIsNiArMzExLDggQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZVJlY2VpdmVyTWVzc2FnZShN
ZXNzYWdlUmVjZWl2ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4mJik7CisgICAgLy8gQ2Fu
IGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShNZXNzYWdlTmFtZSk7CiBwcml2YXRlOgogICAgIENvbm5lY3Rpb24oSWRl
bnRpZmllciwgYm9vbCBpc1NlcnZlciwgQ2xpZW50Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoSWRlbnRpZmllcik7CkBAIC0zMzksNyArMzQwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpc3BhdGNoTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4pOwogICAgIHZvaWQgZGlz
cGF0Y2hNZXNzYWdlKERlY29kZXImKTsKICAgICB2b2lkIGRpc3BhdGNoU3luY01lc3NhZ2UoRGVj
b2RlciYpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoTWVzc2Fn
ZU5hbWUpOwogICAgIHZvaWQgZGlkRmFpbFRvU2VuZFN5bmNNZXNzYWdlKCk7CiAKICAgICAvLyBD
YW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29k
ZXIuY3BwCmluZGV4IDQwMDEwZTUxMzZiNjViZTY0ZGFlZTRhNDdiZmNhNmVlMjU3N2NmYTEuLjEw
YzE1OWU2ZjUyMTIyNmExMDRlZTViNjY2MjYxNTNiOGIyYjYxMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RlY29kZXIuY3BwCkBAIC0xMTAsNiArMTEwLDE3IEBAIERlY29kZXI6OkRlY29k
ZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgQ29uc3RydWN0V2l0
aG91dEhlYWRlCiAgICAgICAgIG1hcmtJbnZhbGlkKCk7CiB9CiAKK0RlY29kZXI6OkRlY29kZXIo
Y29uc3QgdWludDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtU2l6ZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCkKKyAgICA6IG1fYnVmZmVyIHsgc3RyZWFtIH0KKyAgICAsIG1fYnVmZmVyUG9zIHsg
bV9idWZmZXIgfQorICAgICwgbV9idWZmZXJFbmQgeyBtX2J1ZmZlciArIHN0cmVhbVNpemUgfQor
ICAgICwgbV9idWZmZXJEZWFsbG9jYXRvcihbXSAoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9
KQorICAgICwgbV9kZXN0aW5hdGlvbklEKGRlc3RpbmF0aW9uSUQpCit7CisgICAgaWYgKCFkZWNv
ZGUobV9tZXNzYWdlTmFtZSkpCisgICAgICAgIHJldHVybjsKK30KKwogRGVjb2Rlcjo6fkRlY29k
ZXIoKQogewogICAgIEFTU0VSVChtX2J1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNv
ZGVyLmgKaW5kZXggNTI5MWE0NmRkNTk1NTlmNGNiOTJiMzY3NmY5MzQxMTY5NzQ1ZDRmNy4uMGYz
YWMyM2I0YzViN2NmMjg1ZmE1OTA3ZjE2MTZlMGRiNzE1NmZiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RlY29kZXIuaApAQCAtNTAsNiArNTAsOCBAQCBjbGFzcyBEZWNvZGVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPERlY29kZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJT
aXplLCB2b2lkICgqYnVmZmVyRGVhbGxvY2F0b3IpKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpLCBW
ZWN0b3I8QXR0YWNobWVudD4mJik7CisgICAgRGVjb2Rlcihjb25zdCB1aW50OF90KiBzdHJlYW0s
IHNpemVfdCBzdHJlYW1TaXplLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKwogICAgIH5EZWNv
ZGVyKCk7CiAKICAgICBEZWNvZGVyKGNvbnN0IERlY29kZXImKSA9IGRlbGV0ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaAppbmRleCBlYThhZDQ1YzA5ZWI2ODJl
MGU4NjIzYjkzNGQ1ZTBlOWM3MDI2MjJhLi45Mjk2M2UyMWUxZDcxN2Y2NGE4MjE5YzUyODliYWYw
NTNmMDk5NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9IYW5kbGVN
ZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCkBAIC0xNjQsNiArMTY1LDI4IEBAIHZvaWQgaGFuZGxlTWVzc2FnZVN5bmNo
cm9ub3VzV2FudHNDb25uZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIERlY29kZXImIGRl
CiAgICAgY2FsbE1lbWJlckZ1bmN0aW9uKGNvbm5lY3Rpb24sIFdURk1vdmUoKmFyZ3VtZW50cyks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBvYmplY3QsIGZ1bmN0aW9uKTsKIH0KIAordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+Cit2b2lkIGhhbmRsZU1l
c3NhZ2VTeW5jaHJvbm91cyhTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbiwg
RGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3sKKyAgICB1aW50NjRf
dCBzeW5jUmVxdWVzdElEID0gMDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN5bmNSZXF1ZXN0
SUQpIHx8ICFzeW5jUmVxdWVzdElEKSB7CisgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5
cGU8dHlwZW5hbWUgVDo6QXJndW1lbnRzPjo6VHlwZT4gYXJndW1lbnRzOworICAgIGRlY29kZXIg
Pj4gYXJndW1lbnRzOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAgIGRlY29kZXIubWFy
a0ludmFsaWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHR5cGVuYW1lIFQ6OkRl
bGF5ZWRSZXBseSBjb21wbGV0aW9uSGFuZGxlciA9IFtzeW5jUmVxdWVzdElELCBjb25uZWN0aW9u
ID0gbWFrZVJlZihjb25uZWN0aW9uKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICAg
ICAgY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShzeW5jUmVxdWVzdElELCBhcmdzLi4uKTsKKyAg
ICB9OworICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgb2JqZWN0LCBmdW5jdGlvbik7Cit9CisKIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgogdm9pZCBoYW5kbGVNZXNzYWdlQXN5
bmMoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBN
RiBmdW5jdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1Nj
b3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2EwNTZh
MDIwMWMyYWQwZTc0OTBlYzdkN2ZlYmJkZDc3MTA5N2IxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5o
CkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxtZW1vcnk+CisjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgSVBDIHsKKworLy8gU2NvcGVkIGhvbGRl
ciBmb3Igb2JqZWN0cyB0aGF0IGhhdmUgYWN0aXZlIG1lc3NhZ2UgcmVjZWl2ZSBxdWV1ZXMuIEVu
Zm9yY2VzIHRoYXQKKy8vIG9uY2UgaG9sZGVyIHN0b3BzIGhvbGRpbmcgdGhlIG9iamVjdCwgdGhl
IG1lc3NhZ2UgcXVldWUgc2hvdWxkIGJlIHJlbW92ZWQuCisvLyBUaGUgY29udmVudGlvbiBpcyB0
byBjYWxsIHN0b3BMaXN0ZW5pbmdGb3JJUEMoKSBmb3IgdGhlIG9iamVjdC4KKy8vIE9wdGlvbmFs
bHkgdGhlIG9iamVjdCBjYW4gb2J0YWluIHRoZSBvd25pbmcgcmVmZXJlbmNlIHRoYXQgd2FzIHVz
ZWQgdG8gaG9sZCB0aGUgb2JqZWN0CisvLyBpbiBvcmRlciB0byBhdHRlbXB0IHRvIGF2b2lkIG5l
ZWRsZXNzIGRlc3RydWN0aW9uIG9mIHRoZSBvYmplY3QgaW4gaG9sZGVyIHRocmVhZC4KKy8vIFRo
aXMgdXNlZnVsIGluIHRoZSBjYXNlIHRoZSBzdG9wIGludm9rZXMgYSBjbGVhbnVwIHRhc2sgaW4g
dGhlIG1lc3NhZ2UgaGFuZGxlcgorLy8gdGhyZWFkLgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEhvbGRlclR5cGUgPSBSZWZQdHI8VD4+CitjbGFzcyBTY29wZWRBY3RpdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1
ZXVlKCkgPSBkZWZhdWx0OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIFNjb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoVSYmIG9iamVjdCkKKyAgICAgICAgOiBtX29iamVjdChX
VEZNb3ZlKG9iamVjdCkpCisgICAgeworICAgIH0KKyAgICBTY29wZWRBY3RpdmVNZXNzYWdlUmVj
ZWl2ZVF1ZXVlKFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUmJiBvdGhlcikKKyAgICAg
ICAgOiBtX29iamVjdChzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fb2JqZWN0LCBudWxscHRyKSkKKyAg
ICB7CisgICAgfQorICAgIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUmIG9wZXJhdG9y
PShTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlJiYgb3RoZXIpCisgICAgeworICAgICAg
ICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgICAgIHJlc2V0KCk7CisgICAgICAgICAg
ICBtX29iamVjdCA9IHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9vYmplY3QsIG51bGxwdHIpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgflNjb3BlZEFjdGl2ZU1l
c3NhZ2VSZWNlaXZlUXVldWUoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisgICAg
dm9pZCByZXNldCgpCisgICAgeworICAgICAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBzdG9wTGlzdGVuaW5nRm9ySVBDQW5kUmVsZWFzZShtX29iamVjdCk7
CisgICAgfQorICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0LmdldCgpOyB9Citw
cml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgc3RhdGljIGF1dG8gc3RvcExp
c3RlbmluZ0ZvcklQQ0FuZFJlbGVhc2UoVSYgb2JqZWN0KSAtPiBkZWNsdHlwZShvYmplY3QtPnN0
b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpLCB2b2lkKCkpCisgICAg
eworICAgICAgICBvYmplY3QtPnN0b3BMaXN0ZW5pbmdGb3JJUEMob2JqZWN0LnJlbGVhc2VOb25O
dWxsKCkpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBhdXRv
IHN0b3BMaXN0ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9iamVjdCkgLT4gZGVjbHR5cGUob2Jq
ZWN0LT5zdG9wTGlzdGVuaW5nRm9ySVBDKFdURk1vdmUob2JqZWN0KSksIHZvaWQoKSkKKyAgICB7
CisgICAgICAgIG9iamVjdC0+c3RvcExpc3RlbmluZ0ZvcklQQyhXVEZNb3ZlKG9iamVjdCkpOwor
ICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHN0YXRpYyBhdXRvIHN0b3BMaXN0
ZW5pbmdGb3JJUENBbmRSZWxlYXNlKFUmIG9iamVjdCkgLT4gZGVjbHR5cGUob2JqZWN0LT5zdG9w
TGlzdGVuaW5nRm9ySVBDKCksIHZvaWQoKSkKKyAgICB7CisgICAgICAgIG9iamVjdC0+c3RvcExp
c3RlbmluZ0ZvcklQQygpOworICAgICAgICBvYmplY3QgPSBudWxscHRyOworICAgIH0KKyAgICBI
b2xkZXJUeXBlIG1fb2JqZWN0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Njb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoc3RkOjp1bmlxdWVfcHRyPFQ+JiYpIC0+IFNjb3BlZEFj
dGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwgc3RkOjp1bmlxdWVfcHRyPFQ+PjsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK1Njb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUoUmVmPFQ+JiYp
IC0+IFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWU8VCwgUmVmUHRyPFQ+PjsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0
aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iNGY1Y2RmMDA4ZTVhN2YyZDJmMTAyYTIzNWMzYzIyNTE3MzM3
NmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgiCisKK25h
bWVzcGFjZSBJUEMgeworCitTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTdHJlYW1DbGllbnRDb25u
ZWN0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBzaXplKQorICAgIDogbV9jb25u
ZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2J1ZmZlcihzaXplKQoreworICAgIC8vIFJlYWQg
c3RhcnRzIGZyb20gMCB3aXRoIGxpbWl0IG9mIDAgYW5kIHJlYWRlciBzbGVlcGluZy4KKyAgICBz
aGFyZWRTZW5kZXJPZmZzZXQoKS5zdG9yZShTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJP
ZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwor
ICAgIC8vIFdyaXRlIHN0YXJ0cyBmcm9tIDAgd2l0aCBhIGxpbWl0IG9mIHRoZSB3aG9sZSBidWZm
ZXIuCisgICAgc2hhcmVkUmVjZWl2ZXJPZmZzZXQoKS5zdG9yZSgwLCBzdGQ6Om1lbW9yeV9vcmRl
cl9yZWxheGVkKTsKK30KKwordm9pZCBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpzZXRXYWtlVXBT
ZW1hcGhvcmUoSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUpCit7CisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgbV93YWtlVXBTZW1hcGhvcmUgPSBXVEZNb3ZlKHNlbWFwaG9yZSk7CisjZW5kaWYK
KyAgICB3YWtlVXBSZWNlaXZlcigpOworfQorCit2b2lkIFN0cmVhbUNsaWVudENvbm5lY3Rpb246
Ondha2VVcFJlY2VpdmVyKCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAobV93YWtl
VXBTZW1hcGhvcmUpCisgICAgICAgIG1fd2FrZVVwU2VtYXBob3JlLT5zaWduYWwoKTsKKyNlbmRp
ZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1D
bGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGll
bnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjkzNmI5MDI2NWFkY2NiODQ0MjIxYTYyMGQ0Njdh
MTBiN2RmMDRjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDI0NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIklQQ1NlbWFwaG9y
ZS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgorI2luY2x1
ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorbmFt
ZXNwYWNlIElQQyB7CisKKy8vIEEgbWVzc2FnZSBzdHJlYW0gaXMgYSBoYWxmLWR1cGxleCB0d28t
d2F5IHN0cmVhbSBvZiBtZXNzYWdlcyB0byBhIGJldHdlZW4gYSBzZW5kZXIgYW5kIHRoZQorLy8g
ZGVzdGluYXRpb24gcmVjZWl2ZXIuCisvLworLy8gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBjYW4g
c2VuZCBtZXNzYWdlcyBhbmQgcmVjZWl2ZSBzeW5jaHJvbm91cyByZXBsaWVzCisvLyB0aHJvdWdo
IHRoaXMgbWVzc2FnZSBzdHJlYW0gb3IgdGhyb3VnaCBJUEM6OkNvbm5lY3Rpb24uCisvLworLy8g
VGhlIGRlc3RpbmF0aW9uIHJlY2VpdmVyIHdpbGwgcmVjZWl2ZSBtZXNzYWdlcyBpbiBvcmRlciBf
Zm9yIHRoZSBkZXN0aW5hdGlvbiBtZXNzYWdlc18uCisvLyBUaGUgd2hvbGUgSVBDOjpDb25uZWN0
aW9uIG1lc3NhZ2Ugb3JkZXIgaXMgbm90IHByZXNlcnZlZC4KKy8vCisvLyBUaGUgU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbiB0cnVzdHMgdGhlIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uCitjbGFzcyBT
dHJlYW1DbGllbnRDb25uZWN0aW9uIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
dHJlYW1DbGllbnRDb25uZWN0aW9uKTsKK3B1YmxpYzoKKyAgICBTdHJlYW1DbGllbnRDb25uZWN0
aW9uKENvbm5lY3Rpb24mLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisKKyAgICBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyJiBzdHJlYW1CdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIHZvaWQg
c2V0V2FrZVVwU2VtYXBob3JlKElQQzo6U2VtYXBob3JlJiYpOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlm
aWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCk7CisKKyAgICB1c2luZyBTZW5k
U3luY1Jlc3VsdCA9IENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0OworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgU2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1l
c3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRp
b25JRCwgU2Vjb25kcyB0aW1lb3V0KTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgU3BhbiB7Cisg
ICAgICAgIHVpbnQ4X3QqIGRhdGE7CisgICAgICAgIHNpemVfdCBzaXplOworICAgIH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWluaW11bU1lc3NhZ2VTaXplID0gU3RyZWFtQ29ubmVj
dGlvbkVuY29kZXI6Om1pbmltdW1NZXNzYWdlU2l6ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBtZXNzYWdlQWxpZ25tZW50ID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1lc3NhZ2VB
bGlnbm1lbnQ7CisgICAgYm9vbCB0cnlTZW5kRGVzdGluYXRpb25JRElmTmVlZGVkKHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIE1vbm90b25pY1RpbWUgdGltZW91dCk7CisgICAgdm9pZCBzZW5kUHJv
Y2Vzc091dE9mU3RyZWFtTWVzc2FnZShTcGFuJiYpOworCisgICAgT3B0aW9uYWw8U3Bhbj4gdHJ5
QWNxdWlyZShNb25vdG9uaWNUaW1lIHRpbWVvdXQpOworICAgIGVudW0gY2xhc3MgV2FrZVVwUmVj
ZWl2ZXIgOiBib29sIHsKKyAgICAgICAgTm8sCisgICAgICAgIFllcworICAgIH07CisgICAgV2Fr
ZVVwUmVjZWl2ZXIgcmVsZWFzZShzaXplX3Qgd3JpdGVTaXplKTsKKyAgICB2b2lkIHdha2VVcFJl
Y2VpdmVyKCk7CisKKyAgICBTcGFuIGFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
aW1pdCk7CisgICAgc2l6ZV90IHNpemUoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxpbWl0KTsKKyAg
ICBzaXplX3QgY2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkgY29uc3Q7CisKKyAg
ICBzaXplX3Qgd3JhcE9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci53cmFwT2Zmc2V0KG9mZnNldCk7IH0KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9m
ZnNldCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuYWxpZ25PZmZzZXQ8bWVzc2FnZUFsaWdubWVu
dD4ob2Zmc2V0LCBtaW5pbXVtTWVzc2FnZVNpemUpOyB9CisgICAgQXRvbWljPHNpemVfdD4mIHNo
YXJlZFNlbmRlck9mZnNldCgpIHsgcmV0dXJuIG1fYnVmZmVyLnNlbmRlck9mZnNldCgpOyB9Cisg
ICAgQXRvbWljPHNpemVfdD4mIHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZm
ZXIucmVjZWl2ZXJPZmZzZXQoKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci5kYXRhKCk7IH0KKyAgICBzaXplX3QgZGF0YVNpemUoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci5kYXRhU2l6ZSgpOyB9CisKKyAgICBDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247
CisgICAgdWludDY0X3QgbV9jdXJyZW50RGVzdGluYXRpb25JRCB7IDAgfTsKKworICAgIHNpemVf
dCBtX3NlbmRlck9mZnNldCB7IDAgfTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIG1fYnVm
ZmVyOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIE9wdGlvbmFsPFNlbWFwaG9yZT4gbV93YWtl
VXBTZW1hcGhvcmU7CisjZW5kaWYKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+Citib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIE9iamVj
dElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0KQoreworICAgIHN0
YXRpY19hc3NlcnQoIVQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgc3luYyEiKTsKKyAgICBNb25vdG9u
aWNUaW1lIGFic29sdXRlVGltZW91dCA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgdGltZW91dDsK
KyAgICBpZiAoIXRyeVNlbmREZXN0aW5hdGlvbklESWZOZWVkZWQoZGVzdGluYXRpb25JRC50b1VJ
bnQ2NCgpLCBhYnNvbHV0ZVRpbWVvdXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0
byBzcGFuID0gdHJ5QWNxdWlyZShhYnNvbHV0ZVRpbWVvdXQpOworICAgIGlmICghc3BhbikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHsKKyAgICAgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29k
ZXIgbWVzc2FnZUVuY29kZXIgeyBUOjpuYW1lKCksIHNwYW4tPmRhdGEsIHNwYW4tPnNpemUgfTsK
KyAgICAgICAgaWYgKG1lc3NhZ2VFbmNvZGVyIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCkpIHsKKyAg
ICAgICAgICAgIGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShtZXNzYWdlRW5jb2Rlci5zaXpl
KCkpOworICAgICAgICAgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJlYW1DbGllbnRDb25uZWN0
aW9uOjpXYWtlVXBSZWNlaXZlcjo6WWVzKQorICAgICAgICAgICAgICAgIHdha2VVcFJlY2VpdmVy
KCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzZW5k
UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZShXVEZNb3ZlKCpzcGFuKSk7CisgICAgaWYgKCFtX2Nv
bm5lY3Rpb24uc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklELCBJUEM6OlNlbmRP
cHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KK1N0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBU
OjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29u
ZHMgdGltZW91dCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KFQ6OmlzU3luYywgIk1lc3NhZ2UgaXMg
bm90IHN5bmMhIik7CisgICAgTW9ub3RvbmljVGltZSBhYnNvbHV0ZVRpbWVvdXQgPSBNb25vdG9u
aWNUaW1lOjpub3coKSArIHRpbWVvdXQ7CisgICAgaWYgKCF0cnlTZW5kRGVzdGluYXRpb25JRElm
TmVlZGVkKGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgYWJzb2x1dGVUaW1lb3V0KSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHNwYW4gPSB0cnlBY3F1aXJlKGFic29sdXRlVGltZW91
dCk7CisgICAgaWYgKCFzcGFuKQorICAgICAgICByZXR1cm4geyB9OworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQgc2VuZCB0aHJvdWdoIHN0cmVhbS4KKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHJl
Y2VpdmUgdGhyb3VnaCBzdHJlYW0uCisgICAgc2VuZFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2Uo
V1RGTW92ZSgqc3BhbikpOworICAgIGF1dG8gcmVzdWx0ID0gbV9jb25uZWN0aW9uLnNlbmRTeW5j
KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0
KCksIHRpbWVvdXQpOworICAgIEFTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK2lubGluZSBib29sIFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmREZXN0aW5hdGlv
bklESWZOZWVkZWQodWludDY0X3QgZGVzdGluYXRpb25JRCwgTW9ub3RvbmljVGltZSBhYnNvbHV0
ZVRpbWVvdXQpCit7CisgICAgaWYgKGRlc3RpbmF0aW9uSUQgPT0gbV9jdXJyZW50RGVzdGluYXRp
b25JRCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgYXV0byBzcGFuID0gdHJ5QWNxdWlyZShh
YnNvbHV0ZVRpbWVvdXQpOworICAgIGlmICghc3BhbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIGVuY29kZXIgeyBNZXNzYWdlTmFtZTo6U2V0U3Ry
ZWFtRGVzdGluYXRpb25JRCwgc3Bhbi0+ZGF0YSwgc3Bhbi0+c2l6ZSB9OworICAgIGlmICghKGVu
Y29kZXIgPDwgZGVzdGluYXRpb25JRCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IC8vIFNpemUgb2YgdGhlIG1pbmltdW0gYWxsb2NhdGlvbiBpcyBpbmNvcnJlY3QuIExpa2VseSBh
biBhbGlnbm1lbnQgaXNzdWUuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgYXV0
byB3YWtldXBSZXN1bHQgPSByZWxlYXNlKGVuY29kZXIuc2l6ZSgpKTsKKyAgICBpZiAod2FrZXVw
UmVzdWx0ID09IFN0cmVhbUNsaWVudENvbm5lY3Rpb246Oldha2VVcFJlY2VpdmVyOjpZZXMpCisg
ICAgICAgIHdha2VVcFJlY2VpdmVyKCk7CisgICAgbV9jdXJyZW50RGVzdGluYXRpb25JRCA9IGRl
c3RpbmF0aW9uSUQ7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSB2b2lkIFN0cmVhbUNs
aWVudENvbm5lY3Rpb246OnNlbmRQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlKFNwYW4mJiBzcGFu
KQoreworICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIGVuY29kZXIgeyBNZXNzYWdlTmFtZTo6
UHJvY2Vzc091dE9mU3RyZWFtTWVzc2FnZSwgc3Bhbi5kYXRhLCBzcGFuLnNpemUgfTsKKyAgICAv
LyBOb3Qgbm90aWZ5aW5nIG9uIHdha2UgdXAgc2luY2UgdGhlIG91dC1vZi1zdHJlYW0gbWVzc2Fn
ZSB3aWxsIGRvIHRoYXQuCisgICAgYXV0byByZXN1bHQgPSByZWxlYXNlKGVuY29kZXIuc2l6ZSgp
KTsKKyAgICBVTlVTRURfVkFSSUFCTEUocmVzdWx0KTsKK30KK2lubGluZSBPcHRpb25hbDxTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0cnlBY3F1
aXJlKE1vbm90b25pY1RpbWUgdGltZW91dCkKK3sKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHNp
emVfdCBzZW5kZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChzaGFyZWRSZWNlaXZlck9mZnNldCgpLmxv
YWQoc3RkOjptZW1vcnlfb3JkZXJfYWNxdWlyZSkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGFs
aWduZWRTcGFuKG1fc2VuZGVyT2Zmc2V0LCBzZW5kZXJMaW1pdCk7CisgICAgICAgIGlmIChyZXN1
bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkgeworICAgICAgICAgICAgYXV0byBub3cgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKKyAgICAgICAgICAgIGlmIChub3cgPj0gdGltZW91dCkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIHNp
emVfdCBvbGRTZW5kZXJMaW1pdCA9IHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuY29tcGFyZUV4Y2hh
bmdlU3Ryb25nKHNlbmRlckxpbWl0LCBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpyZWNlaXZlck9m
ZnNldFNlbmRlcklzV2FpdGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCwgc3RkOjpt
ZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgICAgICAgICBpZiAoc2VuZGVyTGltaXQgPT0gb2xk
U2VuZGVyTGltaXQpCisgICAgICAgICAgICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFwaG9y
ZSgpLndhaXRGb3IodGltZW91dCAtIG5vdyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBzZW5kZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChvbGRTZW5kZXJMaW1pdCk7CisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZW5kZXJPZmZzZXQsIHNlbmRlckxp
bWl0KTsKKyAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICBUaHJlYWQ6OnlpZWxkKCk7
CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0LnNpemUgPj0gbWluaW11bU1l
c3NhZ2VTaXplKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgLy8gVGhlIGFs
aWduZWRTcGFuIHVzZXMgdGhlIG1pbmltdW1NZXNzYWdlU2l6ZSB0byBjYWxjdWxhdGUgdGhlIG5l
eHQgYmVnaW5uaW5nIHBvc2l0aW9uIGluIHRoZSBidWZmZXIsCisgICAgICAgIC8vIGFuZCBub3Qg
dGhlIHNpemUuIFRoZSBzaXplIG1pZ2h0IGJlIG1vcmUgb3IgbGVzcyB3aGF0IGlzIG5lZWRlZCwg
ZGVwZW5kaW5nIG9uIHdoZXJlIHRoZSByZWFkZXIgaXMuCisgICAgICAgIC8vIElmIHRoZXJlIGlz
IG5vIGNhcGFjaXR5IGZvciBtaW5pbXVtIG1lc3NhZ2Ugc2l6ZSwgd2FpdCB1bnRpbCBtb3JlIGlz
IGF2YWlsYWJsZS4KKyAgICAgICAgLy8gSW4gdGhlIGNhc2Ugd2hlcmUgc2VuZGVyT2Zmc2V0IDwg
cmVjZWl2ZXJPZmZzZXQgd2UgY2FuIGFycml2ZSB0byBhIHNpdHVhdGlvbiB3aGVyZQorICAgICAg
ICAvLyAwIDwgcmVzdWx0LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNpemUuCisgICAgfQorICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK2lubGluZSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpX
YWtlVXBSZWNlaXZlciBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpyZWxlYXNlKHNpemVfdCBzaXpl
KQoreworICAgIHNpemUgPSBzdGQ6Om1heChzaXplLCBtaW5pbXVtTWVzc2FnZVNpemUpOworICAg
IG1fc2VuZGVyT2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9mZnNldChtX3NlbmRlck9mZnNldCkg
KyBzaXplKTsKKyAgICBBU1NFUlQobV9zZW5kZXJPZmZzZXQgPCBkYXRhU2l6ZSgpKTsKKyAgICAv
LyBJZiB0aGUgcmVjZWl2ZXIgd3JvdGUgb3ZlciB0aGUgc2VuZGVyT2Zmc2V0IHdpdGggc2VuZGVy
T2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnLCB3ZSBrbm93IGl0IGlzIHNsZWVwaW5nLgorICAg
IHNpemVfdCByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkuZXhjaGFuZ2UobV9z
ZW5kZXJPZmZzZXQsIHN0ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgIGlmIChyZWNlaXZl
ckxpbWl0ID09IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNT
bGVlcGluZ1RhZykKKyAgICAgICAgcmV0dXJuIFdha2VVcFJlY2VpdmVyOjpZZXM7CisgICAgQVNT
RVJUKCEocmVjZWl2ZXJMaW1pdCAmIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OnNlbmRlck9mZnNl
dFJlY2VpdmVySXNTbGVlcGluZ1RhZykpOworICAgIHJldHVybiBXYWtlVXBSZWNlaXZlcjo6Tm87
Cit9CisKK2lubGluZSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuIFN0cmVhbUNsaWVudENv
bm5lY3Rpb246OmFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sKKyAg
ICBBU1NFUlQob2Zmc2V0IDwgZGF0YVNpemUoKSk7CisgICAgQVNTRVJUKGxpbWl0IDwgZGF0YVNp
emUoKSk7CisgICAgc2l6ZV90IGFsaWduZWQgPSBhbGlnbk9mZnNldChvZmZzZXQpOworICAgIHNp
emVfdCByZXN1bHRTaXplID0gMDsKKyAgICBpZiAob2Zmc2V0IDwgbGltaXQpIHsKKyAgICAgICAg
aWYgKGFsaWduZWQgPj0gb2Zmc2V0ICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAgIHJl
c3VsdFNpemUgPSBzaXplKGFsaWduZWQsIGxpbWl0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAoYWxpZ25lZCA+PSBvZmZzZXQgfHwgYWxpZ25lZCA8IGxpbWl0KQorICAgICAgICAgICAgcmVz
dWx0U2l6ZSA9IHNpemUoYWxpZ25lZCwgbGltaXQpOworICAgIH0KKyAgICByZXR1cm4geyBkYXRh
KCkgKyBhbGlnbmVkLCByZXN1bHRTaXplIH07Cit9CisKK2lubGluZSBzaXplX3QgU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6c2l6ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpCit7CisgICAg
aWYgKCFsaW1pdCkKKyAgICAgICAgcmV0dXJuIGRhdGFTaXplKCkgLSAxIC0gb2Zmc2V0OworICAg
IGlmIChsaW1pdCA8PSBvZmZzZXQpCisgICAgICAgIHJldHVybiBkYXRhU2l6ZSgpIC0gb2Zmc2V0
OworICAgIHJldHVybiBsaW1pdCAtIG9mZnNldCAtIDE7Cit9CisKK2lubGluZSBzaXplX3QgU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRydXN0ZWRMaW1pdCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNpemUoKSAtIDEpKTsK
KyAgICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXplKCkgLSAxKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0
aW9uQnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzVmN2YzMWU1MzNkZDNiZGJlOGY0NWI2NmJlYzhj
Zjc1ODczN2E3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgRmZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIu
aCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgSVBD
IHsKKworc3RhdGljIFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gY3JlYXRlTWVtb3J5KHNpemVf
dCBzaXplKQoreworICAgIGF1dG8gbWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9j
YXRlKHNpemUpOworICAgIGlmICghbWVtb3J5KQorICAgICAgICBDUkFTSCgpOworICAgIHJldHVy
biBtZW1vcnkucmVsZWFzZU5vbk51bGwoKTsKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6
U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcihzaXplX3QgbWVtb3J5U2l6ZSkKKyAgICA6IG1fZGF0YVNp
emUobWVtb3J5U2l6ZSAtIGhlYWRlclNpemUoKSkKKyAgICAsIG1fc2hhcmVkTWVtb3J5KGNyZWF0
ZU1lbW9yeShtZW1vcnlTaXplKSkKK3sKKyAgICBBU1NFUlQobV9kYXRhU2l6ZSA8PSBtYXhpbXVt
U2l6ZSgpKTsKK30KKworU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6U3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYgbWVtb3J5LCBzaXplX3QgbWVtb3J5U2l6
ZSwgU2VtYXBob3JlJiYgc2VuZGVyV2FpdFNlbWFwaG9yZSkKKyAgICA6IG1fZGF0YVNpemUobWVt
b3J5U2l6ZSAtIGhlYWRlclNpemUoKSkKKyAgICAsIG1fc2hhcmVkTWVtb3J5KFdURk1vdmUobWVt
b3J5KSkKKyAgICAsIG1fc2VuZGVyV2FpdFNlbWFwaG9yZShXVEZNb3ZlKHNlbmRlcldhaXRTZW1h
cGhvcmUpKQoreworICAgIEFTU0VSVChtX2RhdGFTaXplIDw9IG1heGltdW1TaXplKCkpOworfQor
CitTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpTdHJlYW1Db25uZWN0aW9uQnVmZmVyKFN0cmVhbUNv
bm5lY3Rpb25CdWZmZXImJiBvdGhlcikgPSBkZWZhdWx0OworCitTdHJlYW1Db25uZWN0aW9uQnVm
ZmVyOjp+U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcigpID0gZGVmYXVsdDsKKworU3RyZWFtQ29ubmVj
dGlvbkJ1ZmZlciYgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6b3BlcmF0b3I9KFN0cmVhbUNvbm5l
Y3Rpb25CdWZmZXImJiBvdGhlcikKK3sKKyAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKKyAgICAg
ICAgbV9kYXRhU2l6ZSA9IG90aGVyLm1fZGF0YVNpemU7CisgICAgICAgIG1fc2hhcmVkTWVtb3J5
ID0gV1RGTW92ZShvdGhlci5tX3NoYXJlZE1lbW9yeSk7CisgICAgICAgIG1fc2VuZGVyV2FpdFNl
bWFwaG9yZSA9IFdURk1vdmUob3RoZXIubV9zZW5kZXJXYWl0U2VtYXBob3JlKTsKKyAgICB9Cisg
ICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpI
YW5kbGUgaGFuZGxlOworICAgIGlmICghbV9zaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5k
bGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpKQorICAgICAg
ICBDUkFTSCgpOworICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxl
IHsgV1RGTW92ZShoYW5kbGUpLCBtX3NoYXJlZE1lbW9yeS0+c2l6ZSgpIH07CisgICAgZW5jb2Rl
ciA8PCBpcGNIYW5kbGU7CisgICAgZW5jb2RlciA8PCBtX3NlbmRlcldhaXRTZW1hcGhvcmU7Cit9
CisKK09wdGlvbmFsPFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI+IFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpJUENIYW5kbGU+IGlwY0hhbmRsZTsKKyAgICBkZWNvZGVyID4+IGlwY0hhbmRs
ZTsKKyAgICBpZiAoIWlwY0hhbmRsZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBPcHRpb25hbDxTZW1hcGhvcmU+IHNlbWFwaG9yZTsKKyAgICBkZWNvZGVyID4+IHNlbWFwaG9y
ZTsKKyAgICBpZiAoIXNlbWFwaG9yZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBzaXplX3QgZGF0YVNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGlwY0hhbmRsZS0+ZGF0YVNp
emUpOworICAgIGlmIChkYXRhU2l6ZSA8IGhlYWRlclNpemUoKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICBpZiAoZGF0YVNpemUgPiBoZWFkZXJTaXplKCkgKyBtYXhpbXVtU2l6
ZSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gc2hhcmVkTWVtb3J5
ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUtPmhhbmRsZSwgV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRXcml0ZSk7CisgICAgaWYgKHNoYXJlZE1lbW9y
eS0+c2l6ZSgpIDwgZGF0YVNpemUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgeyBzaGFyZWRNZW1vcnkucmVsZWFzZU5vbk51
bGwoKSwgZGF0YVNpemUsICBXVEZNb3ZlKCpzZW1hcGhvcmUpIH07Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45NmYwYjhkMDQxMzcyMDNiNTVlYmQ0MWNmZTFiODhmMDc4ZDlkMDdmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlci5oCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCisjaW5jbHVkZSAi
U2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIElQQyB7CisKKy8vIFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXIgaXMgYSBzaGFyZWQgImJpLXBhcnRpdGUiIGNpcmN1bGFyIGJ1ZmZlciBzdXBwb3J0aW5nCisv
LyB2YXJpYWJsZSBsZW5ndGggbWVzc2FnZXMsIHNwZWNpZmljIGRhdGEgYWxpZ25tZW50IHdpdGgg
bWFuZGF0ZWQgbWluaW11bSBzaXplLgorLy8gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBhbmQgU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbiB1c2UgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciB0byBjb21tdW5p
Y2F0ZS4KKy8vCisvLyBUaGUgImJpLXBhcnRpdGUiIGlzIGhlcmUgdG8gbWVhbiB0aGF0IHdyaXRl
cyBhbmQgcmVhZHMgdG8gdGhlIGJ1ZmZlciBtdXN0IGJlCisvLyBjb250aW51b3VzLgorLy8KKy8v
IFRoZSBjbGllbnQgKHNlbmRlciBvciByZWNlaXZlcikgImFjcXVpcmVzIiBzb21lIGFtb3VudCBv
ZiBidWZmZXIgZGF0YS4gVGhlIGRhdGEgcG9pbnRlcgorLy8gbG9jYXRpb24gZGVwZW5kcyBvbiB0
aGUgYW1vdW50IG9mIGRhdGEgYmVpbmcgYWNxdWlyZWQuIFRoZSBidWZmZXIgcmV0dXJucyBhbGwg
dGhlIGF2YWlsYWJsZQorLy8gY2FwYWNpdHkgLS0gdGhpcyBtYXkgYmUgbGVzcyB0aGFuIGFjcXVp
cmVkLgorLy8KKy8vIFRoZSBjbGllbnQgInJlbGVhc2VzIiB0aGUgc29tZSBhbW91bnQgb2YgZGF0
YSwgYXQgbGVhc3QgdGhlIGFtb3VudCBhY3F1aXJlZCBidXQgcG90ZW50aWFsbHkKKy8vIG1vcmUu
CisvLworLy8gQm90aCBzZW5kZXIgYW5kIHJlY2VpdmVyIG11c3QgcmVsZWFzZSB0aGUgc2FtZSBh
bW91bnQgb2YgZGF0YSBhdCB0aGUgc2FtZSBzdGVwIG9mIHRoZSBhY3F1aXJlL3JlbGVhc2Ugc2Vx
dWVuY2UuCisvLyBTdXBwb3NlIHNlbmRlciByZWxlYXNlcyBmaXJzdCA4IGFuZCB0aGVuIDE2NiBi
eXRlcy4gVXBvbiB0aGUgZmlyc3QgYWNxdWlyZSwgcmVjZWl2ZXIKKy8vIG11c3QgYWxzbyByZWxl
YXNlIDggYnl0ZXMgYW5kIHRoZW4gdXBvbiB0aGUgc2Vjb25kIGFjcXVpcmUgMTY2IGJ5dGVzLgor
Ly8gRHVlIHRvIGhvdyBhbGlnbm1lbnQgYW5kIG1pbmltdW0gbGVuZ3RoIGFmZmVjdCB0aGUgcG9z
aXRpb24gYXQgd2hpY2ggdGhlIG1lbW9yeSBjYW4KKy8vIGJlIHJlZmVycmVkIHRvLCB0aGUgcmVj
ZWl2ZXIgY2Fubm90ICJyZWFkIHR3byB0aW1lcyBzaW11bHRhbmVvdXNseSIgYW5kIHJlbGVhc2Ug
MTc0IGJ5dGVzLgorLy8KKy8vIFRoZSBjaXJjdWxhciBidWZmZXIgaGFzIGZvbGxvd2luZyBpbXBs
ZW1lbnRhdGlvbjoKKy8vICogU2VuZGVyIG93bnMgdGhlIGRhdGEgYmV0d2VlbiBbc2VuZGVyT2Zm
c2V0LCByZWNlaXZlck9mZnNldFsuIFdoZW4gc2VuZGVyT2Zmc2V0ID09CisvLyByZWNlaXZlck9m
ZnNldCwgc2VuZGVyIG93bnMgYWxsIHRoZSBkYXRhLgorLy8gKiBSZWNlaXZlciBvd25zIHRoZSBk
YXRhIGJldHdlZW4gW3JlY2VpdmVyT2Zmc2V0LCBzZW5kZXJPZmZzZXRbLgorLy8gKiBUaGUgYnVm
ZmVyIGNhbiBob2xkIG1heGltdW0gb2Ygc2l6ZSAtIDEgdmFsdWVzLiBUaGUgbGFzdCB2YWx1ZSBp
cyByZXNlcnZlZCBmb3IKKy8vIGluZGljYXRpbmcgdGhhdCB0aGUgYnVmZmVyIGlzIGZ1bGwuIEZJ
WE1FOiBNYXliZSB3b3VsZCBiZSBzaW1wbGVyIGltcGxlbWVudGF0aW9uIGlmCisvLyBpdCB3b3Vs
ZCB1c2UgdGhlICJ3cmFwIiBmbGFnIGluc3RlYWQgb2YgdGhlIGhvbGUgYXMgdGhlIGluZGljYXRv
ci4gVGhpcyB3b3VsZCBtb3ZlCisvLyB0aGUgYWxpZ25lZFNwYW4gaW1wbGVtZW50YXRpb24gdG8g
dGhlIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuCisvLyAqIEFsbCBhdG9taWMgdmFyaWFibGUgbG9h
ZHMgYXJlIHVudHJ1c3RlZCwgc28gdGhleSdyZSBjbGFtcGVkLiBWaW9sYXRpb25zIGFyZSBub3Qg
cmVwb3J0ZWQsCisvLyB0aG91Z2guCisvLyBTZWUgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuCitj
bGFzcyBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTdHJl
YW1Db25uZWN0aW9uQnVmZmVyKHNpemVfdCBtZW1vcnlTaXplKTsKKyAgICBTdHJlYW1Db25uZWN0
aW9uQnVmZmVyKFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJik7CisgICAgflN0cmVhbUNvbm5lY3Rp
b25CdWZmZXIoKTsKKyAgICBTdHJlYW1Db25uZWN0aW9uQnVmZmVyJiBvcGVyYXRvcj0oU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlciYmKTsKKworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVfdCBvZmZz
ZXQpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IGRhdGFTaXplKCkpOwor
ICAgICAgICBpZiAob2Zmc2V0ID09IGRhdGFTaXplKCkpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgbWVz
c2FnZUFsaWdubWVudD4KKyAgICBzaXplX3QgYWxpZ25PZmZzZXQoc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGFjcXVpcmVTaXplKSBjb25zdAorICAgIHsKKyAgICAgICAgb2Zmc2V0ID0gcm91bmRVcFRv
TXVsdGlwbGVPZjxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQpOworICAgICAgICBpZiAob2Zmc2V0
ICsgYWNxdWlyZVNpemUgPj0gZGF0YVNpemUoKSkKKyAgICAgICAgICAgIG9mZnNldCA9IDA7Cisg
ICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgQXRvbWljPHNpemVfdD4mIHNlbmRl
ck9mZnNldCgpIHsgcmV0dXJuIGhlYWRlcigpLnNlbmRlck9mZnNldDsgfQorICAgIEF0b21pYzxz
aXplX3Q+JiByZWNlaXZlck9mZnNldCgpIHsgcmV0dXJuIGhlYWRlcigpLnJlY2VpdmVyT2Zmc2V0
OyB9CisgICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4
X3QqPihtX3NoYXJlZE1lbW9yeS0+ZGF0YSgpKSArIGhlYWRlclNpemUoKTsgfQorICAgIHNpemVf
dCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVNpemU7IH0KKyAgICBTZW1hcGhvcmUm
IHNlbmRlcldhaXRTZW1hcGhvcmUoKSB7IHJldHVybiBtX3NlbmRlcldhaXRTZW1hcGhvcmU7IH0K
KworICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpzZW5kZXJPZmZzZXQgd2hlbiBy
ZWNlaXZlciBpcyBzbGVlcGluZywgZS5nLiBub3QgcnVubmluZy4KKyAgICBzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBzZW5kZXJPZmZzZXRSZWNlaXZlcklzU2xlZXBpbmdUYWcgPSAxIDw8IDMxOwor
ICAgIC8vIFRhZyB2YWx1ZSBzdG9yZWQgaW4gSGVhZGVyOjpyZWNlaXZlck9mZnNldCB3aGVuIHNl
bmRlciBpcyB3YWl0aW5nLCBlLmcuIHdhaXRpbmcgb24KKyAgICAvLyBhIHNlbWFwaG9yZS4KKyAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCByZWNlaXZlck9mZnNldFNlbmRlcklzV2FpdGluZ1Rh
ZyA9IDEgPDwgMzE7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtU2l6ZSgp
IHsgcmV0dXJuIHN0ZDo6bWluKHNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc2Vu
ZGVyT2Zmc2V0UmVjZWl2ZXJJc1NsZWVwaW5nVGFnKSAtIDE7IH0KKyAgICB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIE9wdGlvbmFsPFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlcihSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+JiYsIHNpemVfdCBtZW1vcnlTaXplLCBTZW1h
cGhvcmUmJiBzZW5kZXJXYWl0U2VtYXBob3JlKTsKKworICAgIHN0cnVjdCBIZWFkZXIgeworICAg
ICAgICBBdG9taWM8c2l6ZV90PiByZWNlaXZlck9mZnNldDsKKyAgICAgICAgLy8gUGFkZGluZyBz
byB0aGF0IHRoZSB2YXJpYWJsZXMgbW9zdGx5IGFjY2Vzc2VkIGJ5IGRpZmZlcmVudCBwcm9jZXNz
ZXMgZG8gbm90IHNoYXJlIGEgY2FjaGUgbGluZS4KKyAgICAgICAgLy8gVGhpcyBpcyBhbiBhdHRl
bXB0IHRvIGF2b2lkIGNhY2hlLWxpbmUgaW5kdWNlZCByZWR1Y3Rpb24gb2YgcGFyYWxsZWwgYWNj
ZXNzLgorICAgICAgICBhbGlnbmFzKHNpemVvZih1aW50NjRfdFsyXSkpIEF0b21pYzxzaXplX3Q+
IHNlbmRlck9mZnNldDsKKyAgICB9OworICAgIEhlYWRlciYgaGVhZGVyKCkgY29uc3QgeyByZXR1
cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8SGVhZGVyKj4obV9zaGFyZWRNZW1vcnktPmRhdGEoKSk7IH0K
KyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBoZWFkZXJTaXplKCkgeyByZXR1cm4gcm91bmRV
cFRvTXVsdGlwbGVPZjxzaXplb2Yoc3RkOjptYXhfYWxpZ25fdCk+KHNpemVvZihIZWFkZXIpKTsg
fQorCisgICAgc2l6ZV90IG1fZGF0YVNpemUgeyAwIH07CisgICAgUmVmPFdlYktpdDo6U2hhcmVk
TWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKKyAgICBTZW1hcGhvcmUgbV9zZW5kZXJXYWl0U2VtYXBo
b3JlOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbkVuY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNvbm5lY3Rpb25FbmNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjkyMzJkZWNmNmM3OTNhNDU3NzE2OGU5
N2VmYjUxYWFmYjMyZmRlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
KworbmFtZXNwYWNlIElQQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gc3RydWN0
IEFyZ3VtZW50Q29kZXI7CisKKy8vIElQQyBlbmNvZGVyIHdoaWNoOgorLy8gIC0gRW5jb2RlcyB0
byBhIGNhbGxlciBidWZmZXIgd2l0aCBmaXhlZCBzaXplLCBkb2VzIG5vdCByZXNpemUsIHN0b3Bz
IHdoZW4gc2l6ZSBydW5zIG91dAorLy8gIC0gRG9lcyBub3QgaW5pdGlhbGl6ZSBhbGlnbm1lbnQg
Z2FwcworLy8KK2NsYXNzIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIGZpbmFsIHsKK3B1YmxpYzoK
KyAgICAvLyBTdHJlYW0gbWVzc2FnZSBuZWVkcyB0byBiZSBhdCBsZWFzdCBzaXplIG9mIFN0cmVh
bVNldERlc3RpbmF0aW9uSUQgbWVzc2FnZS4KKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBt
aW5pbXVtTWVzc2FnZVNpemUgPSBzaXplb2YoTWVzc2FnZU5hbWUpICsgc2l6ZW9mKHVpbnQ2NF90
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50ID0gYWxpZ25v
ZihNZXNzYWdlTmFtZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSVBDRW5jb2RlciA9
IHRydWU7CisKKyAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlcihNZXNzYWdlTmFtZSBtZXNzYWdl
TmFtZSwgdWludDhfdCogc3RyZWFtLCBzaXplX3Qgc3RyZWFtQ2FwYWNpdHkpCisgICAgICAgIDog
bV9idWZmZXIoc3RyZWFtKQorICAgICAgICAsIG1fYnVmZmVyQ2FwYWNpdHkoc3RyZWFtQ2FwYWNp
dHkpCisgICAgeworICAgICAgICAqdGhpcyA8PCBtZXNzYWdlTmFtZTsKKyAgICB9CisKKyAgICB+
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGVuY29kZUZp
eGVkTGVuZ3RoRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFs
aWdubWVudCkKKyAgICB7CisgICAgICAgIHNpemVfdCBidWZmZXJQb2ludGVyID0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihyZWludGVycHJldF9jYXN0PGludHB0cl90PihtX2J1ZmZlciArIG1fZW5jb2Rl
ZFNpemUpKTsKKyAgICAgICAgc2l6ZV90IG5ld0J1ZmZlclBvaW50ZXIgPSByb3VuZFVwVG9NdWx0
aXBsZU9mKGFsaWdubWVudCwgYnVmZmVyUG9pbnRlcik7CisgICAgICAgIGlmIChuZXdCdWZmZXJQ
b2ludGVyIDwgYnVmZmVyUG9pbnRlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaW50cHRyX3QgYWxpZ25lZFNpemUgPSBtX2VuY29kZWRTaXplICsgKG5ld0J1ZmZlclBvaW50
ZXIgLSBidWZmZXJQb2ludGVyKTsKKyAgICAgICAgaWYgKCFyZXNlcnZlKGFsaWduZWRTaXplLCBz
aXplKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdWludDhfdCogYnVmZmVy
ID0gbV9idWZmZXIgKyBhbGlnbmVkU2l6ZTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwg
c2l6ZSk7CisgICAgICAgIG1fZW5jb2RlZFNpemUgPSBhbGlnbmVkU2l6ZSArIHNpemU7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXImIG9wZXJhdG9yPDwoVCYmIHQpCisgICAgeworICAgICAg
ICBBcmd1bWVudENvZGVyPHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNl
X3Q8VD4+LCB2b2lkPjo6ZW5jb2RlKCp0aGlzLCBzdGQ6OmZvcndhcmQ8VD4odCkpOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IEFTU0VS
VChpc1ZhbGlkKCkpOyByZXR1cm4gbV9lbmNvZGVkU2l6ZTsgfQorICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyQ2FwYWNpdHk7IH0KKyAgICBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gaXNWYWxpZCgpOyB9Citwcml2YXRlOgorICAgIGJvb2wgcmVzZXJ2ZShz
aXplX3QgYWxpZ25lZFNpemUsIHNpemVfdCBhZGRpdGlvbmFsU2l6ZSkKKyAgICB7CisgICAgICAg
IHNpemVfdCBzaXplID0gYWxpZ25lZFNpemUgKyBhZGRpdGlvbmFsU2l6ZTsKKyAgICAgICAgaWYg
KHNpemUgPCBhbGlnbmVkU2l6ZSB8fCBzaXplID4gbV9idWZmZXJDYXBhY2l0eSkgeworICAgICAg
ICAgICAgbV9idWZmZXJDYXBhY2l0eSA9IDA7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHVpbnQ4X3QqIG1fYnVm
ZmVyOworICAgIHNpemVfdCBtX2J1ZmZlckNhcGFjaXR5OworICAgIHNpemVfdCBtX2VuY29kZWRT
aXplIHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE1YjQ0OTRiNzRmZDkyODU4MDNlNGVhMmVmNDhjMTE3MzY1OWQ3MWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgiCisKK25hbWVzcGFj
ZSBJUEMgeworCitTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlKGNvbnN0IGNoYXIqIG5hbWUpCisgICAgOiBtX25hbWUobmFtZSkKK3sKK30KKwordm9p
ZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpkaXNwYXRjaChXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikKK3sKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIobV9sb2NrKTsK
KyAgICAgICAgbV9mdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICAgICAg
QVNTRVJUKCFtX3Nob3VsZFF1aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90
IHN1cHBvcnRlZC4KKyAgICB9CisgICAgd2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpOworCit9Cit2
b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OmFkZFN0cmVhbUNvbm5lY3Rpb24oU3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2UmIGNvbm5lY3Rpb24pCit7CisgICAgeworICAgICAgICBMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIG1fY29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24p
OworICAgICAgICBBU1NFUlQoIW1fc2hvdWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBz
aHV0ZG93biBub3Qgc3VwcG9ydGVkLgorICAgIH0KKyAgICB3YWtlVXBQcm9jZXNzaW5nVGhyZWFk
KCk7Cit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6cmVtb3ZlU3RyZWFtQ29u
bmVjdGlvbihTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSYgY29ubmVjdGlvbikKK3sKKyAgICBB
U1NFUlQobV9wcm9jZXNzaW5nVGhyZWFkKTsKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICAgICAgbV9jb25uZWN0aW9ucy5yZW1vdmUoY29ubmVjdGlvbik7CisgICAg
ICAgIEFTU0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3du
IG5vdCBzdXBwb3J0ZWQuCisgICAgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG1fd2FrZVVw
U2VtYXBob3JlLnNpZ25hbCgpOworI2VuZGlmCit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldv
cmtRdWV1ZTo6c3RvcCgpCit7CisgICAgbV9zaG91bGRRdWl0ID0gdHJ1ZTsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBpZiAoIW1fcHJvY2Vzc2luZ1RocmVhZCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fd2FrZVVwU2VtYXBob3JlLnNpZ25hbCgpOworICAgIG1fcHJvY2Vzc2luZ1RocmVhZC0+
d2FpdEZvckNvbXBsZXRpb24oKTsKKyAgICBtX3Byb2Nlc3NpbmdUaHJlYWQgPSBudWxscHRyOwor
I2VuZGlmCit9CisKK3ZvaWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6d2FrZVVwKCkKK3sK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsKKyNl
bmRpZgorfQorCitJUEM6OlNlbWFwaG9yZSYgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6d2Fr
ZVVwU2VtYXBob3JlKCkKK3sKKyAgICByZXR1cm4gbV93YWtlVXBTZW1hcGhvcmU7Cit9CisKK3Zv
aWQgU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTo6d2FrZVVwUHJvY2Vzc2luZ1RocmVhZCgpCit7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKG1fcHJvY2Vzc2luZ1RocmVhZCkgeworICAg
ICAgICBtX3dha2VVcFNlbWFwaG9yZS5zaWduYWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gdGFzayA9IFt0aGlzXSgpIG11dGFibGUgeworICAgICAgICBmb3IgKDs7KSB7
CisgICAgICAgICAgICBwcm9jZXNzU3RyZWFtcygpOworICAgICAgICAgICAgaWYgKG1fc2hvdWxk
UXVpdCkgeworICAgICAgICAgICAgICAgIHByb2Nlc3NTdHJlYW1zKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV93YWtlVXBTZW1hcGhvcmUu
d2FpdCgpOworICAgICAgICB9CisgICAgfTsKKyAgICBtX3Byb2Nlc3NpbmdUaHJlYWQgPSBUaHJl
YWQ6OmNyZWF0ZShtX25hbWUsIFdURk1vdmUodGFzayksIFRocmVhZFR5cGU6OkdyYXBoaWNzLCBU
aHJlYWQ6OlFPUzo6VXNlckludGVyYWN0aXZlKTsKKyNlbmRpZgorfQorCit2b2lkIFN0cmVhbUNv
bm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKCkKK3sKKyAgICBjb25zdGV4cHIgc2l6
ZV90IGRlZmF1bHRNZXNzYWdlTGltaXQgPSAxMDAwOworICAgIGJvb2wgaGFzTW9yZVRvUHJvY2Vz
cyA9IGZhbHNlOworICAgIGRvIHsKKyAgICAgICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+
PiBmdW5jdGlvbnM7CisgICAgICAgIEhhc2hTZXQ8UmVmPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25C
YXNlPj4gY29ubmVjdGlvbnM7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgICAgIGZ1bmN0aW9ucy5zd2FwKG1fZnVuY3Rpb25z
KTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb25zID0gbV9jb25uZWN0aW9uczsKKyAgICAgICAgfQor
ICAgICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogZnVuY3Rpb25zKQorICAgICAgICAgICAgV1RG
TW92ZShmdW5jdGlvbikoKTsKKworICAgICAgICBoYXNNb3JlVG9Qcm9jZXNzID0gZmFsc2U7Cisg
ICAgICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IGNvbm5lY3Rpb25zKQorICAgICAgICAgICAg
aGFzTW9yZVRvUHJvY2VzcyB8PSBjb25uZWN0aW9uLT5kaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKGRl
ZmF1bHRNZXNzYWdlTGltaXQpID09IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpIYXNNb3Jl
TWVzc2FnZXM7CisgICAgfSB3aGlsZSAoaGFzTW9yZVRvUHJvY2Vzcyk7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kNTI2YTM1MjY2NTFkZGZmMzkwYTdkZjcxZmM5NWRhNWE0MWRjYzVm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIklQQ1NlbWFwaG9yZS5oIgorI2luY2x1ZGUgIlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CisKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlIGZp
bmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CitwdWJsaWM6CisgICAgU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZShjb25zdCBjaGFyKik7CisgICAgflN0cmVhbUNvbm5lY3Rpb25Xb3Jr
UXVldWUoKSA9IGRlZmF1bHQ7CisgICAgdm9pZCBhZGRTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlJik7CisgICAgdm9pZCByZW1vdmVTdHJlYW1Db25uZWN0aW9uKFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlJik7CisKKyAgICB2b2lkIGRpc3BhdGNoKFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKTsKKworICAgIHZvaWQgd2Fr
ZVVwKCk7CisKKyAgICBTZW1hcGhvcmUmIHdha2VVcFNlbWFwaG9yZSgpOworcHJpdmF0ZToKKyAg
ICB2b2lkIHdha2VVcFByb2Nlc3NpbmdUaHJlYWQoKTsKKyAgICB2b2lkIHByb2Nlc3NTdHJlYW1z
KCk7CisKKyAgICBjb25zdCBjaGFyKiBjb25zdCBtX25hbWU7CisgICAgU2VtYXBob3JlIG1fd2Fr
ZVVwU2VtYXBob3JlOworICAgIFJlZlB0cjxUaHJlYWQ+IG1fcHJvY2Vzc2luZ1RocmVhZDsKKwor
ICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hvdWxkUXVpdCB7IGZhbHNlIH07CisKKyAgICBMb2Nr
IG1fbG9jazsKKyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX2Z1bmN0aW9uczsKKyAgICBI
YXNoU2V0PFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4+IG1fY29ubmVjdGlvbnM7Cit9
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0ZDQ4NGI3OGZiZjlkZjZkZjhhOWZkYjdlOGNh
ODlhZDU3ZTUzYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9u
LmgiCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5oIgorCituYW1lc3BhY2UgSVBDIHsKKworU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW0sIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVl
dWUmIHdvcmtRdWV1ZSkKKyAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV93
b3JrUXVldWUod29ya1F1ZXVlKQorICAgICwgbV9idWZmZXIoV1RGTW92ZShzdHJlYW0pKQorewor
fQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzdGFydFJlY2VpdmluZ01lc3Nh
Z2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
KQoreworICAgIG1fY29ubmVjdGlvbi0+YWRkTWVzc2FnZVJlY2VpdmVRdWV1ZSgqdGhpcywgcmVj
ZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAgICBtX3dvcmtRdWV1ZS5hZGRTdHJlYW1Db25u
ZWN0aW9uKCp0aGlzKTsKK30KKwordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6c3Rv
cFJlY2VpdmluZ01lc3NhZ2VzSW1wbChSZWNlaXZlck5hbWUgcmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKQoreworICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZShyZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworICAgIG1fd29ya1F1ZXVlLnJl
bW92ZVN0cmVhbUNvbm5lY3Rpb24oKnRoaXMpOworfQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5l
Y3Rpb25CYXNlOjplbnF1ZXVlTWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERl
Y29kZXI+JiYgbWVzc2FnZSkKK3sKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jayk7CisgICAgICAgIG1fb3V0T2ZTdHJlYW1NZXNz
YWdlcy5hcHBlbmQoV1RGTW92ZShtZXNzYWdlKSk7CisgICAgfQorICAgIG1fd29ya1F1ZXVlLndh
a2VVcCgpOworfQorCitPcHRpb25hbDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3Bhbj4g
U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFxdWlyZSgpCit7CisgICAgc2l6ZV90IHJl
Y2VpdmVyTGltaXQgPSBzaGFyZWRTZW5kZXJPZmZzZXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVy
X2FjcXVpcmUpOworICAgIGlmIChyZWNlaXZlckxpbWl0ID09IFN0cmVhbUNvbm5lY3Rpb25CdWZm
ZXI6OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZykKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fcmVjZWl2ZXJPZmZz
ZXQsIHJlY2VpdmVyTGltaXQpOworICAgIGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdl
U2l6ZSkgeworICAgICAgICByZWNlaXZlckxpbWl0ID0gc2hhcmVkU2VuZGVyT2Zmc2V0KCkuY29t
cGFyZUV4Y2hhbmdlU3Ryb25nKHJlY2VpdmVyTGltaXQsIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI6
OnNlbmRlck9mZnNldFJlY2VpdmVySXNTbGVlcGluZ1RhZywgc3RkOjptZW1vcnlfb3JkZXJfYWNx
X3JlbCwgc3RkOjptZW1vcnlfb3JkZXJfYWNxX3JlbCk7CisgICAgICAgIEFTU0VSVCghKHJlY2Vp
dmVyTGltaXQgJiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpzZW5kZXJPZmZzZXRSZWNlaXZlcklz
U2xlZXBpbmdUYWcpKTsKKyAgICAgICAgcmVjZWl2ZXJMaW1pdCA9IGNsYW1wZWRMaW1pdChyZWNl
aXZlckxpbWl0KTsKKyAgICAgICAgcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9yZWNlaXZlck9mZnNl
dCwgcmVjZWl2ZXJMaW1pdCk7CisgICAgfQorCisgICAgaWYgKHJlc3VsdC5zaXplID49IG1pbmlt
dW1NZXNzYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworfQorCit2b2lkIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpyZWxlYXNlKHNp
emVfdCByZWFkU2l6ZSkKK3sKKyAgICBBU1NFUlQocmVhZFNpemUpOworICAgIHJlYWRTaXplID0g
c3RkOjptYXgocmVhZFNpemUsIG1pbmltdW1NZXNzYWdlU2l6ZSk7CisgICAgc2l6ZV90IHJlY2Vp
dmVyT2Zmc2V0ID0gd3JhcE9mZnNldChhbGlnbk9mZnNldChtX3JlY2VpdmVyT2Zmc2V0KSArIHJl
YWRTaXplKTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHNpemVfdCBvbGRSZWNlaXZlck9m
ZnNldCA9IHNoYXJlZFJlY2VpdmVyT2Zmc2V0KCkuZXhjaGFuZ2UocmVjZWl2ZXJPZmZzZXQsIHN0
ZDo6bWVtb3J5X29yZGVyX2FjcV9yZWwpOworICAgIC8vIElmIHRoZSBzZW5kZXIgd3JvdGUgb3Zl
ciByZWNlaXZlck9mZnNldCwgaXQgbWVhbnMgdGhlIHNlbmRlciBpcyB3YWl0aW5nLgorICAgIGlm
IChvbGRSZWNlaXZlck9mZnNldCA9PSBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpyZWNlaXZlck9m
ZnNldFNlbmRlcklzV2FpdGluZ1RhZykKKyAgICAgICAgbV9idWZmZXIuc2VuZGVyV2FpdFNlbWFw
aG9yZSgpLnNpZ25hbCgpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKCEob2xkUmVjZWl2ZXJP
ZmZzZXQgJiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpyZWNlaXZlck9mZnNldFNlbmRlcklzV2Fp
dGluZ1RhZykpOworI2Vsc2UKKyAgICBzaGFyZWRSZWNlaXZlck9mZnNldCgpLnN0b3JlKHJlY2Vp
dmVyT2Zmc2V0LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKKyAgICAvLyBJUEM6OlNlbWFw
aG9yZSBub3QgaW1wbGVtZW50ZWQgZm9yIHRoZSBwbGF0Zm9ybS4gQ2xpZW50IHdpbGwgcG9sbCBh
bmQgeWllbGQuCisjZW5kaWYKKworICAgIG1fcmVjZWl2ZXJPZmZzZXQgPSByZWNlaXZlck9mZnNl
dDsKK30KKworU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4gU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OmFsaWduZWRTcGFuKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCkKK3sK
KyAgICBBU1NFUlQob2Zmc2V0IDwgZGF0YVNpemUoKSk7CisgICAgQVNTRVJUKGxpbWl0IDwgZGF0
YVNpemUoKSk7CisgICAgc2l6ZV90IGFsaWduZWQgPSBhbGlnbk9mZnNldChvZmZzZXQpOworICAg
IHNpemVfdCByZXN1bHRTaXplID0gMDsKKyAgICBpZiAob2Zmc2V0IDwgbGltaXQpIHsKKyAgICAg
ICAgaWYgKG9mZnNldCA8PSBhbGlnbmVkICYmIGFsaWduZWQgPCBsaW1pdCkKKyAgICAgICAgICAg
IHJlc3VsdFNpemUgPSBzaXplKGFsaWduZWQsIGxpbWl0KTsKKyAgICB9IGVsc2UgaWYgKG9mZnNl
dCA+IGxpbWl0KSB7CisgICAgICAgIGlmIChhbGlnbmVkID49IG9mZnNldCB8fCBhbGlnbmVkIDwg
bGltaXQpCisgICAgICAgICAgICByZXN1bHRTaXplID0gc2l6ZShhbGlnbmVkLCBsaW1pdCk7Cisg
ICAgfQorICAgIHJldHVybiB7IGRhdGEoKSArIGFsaWduZWQsIHJlc3VsdFNpemUgfTsKK30KKwor
c2l6ZV90IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpzaXplKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsaW1pdCkKK3sKKyAgICBpZiAob2Zmc2V0IDw9IGxpbWl0KQorICAgICAgICByZXR1cm4g
bGltaXQgLSBvZmZzZXQ7CisgICAgcmV0dXJuIGRhdGFTaXplKCkgLSBvZmZzZXQ7Cit9CisKK3Np
emVfdCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6Y2xhbXBlZExpbWl0KHNpemVfdCB1bnRy
dXN0ZWRMaW1pdCkgY29uc3QKK3sKKyAgICBBU1NFUlQodW50cnVzdGVkTGltaXQgPCAoZGF0YVNp
emUoKSAtIDEpKTsKKyAgICByZXR1cm4gc3RkOjptaW4odW50cnVzdGVkTGltaXQsIGRhdGFTaXpl
KCkgLSAxKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1ODFjNjkwMWQ1MTI1YTA2NGJhNGUz
YTcwNjhlNDJhMTlkZjkxYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSwyODQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJEZWNvZGVyLmgiCisjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1l
cy5oIgorI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuaCIKKyNpbmNsdWRlICJTdHJl
YW1Db25uZWN0aW9uRW5jb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KKworbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIFN0cmVhbUNvbm5l
Y3Rpb25Xb3JrUXVldWU7CisKK2NsYXNzIFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlPiwgcHJv
dGVjdGVkIE1lc3NhZ2VSZWNlaXZlUXVldWUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlKTsKK3B1YmxpYzoKKyAgICB+U3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2UoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CisKKyAgICBDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisKKyAgICBlbnVtIERpc3BhdGNoUmVz
dWx0IDogYm9vbCB7CisgICAgICAgIEhhc05vTWVzc2FnZXMsCisgICAgICAgIEhhc01vcmVNZXNz
YWdlcworICAgIH07CisgICAgdmlydHVhbCBEaXNwYXRjaFJlc3VsdCBkaXNwYXRjaFN0cmVhbU1l
c3NhZ2VzKHNpemVfdCBtZXNzYWdlTGltaXQpID0gMDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3VtZW50cz4KKyAgICB2b2lkIHNlbmRTeW5jUmVwbHkodWludDY0X3Qgc3luY1JlcXVl
c3RJRCwgQXJndW1lbnRzJiYuLi4pOworCitwcm90ZWN0ZWQ6CisgICAgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2UoSVBDOjpDb25uZWN0aW9uJiwgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYmLCBT
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlJik7CisKKyAgICB2b2lkIHN0YXJ0UmVjZWl2aW5nTWVz
c2FnZXNJbXBsKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgdm9p
ZCBzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCk7CisKKyAgICAvLyBNZXNzYWdlUmVjZWl2ZVF1ZXVlCisgICAgdm9pZCBlbnF1ZXVl
TWVzc2FnZShDb25uZWN0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+JiYpIGZpbmFsOwor
CisgICAgc3RydWN0IFNwYW4geworICAgICAgICB1aW50OF90KiBkYXRhOworICAgICAgICBzaXpl
X3Qgc2l6ZTsKKyAgICB9OworICAgIE9wdGlvbmFsPFNwYW4+IHRyeUFxdWlyZSgpOworCisgICAg
dm9pZCByZWxlYXNlKHNpemVfdCByZWFkU2l6ZSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3QgbWluaW11bU1lc3NhZ2VTaXplID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1pbmltdW1N
ZXNzYWdlU2l6ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtZXNzYWdlQWxpZ25tZW50
ID0gU3RyZWFtQ29ubmVjdGlvbkVuY29kZXI6Om1lc3NhZ2VBbGlnbm1lbnQ7CisgICAgU3BhbiBh
bGlnbmVkU3BhbihzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGltaXQpOworICAgIHNpemVfdCBzaXpl
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsaW1pdCk7CisgICAgc2l6ZV90IGNsYW1wZWRMaW1pdChz
aXplX3QgdW50cnVzdGVkTGltaXQpIGNvbnN0OworICAgIHNpemVfdCB3cmFwT2Zmc2V0KHNpemVf
dCBvZmZzZXQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLndyYXBPZmZzZXQob2Zmc2V0KTsgfQor
ICAgIHNpemVfdCBhbGlnbk9mZnNldChzaXplX3Qgb2Zmc2V0KSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5hbGlnbk9mZnNldDxtZXNzYWdlQWxpZ25tZW50PihvZmZzZXQsIG1pbmltdW1NZXNzYWdl
U2l6ZSk7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVkU2VuZGVyT2Zmc2V0KCkgeyByZXR1
cm4gbV9idWZmZXIuc2VuZGVyT2Zmc2V0KCk7IH0KKyAgICBBdG9taWM8c2l6ZV90PiYgc2hhcmVk
UmVjZWl2ZXJPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZlci5yZWNlaXZlck9mZnNldCgpOyB9Cisg
ICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQorICAg
IHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmRhdGFTaXplKCk7IH0K
KworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlJiBtX3dvcmtRdWV1ZTsKKworICAgIHNpemVfdCBtX3JlY2VpdmVyT2Zm
c2V0IHsgMCB9OworICAgIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgbV9idWZmZXI7CisKKyAgICBM
b2NrIG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xvY2s7CisgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRy
PERlY29kZXI+PiBtX291dE9mU3RyZWFtTWVzc2FnZXM7CisKKyAgICBmcmllbmQgY2xhc3MgU3Ry
ZWFtQ29ubmVjdGlvbldvcmtRdWV1ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cz4KK3ZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnNlbmRTeW5jUmVwbHkodWlu
dDY0X3Qgc3luY1JlcXVlc3RJRCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQoreworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgc2VuZGluZyB0byBidWZmZXIuCisgICAgYXV0byBlbmNvZGVyID0g
bWFrZVVuaXF1ZTxJUEM6OkVuY29kZXI+KElQQzo6TWVzc2FnZU5hbWU6OlN5bmNNZXNzYWdlUmVw
bHksIHN5bmNSZXF1ZXN0SUQpOworICAgICgqZW5jb2RlciA8PCAuLi4gPDwgYXJndW1lbnRzKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92ZShlbmNvZGVyKSk7Cit9CisK
Ky8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gcmVwcmVzZW50cyB0aGUgY29ubmVjdGlvbiBiZXR3
ZWVuIHN0cmVhbSBzZW5kZXIgYW5kIHJlY2VpdmVyLCBhcyB1c2VkIGJ5IHRoZSByZWNlaXZlci4K
Ky8vIFN0cmVhbVNlcnZlckNvbm5lY3Rpb246CisvLyAgKiBIb2xkcyB0aGUgbWVzc2FnZXMgdG93
YXJkcyB0aGUgcmVjZWl2ZXIuCisvLyAgKiBTZW5kcyB0aGUgcmVwbGllcyBiYWNrIHRvIHRoZSBz
ZW5kZXIgdmlhIHRoZSBzdHJlYW0gb3Igbm9ybWFsIENvbm5lY3Rpb24gZmFsbGJhY2suCisvLwor
Ly8gUmVjZWl2ZXIgdGVtcGxhdGUgY29udHJhY3Q6CisvLyAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVh
bU1lc3NhZ2UoU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2UmLCBEZWNvZGVyJik7CisvLworLy8g
VGhlIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24gZG9lcyBub3QgdHJ1c3QgdGhlIFN0cmVhbUNsaWVu
dENvbm5lY3Rpb24uCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZWNlaXZlcj4KK2NsYXNzIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2Ug
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U3RyZWFtU2VydmVyQ29ubmVjdGlvbj4gY3JlYXRl
KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1C
dWZmZXIsIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlv
biwgV1RGTW92ZShzdHJlYW1CdWZmZXIpLCB3b3JrUXVldWUpKTsKKyAgICB9CisgICAgflN0cmVh
bVNlcnZlckNvbm5lY3Rpb24oKSBmaW5hbCA9IGRlZmF1bHQ7CisKKyAgICB2b2lkIHN0YXJ0UmVj
ZWl2aW5nTWVzc2FnZXMoUmVjZWl2ZXImLCBSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQpOworICAgIC8vIFN0b3BzIHRoZSBtZXNzYWdlIHJlY2VpcHQuIE5vdGU6IGFscmVhZHkg
cmVjZWl2ZWQgbWVzc2FnZXMgbWlnaHQgc3RpbGwgYmUgZGVsaXZlcmVkLgorICAgIHZvaWQgc3Rv
cFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7
CisKKyAgICAvLyBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZSBvdmVycmlkZXMuCisgICAgRGlz
cGF0Y2hSZXN1bHQgZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyhzaXplX3QgbWVzc2FnZUxpbWl0KSBm
aW5hbDsKKworcHJpdmF0ZToKKyAgICBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uKENvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXImJiBzdHJlYW1CdWZmZXIsIFN0cmVh
bUNvbm5lY3Rpb25Xb3JrUXVldWUmIHdvcmtRdWV1ZSkKKyAgICAgICAgOiBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uQmFzZShjb25uZWN0aW9uLCBXVEZNb3ZlKHN0cmVhbUJ1ZmZlciksIHdvcmtRdWV1
ZSkKKyAgICB7CisgICAgfQorICAgIGJvb2wgcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQo
RGVjb2RlciYmLCBSZWZQdHI8UmVjZWl2ZXI+JiBjdXJyZW50UmVjZWl2ZXIpOworICAgIGJvb2wg
ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiwgUmVjZWl2ZXImKTsKKyAgICBib29sIGRp
c3BhdGNoT3V0T2ZTdHJlYW1NZXNzYWdlKERlY29kZXImJik7CisgICAgTG9jayBtX3JlY2VpdmVy
c0xvY2s7CisgICAgdXNpbmcgUmVjZWl2ZXJzTWFwID0gSGFzaE1hcDxzdGQ6OnBhaXI8dWludDhf
dCwgdWludDY0X3Q+LCBSZWY8UmVjZWl2ZXI+PjsKKyAgICBSZWNlaXZlcnNNYXAgbV9yZWNlaXZl
cnM7CisKKyAgICB1aW50NjRfdCBtX2N1cnJlbnREZXN0aW5hdGlvbklEID0gMDsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJl
Y2VpdmVyPjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYgcmVjZWl2ZXIsIFJlY2Vp
dmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgewor
ICAgICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJl
Y2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9yZWNlaXZlcnMuY29udGFp
bnMoa2V5KSk7CisgICAgICAgIG1fcmVjZWl2ZXJzLmFkZChrZXksIG1ha2VSZWYocmVjZWl2ZXIp
KTsKKyAgICB9CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0YXJ0UmVjZWl2aW5n
TWVzc2FnZXNJbXBsKHJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFJlY2VpdmVyPgordm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVy
Pjo6c3RvcFJlY2VpdmluZ01lc3NhZ2VzKFJlY2VpdmVyTmFtZSByZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpCit7CisgICAgU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnN0
b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKKyAg
ICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJlY2VpdmVy
TmFtZSksIGRlc3RpbmF0aW9uSUQpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNl
aXZlcnNMb2NrKTsKKyAgICBBU1NFUlQobV9yZWNlaXZlcnMuY29udGFpbnMoa2V5KSk7CisgICAg
bV9yZWNlaXZlcnMucmVtb3ZlKGtleSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVy
PgorU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OkRpc3BhdGNoUmVzdWx0IFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaFN0cmVhbU1lc3NhZ2VzKHNpemVfdCBtZXNz
YWdlTGltaXQpCit7CisgICAgUmVmUHRyPFJlY2VpdmVyPiBjdXJyZW50UmVjZWl2ZXI7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBXVEY6OmlzVmFsaWQoUmVjZWl2ZXJOYW1lKS4KKyAgICB1aW50
OF90IGN1cnJlbnRSZWNlaXZlck5hbWUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihSZWNlaXZlck5h
bWU6OkludmFsaWQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlTGltaXQ7
ICsraSkgeworICAgICAgICBhdXRvIHNwYW4gPSB0cnlBcXVpcmUoKTsKKyAgICAgICAgaWYgKCFz
cGFuKQorICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOwor
ICAgICAgICBJUEM6OkRlY29kZXIgZGVjb2RlciB7IHNwYW4tPmRhdGEsIHNwYW4tPnNpemUsIG1f
Y3VycmVudERlc3RpbmF0aW9uSUQgfTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkg
eworICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNo
UmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgICAgICB9CisgICAgICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQpIHsKKyAg
ICAgICAgICAgIGlmICghcHJvY2Vzc1NldFN0cmVhbURlc3RpbmF0aW9uSUQoV1RGTW92ZShkZWNv
ZGVyKSwgY3VycmVudFJlY2VpdmVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hS
ZXN1bHQ6Okhhc05vTWVzc2FnZXM7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VOYW1lOjpQcm9jZXNz
T3V0T2ZTdHJlYW1NZXNzYWdlKSB7CisgICAgICAgICAgICBpZiAoIWRpc3BhdGNoT3V0T2ZTdHJl
YW1NZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpKQorICAgICAgICAgICAgICAgIHJldHVybiBEaXNw
YXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIGlmIChjdXJyZW50UmVjZWl2ZXJOYW1lICE9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpKSkgeworICAgICAgICAgICAgY3VycmVu
dFJlY2VpdmVyTmFtZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKTsKKyAgICAgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFjdXJyZW50UmVjZWl2ZXIpIHsKKyAgICAgICAgICAgIGF1dG8g
a2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4oY3VycmVudFJlY2VpdmVy
TmFtZSksIG1fY3VycmVudERlc3RpbmF0aW9uSUQpOworICAgICAgICAgICAgaWYgKCFSZWNlaXZl
cnNNYXA6OmlzVmFsaWRLZXkoa2V5KSkgeworICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+
ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZGVjb2Rlci5tZXNzYWdlTmFtZSgpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6Okhhc05vTWVzc2FnZXM7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2
ZXJzTG9jayk7CisgICAgICAgICAgICBjdXJyZW50UmVjZWl2ZXIgPSBtX3JlY2VpdmVycy5nZXQo
a2V5KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWN1cnJlbnRSZWNlaXZlcikgeworICAgICAg
ICAgICAgLy8gVmFsaWQgc2NlbmFyaW8gaXMgd2hlbiByZWNlaXZlciBoYXMgYmVlbiByZW1vdmVk
LCBidXQgdGhlcmUgYXJlIG1lc3NhZ2VzIGZvciBpdCBpbiB0aGUgYnVmZmVyLgorICAgICAgICAg
ICAgLy8gRklYTUU6IFNpbmNlIHdlIGRvIG5vdCBoYXZlIGEgcmVjZWl2ZXIsIHdlIGRvbid0IGtu
b3cgaG93IHRvIGRlY29kZSB0aGUgbWVzc2FnZS4KKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMg
d2UgbXVzdCB0aW1lb3V0IGV2ZXJ5IHJlY2VpdmVyIGluIHRoZSBzdHJlYW0gY29ubmVjdGlvbi4K
KyAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBhc3NlcnQgdGhhdCB0aGUgcmVjZWl2ZXJzIGFy
ZSBlbXB0eSwgYXMgd2Ugb25seSBoYXZlIHVwIHRvIG9uZSByZWNlaXZlciBpbgorICAgICAgICAg
ICAgLy8gYSBzdHJlYW0gY29ubmVjdGlvbiB1bnRpbCBwb3NzaWJpbGl0eSBvZiBza2lwcGluZyBp
cyBpbXBsZW1lbnRlZCBwcm9wZXJseS4KKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3JlY2VpdmVycy5pc0Vt
cHR5KCkpOworICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2Vz
OworICAgICAgICB9CisgICAgICAgIGlmICghZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKFdURk1vdmUo
ZGVjb2RlciksICpjdXJyZW50UmVjZWl2ZXIpKQorICAgICAgICAgICAgcmV0dXJuIERpc3BhdGNo
UmVzdWx0OjpIYXNOb01lc3NhZ2VzOworICAgIH0KKyAgICByZXR1cm4gRGlzcGF0Y2hSZXN1bHQ6
Okhhc01vcmVNZXNzYWdlczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmVjZWl2ZXI+Citib29s
IFN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+Ojpwcm9jZXNzU2V0U3RyZWFtRGVzdGlu
YXRpb25JRChEZWNvZGVyJiYgZGVjb2RlciwgUmVmUHRyPFJlY2VpdmVyPiYgY3VycmVudFJlY2Vp
dmVyKQoreworICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGVzdGluYXRpb25JRCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRj
aERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChtX2N1cnJlbnREZXN0aW5hdGlvbklEICE9
IGRlc3RpbmF0aW9uSUQpIHsKKyAgICAgICAgbV9jdXJyZW50RGVzdGluYXRpb25JRCA9IGRlc3Rp
bmF0aW9uSUQ7CisgICAgICAgIGN1cnJlbnRSZWNlaXZlciA9IG51bGxwdHI7CisgICAgfQorICAg
IHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlKERlY29kZXImJiBkZWNv
ZGVyLCBSZWNlaXZlciYgcmVjZWl2ZXIpCit7CisgICAgcmVjZWl2ZXIuZGlkUmVjZWl2ZVN0cmVh
bU1lc3NhZ2UoKnRoaXMsIGRlY29kZXIpOworICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJlbGVhc2UoZGVjb2Rlci5jdXJyZW50QnVmZmVyUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJlY2VpdmVyPgorYm9vbCBTdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hPdXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYm
IGRlY29kZXIpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZXI+IG1lc3NhZ2U7CisgICAg
eworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdlc0xv
Y2spOworICAgICAgICBpZiAobV9vdXRPZlN0cmVhbU1lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbWVzc2FnZSA9IG1fb3V0T2ZTdHJlYW1NZXNz
YWdlcy50YWtlRmlyc3QoKTsKKyAgICB9CisgICAgaWYgKCFtZXNzYWdlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8UmVjZWl2ZXI+IHJlY2VpdmVyOworICAgIHsKKyAgICAg
ICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90PihtZXNzYWdl
LT5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkpLCBtZXNzYWdlLT5kZXN0aW5hdGlvbklEKCkpOworICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcmVjZWl2ZXJzTG9jayk7CisgICAgICAgIHJl
Y2VpdmVyID0gbV9yZWNlaXZlcnMuZ2V0KGtleSk7CisgICAgfQorICAgIGlmIChyZWNlaXZlcikg
eworICAgICAgICByZWNlaXZlci0+ZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoKnRoaXMsICptZXNz
YWdlKTsKKyAgICAgICAgaWYgKCFtZXNzYWdlLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIG1f
Y29ubmVjdGlvbi0+ZGlzcGF0Y2hEaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UobWVzc2FnZS0+bWVz
c2FnZU5hbWUoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisgICAgLy8gSWYgcmVjZWl2ZXIgZG9lcyBub3QgZXhpc3QgaWYgaXQgaGFzIGJlZW4gcmVtb3Zl
ZCBidXQgbWVzc2FnZXMgYXJlIHN0aWxsIHBlbmRpbmcgdG8gYmUKKyAgICAvLyBwcm9jZXNzZWQu
IEl0J3Mgb2sgdG8gc2tpcCBzdWNoIG1lc3NhZ2VzLgorICAgIC8vIEZJWE1FOiBOb3RlLCBjb3Jy
ZXNwb25kaW5nIHNraXAgaXMgbm90IHBvc3NpYmxlIGF0IHRoZSBtb21lbnQgZm9yIHN0cmVhbSBt
ZXNzYWdlcy4KKyAgICByZWxlYXNlKGRlY29kZXIuY3VycmVudEJ1ZmZlclBvc2l0aW9uKCkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29j
b2EvTWFjaFBvcnQuaAppbmRleCA3ODU0ZmE4ZjE4NjhmYjhlNDU2MjI4OWZkZGY2ZjI3OTVhZjJk
OTBkLi44M2Q5OWYwY2JjOGZlMDQ4MjBiNDc4M2M5YzA3NmFiNTdhM2VhYjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9NYWNoUG9ydC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL01hY2hQb3J0LmgKQEAgLTI1LDkgKzI1LDggQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyLmgiCiAjaW5jbHVkZSAi
QXR0YWNobWVudC5oIgotI2luY2x1ZGUgIkRlY29kZXIuaCIKLSNpbmNsdWRlICJFbmNvZGVyLmgi
CiAKIG5hbWVzcGFjZSBJUEMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93
aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggNmU3ZWVmYjIxNGY4MDllYzVlNzAwNTYzMjM1Njc5
YzZhOWEyMWEyYS4uMTlmYzQyZWVhMWM1NjdhZDFjMWIxZDZmZWJlN2Y1Mzg3ZTI1ZTAxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9Db25uZWN0aW9uV2luLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKIAorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21O
dW1iZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDky
OWJlYmQwOWU3YzRmNWNlMzE0YzU0YmQ2OTEzNjI5YzM1ZTI2N2IuLjE0YzM4Y2ZlYmU4MjhkNmEy
MTc1OWNiODRjNzBmNDI2NzE2M2VjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMjQsOCArMjQsOSBAQCBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBy
ZQogaW1wb3J0IHN5cwogCitmcm9tIG1vZGVsIGltcG9ydCBNZXNzYWdlUmVjZWl2ZXIsIE1lc3Nh
Z2UKIGZyb20gd2Via2l0IGltcG9ydCBwYXJzZXIKLWZyb20gd2Via2l0Lm1vZGVsIGltcG9ydCBC
VUlMVElOX0FUVFJJQlVURSwgQVNZTkNfQVRUUklCVVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEUs
IE1BSU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUKK2Zyb20gd2Via2l0Lm1vZGVsIGltcG9ydCBC
VUlMVElOX0FUVFJJQlVURSwgQVNZTkNfQVRUUklCVVRFLCBTWU5DSFJPTk9VU19BVFRSSUJVVEUs
IE1BSU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUsIFNUUkVBTV9BVFRSSUJVVEUsIFdBTlRTX0NP
Tk5FQ1RJT05fQVRUUklCVVRFCiAKIF9saWNlbnNlX2hlYWRlciA9ICIiIi8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC01Mywx
MyArNTQsMTEgQEAgX2xpY2Vuc2VfaGVhZGVyID0gIiIiLyoKIAogIiIiCiAKLVdBTlRTX0NPTk5F
Q1RJT05fQVRUUklCVVRFID0gJ1dhbnRzQ29ubmVjdGlvbicKIFdBTlRTX0RJU1BBVENIX01FU1NB
R0VfQVRUUklCVVRFID0gJ1dhbnRzRGlzcGF0Y2hNZXNzYWdlJwogV0FOVFNfQVNZTkNfRElTUEFU
Q0hfTUVTU0FHRV9BVFRSSUJVVEUgPSAnV2FudHNBc3luY0Rpc3BhdGNoTWVzc2FnZScKIExFR0FD
WV9SRUNFSVZFUl9BVFRSSUJVVEUgPSAnTGVnYWN5UmVjZWl2ZXInCiBOT1RfUkVGQ09VTlRFRF9S
RUNFSVZFUl9BVFRSSUJVVEUgPSAnTm90UmVmQ291bnRlZCcKIAotCiBkZWYgcmVjZWl2ZXJfZW51
bWVyYXRvcl9vcmRlcl9rZXkocmVjZWl2ZXJfbmFtZSk6CiAgICAgaWYgcmVjZWl2ZXJfbmFtZSA9
PSAnSVBDJzoKICAgICAgICAgcmV0dXJuIDEKQEAgLTIxMyw3ICsyMTIsNyBAQCBkZWYgbWVzc2Fn
ZV90b19zdHJ1Y3RfZGVjbGFyYXRpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpOgogICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjYWxsYmFja1RocmVhZCA9
IFdURjo6Q29tcGxldGlvbkhhbmRsZXJDYWxsVGhyZWFkOjpNYWluVGhyZWFkO1xuJykKICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gY2FsbGJhY2tUaHJlYWQgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbFRocmVhZDo6
Q29uc3RydWN0aW9uVGhyZWFkO1xuJykKLSAgICAgICAgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRl
KFNZTkNIUk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FU
VFJJQlVURSk6CisgICAgICAgIGlmIChtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNf
QVRUUklCVVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKSkgYW5k
IG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnICAgIHN0YXRpYyB2b2lkIHNlbmQoc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mJiwgSVBDOjpDb25uZWN0aW9uJicpCiAgICAgICAgICAgICBpZiBsZW4oc2Vu
ZF9wYXJhbWV0ZXJzKToKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcsICVzJyAlIGNv
bXBsZXRpb25faGFuZGxlcl9wYXJhbWV0ZXJzKQpAQCAtMjYxLDYgKzI2MCw3IEBAIGRlZiB0eXBl
c190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgcmV0dXJuIGZyb3plbnNl
dChbCiAgICAgICAgICdJUEM6OkRhdGFSZWZlcmVuY2UnLAogICAgICAgICAnSVBDOjpGb250UmVm
ZXJlbmNlJywKKyAgICAgICAgJ0lQQzo6U2VtYXBob3JlJywKICAgICAgICAgJ01hY2hTZW5kUmln
aHQnLAogICAgICAgICAnTWVkaWFUaW1lJywKICAgICAgICAgJ1N0cmluZycsCkBAIC01NzMsMTAg
KzU3MywxNSBAQCBkZWYgc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSk6
CiAgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uICs9ICdBc3luYycKIAogICAgIHdhbnRzX2Nvbm5l
Y3Rpb24gPSBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklCVVRFKSBvciBt
ZXNzYWdlLmhhc19hdHRyaWJ1dGUoV0FOVFNfQ09OTkVDVElPTl9BVFRSSUJVVEUpCisgICAgbWF5
YmVfcmVwbHlfZW5jb2RlciA9ICIsICpyZXBseUVuY29kZXIiCisgICAgaWYgcmVjZWl2ZXIuaGFz
X2F0dHJpYnV0ZShTVFJFQU1fQVRUUklCVVRFKToKKyAgICAgICAgbWF5YmVfcmVwbHlfZW5jb2Rl
ciA9ICcnCisgICAgZWxpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoU1lOQ0hST05PVVNfQVRUUklC
VVRFKSBvciBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoQVNZTkNfQVRUUklCVVRFKToKKyAgICAgICAg
bWF5YmVfcmVwbHlfZW5jb2RlciA9ICcsIHJlcGx5RW5jb2RlcicKIAogICAgIHJlc3VsdCA9IFtd
CiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVz
c2FnZXM6OiVzOjolczo6bmFtZSgpKSB7XG4nICUgKHJlY2VpdmVyLm5hbWUsIG1lc3NhZ2UubmFt
ZSkpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBJUEM6OiVzPE1lc3NhZ2VzOjolczo6JXM+
KCVzZGVjb2RlciwgJXNyZXBseUVuY29kZXIsIHRoaXMsICYlcyk7XG4nICUgKGRpc3BhdGNoX2Z1
bmN0aW9uLCByZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICdjb25uZWN0aW9uLCAnIGlmIHdh
bnRzX2Nvbm5lY3Rpb24gZWxzZSAnJywgJycgaWYgbWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNI
Uk9OT1VTX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVU
RSkgZWxzZSAnKicsIGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpKSkKKyAgICBy
ZXN1bHQuYXBwZW5kKCcgICAgICAgIElQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXNkZWNvZGVy
JXMsIHRoaXMsICYlcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCByZWNlaXZlci5uYW1lLCBt
ZXNzYWdlLm5hbWUsICdjb25uZWN0aW9uLCAnIGlmIHdhbnRzX2Nvbm5lY3Rpb24gZWxzZSAnJywg
bWF5YmVfcmVwbHlfZW5jb2RlciwgaGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkp
KQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgcmV0dXJuO1xuJykKICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgfVxuJykKICAgICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0aW9uKCcnLmpvaW4o
cmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCkBAIC04NzUsNyArODgwLDcgQEAgZGVmIGdlbmVy
YXRlX21lc3NhZ2VfaGFuZGxlcihyZWNlaXZlcik6CiAgICAgICAgIGlmIG1lc3NhZ2UucmVwbHlf
cGFyYW1ldGVycyAhPSBOb25lIGFuZCAobWVzc2FnZS5oYXNfYXR0cmlidXRlKFNZTkNIUk9OT1VT
X0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRlKEFTWU5DX0FUVFJJQlVURSkpOgog
ICAgICAgICAgICAgZGVsYXllZF9vcl9hc3luY19tZXNzYWdlcy5hcHBlbmQobWVzc2FnZSkKIAot
ICAgIGlmIGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXM6CisgICAgaWYgZGVsYXllZF9vcl9hc3lu
Y19tZXNzYWdlcyBhbmQgbm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoU1RSRUFNX0FUVFJJQlVU
RSk6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ25hbWVzcGFjZSBNZXNzYWdlcyB7XG5cbm5hbWVz
cGFjZSAlcyB7XG5cbicgJSByZWNlaXZlci5uYW1lKQogCiAgICAgICAgIGZvciBtZXNzYWdlIGlu
IGRlbGF5ZWRfb3JfYXN5bmNfbWVzc2FnZXM6CkBAIC05MjMsMjUgKzkyOCw0NCBAQCBkZWYgZ2Vu
ZXJhdGVfbWVzc2FnZV9oYW5kbGVyKHJlY2VpdmVyKToKICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgIGFzeW5jX21lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQogCi0gICAgaWYgYXN5bmNfbWVzc2Fn
ZXMgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJ
QlVURSkgb3IgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNT
QUdFX0FUVFJJQlVURSk6Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJ3ZvaWQgJXM6OmRpZFJlY2Vp
dmUlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpXG4nICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFz
X2F0dHJpYnV0ZShMRUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkKKyAgICBpZiBy
ZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpOgorICAgICAgICByZXN1bHQu
YXBwZW5kKCd2b2lkICVzOjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpXG4nICUg
KHJlY2VpdmVyLm5hbWUpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQotICAgICAgICBp
ZiBub3QgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09VTlRFRF9SRUNFSVZFUl9BVFRS
SUJVVEUpOgorICAgICAgICBhc3NlcnQocmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShOT1RfUkVGQ09V
TlRFRF9SRUNFSVZFUl9BVFRSSUJVVEUpKQorICAgICAgICBhc3NlcnQobm90IHJlY2VpdmVyLmhh
c19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpKQorICAgICAgICBh
c3NlcnQobm90IHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVT
U0FHRV9BVFRSSUJVVEUpKQorCisgICAgICAgIHJlc3VsdCArPSBbYXN5bmNfbWVzc2FnZV9zdGF0
ZW1lbnQocmVjZWl2ZXIsIG1lc3NhZ2UpIGZvciBtZXNzYWdlIGluIGFzeW5jX21lc3NhZ2VzXQor
ICAgICAgICByZXN1bHQgKz0gW3N5bmNfbWVzc2FnZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3Nh
Z2UpIGZvciBtZXNzYWdlIGluIHN5bmNfbWVzc2FnZXNdCisKKyAgICAgICAgaWYgKHJlY2VpdmVy
LnN1cGVyY2xhc3MpOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNl
aXZlU3RyZWFtTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTtcbicgJSAocmVjZWl2ZXIuc3Vw
ZXJjbGFzcykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAg
VU5VU0VEX1BBUkFNKGRlY29kZXIpO1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAg
ICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7XG4nKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgn
fVxuJykKKyAgICBlbGlmIGFzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUo
V0FOVFNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1
dGUoV0FOVFNfQVNZTkNfRElTUEFUQ0hfTUVTU0FHRV9BVFRSSUJVVEUpOgorICAgICAgICByZWNl
aXZlX3ZhcmlhbnQgPSByZWNlaXZlci5uYW1lIGlmIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoTEVH
QUNZX1JFQ0VJVkVSX0FUVFJJQlVURSkgZWxzZSAnJworICAgICAgICByZXN1bHQuYXBwZW5kKCd2
b2lkICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKVxuJyAlIChyZWNlaXZlci5uYW1lLCByZWNlaXZlX3Zhcmlh
bnQpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQorICAgICAgICBpZiBub3QgKHJlY2Vp
dmVyLmhhc19hdHRyaWJ1dGUoTk9UX1JFRkNPVU5URURfUkVDRUlWRVJfQVRUUklCVVRFKSBvciBy
ZWNlaXZlci5oYXNfYXR0cmlidXRlKFNUUkVBTV9BVFRSSUJVVEUpKToKICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTtcbicp
CiAKICAgICAgICAgcmVzdWx0ICs9IFthc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZlciwg
bWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gYXN5bmNfbWVzc2FnZXNdCisKICAgICAgICAgaWYgcmVj
ZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJQlVURSkgb3Ig
cmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShXQU5UU19BU1lOQ19ESVNQQVRDSF9NRVNTQUdFX0FUVFJJ
QlVURSk6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgaWYgKGRpc3BhdGNoTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKSlcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgICAgIHJldHVybjtcbicpCiAgICAgICAgIGlmIChyZWNlaXZlci5zdXBlcmNsYXNzKToKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICAlczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7XG4nICUgKHJlY2VpdmVyLnN1cGVyY2xhc3MpKQorICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCgnICAgICVzOjpkaWRSZWNlaXZlJXNNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpO1xuJyAlIChyZWNlaXZlci5zdXBlcmNsYXNzLCByZWNlaXZlX3ZhcmlhbnQpKQogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTShj
b25uZWN0aW9uKTtcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgVU5VU0VEX1BB
UkFNKGRlY29kZXIpO1xuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTtcbicpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCiAKLSAgICBp
ZiBzeW5jX21lc3NhZ2VzIG9yIHJlY2VpdmVyLmhhc19hdHRyaWJ1dGUoV0FOVFNfRElTUEFUQ0hf
TUVTU0FHRV9BVFRSSUJVVEUpOgorICAgIGlmIG5vdCByZWNlaXZlci5oYXNfYXR0cmlidXRlKFNU
UkVBTV9BVFRSSUJVVEUpIGFuZCAoc3luY19tZXNzYWdlcyBvciByZWNlaXZlci5oYXNfYXR0cmli
dXRlKFdBTlRTX0RJU1BBVENIX01FU1NBR0VfQVRUUklCVVRFKSk6CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJ1xuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgndm9pZCAlczo6ZGlkUmVjZWl2ZVN5
bmMlc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiByZXBseUVuY29kZXIpXG4nICUg
KHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUgaWYgcmVjZWl2ZXIuaGFzX2F0dHJpYnV0ZShM
RUdBQ1lfUkVDRUlWRVJfQVRUUklCVVRFKSBlbHNlICcnKSkKICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgne1xuJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXNfdW5pdHRlc3QucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzX3Vu
aXR0ZXN0LnB5CmluZGV4IDQ4ZDhlMWI2MjdjYzMxYjE4ZmExYzUwZmFiZWVlZDk3MWJkMTViZTku
LmU4OWUxN2UxNDA3YjViNTY2YmMxOTJjNDBhOTlhMjhkOGJmOGRjZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXNfdW5pdHRlc3QucHkKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlc191bml0dGVzdC5weQpAQCAtNDYsNiAr
NDYsOCBAQCBfdGVzdF9yZWNlaXZlcl9uYW1lcyA9IFsKICAgICAnVGVzdFdpdGhJZk1lc3NhZ2Un
LAogICAgICdUZXN0V2l0aFNlbWFwaG9yZScsCiAgICAgJ1Rlc3RXaXRoSW1hZ2VEYXRhJywKKyAg
ICAnVGVzdFdpdGhTdHJlYW0nLAorICAgICdUZXN0V2l0aFN0cmVhbUJ1ZmZlcicKIF0KIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5IGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tb2RlbC5weQppbmRleCA0ODAwZmE0ZWZjYTk2NzhhODlh
ZmM3ZTQzNGYyNmIzNDZjZThjZjZjLi41MDdlMDQyYTU3N2ZmOGEwMjMzNzJjM2E2MDdhYjEwOGE1
ZmE5Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21vZGVsLnB5
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbW9kZWwucHkKQEAgLTI4LDYgKzI4
LDggQEAgQlVJTFRJTl9BVFRSSUJVVEUgPSAiQnVpbHRpbiIKIEFTWU5DX0FUVFJJQlVURSA9ICJB
c3luYyIKIE1BSU5USFJFQURDQUxMQkFDS19BVFRSSUJVVEUgPSAiTWFpblRocmVhZENhbGxiYWNr
IgogU1lOQ0hST05PVVNfQVRUUklCVVRFID0gJ1N5bmNocm9ub3VzJworU1RSRUFNX0FUVFJJQlVU
RSA9ICJTdHJlYW0iCitXQU5UU19DT05ORUNUSU9OX0FUVFJJQlVURSA9ICdXYW50c0Nvbm5lY3Rp
b24nCiAKIGNsYXNzIE1lc3NhZ2VSZWNlaXZlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBuYW1lLCBzdXBlcmNsYXNzLCBhdHRyaWJ1dGVzLCBtZXNzYWdlcywgY29uZGl0aW9uKToK
QEAgLTczLDcgKzc1LDkgQEAgaXBjX3JlY2VpdmVyID0gTWVzc2FnZVJlY2VpdmVyKG5hbWU9IklQ
QyIsIHN1cGVyY2xhc3M9Tm9uZSwgYXR0cmlidXRlcz1bQlVJTFRJTl8KICAgICBNZXNzYWdlKCdX
cmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZycsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJ
Tl9BVFRSSUJVVEUsIFNZTkNIUk9OT1VTX0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAg
ICBNZXNzYWdlKCdTeW5jTWVzc2FnZVJlcGx5JywgW10sIFtdLCBhdHRyaWJ1dGVzPVtCVUlMVElO
X0FUVFJJQlVURV0sIGNvbmRpdGlvbj1Ob25lKSwKICAgICBNZXNzYWdlKCdJbml0aWFsaXplQ29u
bmVjdGlvbicsIFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRp
b249IlBMQVRGT1JNKENPQ09BKSIpLAotICAgIE1lc3NhZ2UoJ0xlZ2FjeVNlc3Npb25TdGF0ZScs
IFtdLCBbXSwgYXR0cmlidXRlcz1bQlVJTFRJTl9BVFRSSUJVVEVdLCBjb25kaXRpb249Tm9uZSkK
KyAgICBNZXNzYWdlKCdMZWdhY3lTZXNzaW9uU3RhdGUnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JV
SUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2UoJ1NldFN0cmVh
bURlc3RpbmF0aW9uSUQnLCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwg
Y29uZGl0aW9uPU5vbmUpLAorICAgIE1lc3NhZ2UoJ1Byb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2Un
LCBbXSwgW10sIGF0dHJpYnV0ZXM9W0JVSUxUSU5fQVRUUklCVVRFXSwgY29uZGl0aW9uPU5vbmUp
CiBdLCBjb25kaXRpb249Tm9uZSkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90
ZXN0cy9NYWtlZmlsZQppbmRleCAyMWIzMGFlMjBmYTEwMzNmYTY2NGUwM2FkYmQ4ODA4NmE2Yzcy
YzQyLi5lMTk3YmQzYzI2N2FlNDExYTQ1MDBkMGZmNjkzOTg2MDNhNDUwODA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01ha2VmaWxlCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWFrZWZpbGUKQEAgLTYsNiArNiw4IEBAIFRF
U1RTID0gXAogICAgIFRlc3RXaXRoSWZNZXNzYWdlIFwKICAgICBUZXN0V2l0aFNlbWFwaG9yZSBc
CiAgICAgVGVzdFdpdGhJbWFnZURhdGEgXAorCVRlc3RXaXRoU3RyZWFtIFwKKwlUZXN0V2l0aFN0
cmVhbUJ1ZmZlciBcCiAjCiAKIGFsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmNwcAppbmRleCA3ZDVhZmM5MThlNWIwNWI4ZjdhNWNk
NjIzODUyYjVjMGUwYzE4YTAzLi4yZTdjYTE1ZTc0ZWJiZGE4NmM3OWY4ZmMwYjhmMzhiNGI1Zjc1
ODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3Nh
Z2VOYW1lcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNz
YWdlTmFtZXMuY3BwCkBAIC0xMzQsNiArMTM0LDEwIEBAIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9u
KE1lc3NhZ2VOYW1lIG5hbWUpCiAgICAgICAgIHJldHVybiAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24i
OwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZToKICAgICAgICAgcmV0
dXJuICJMZWdhY3lTZXNzaW9uU3RhdGUiOworICAgIGNhc2UgTWVzc2FnZU5hbWU6OlByb2Nlc3NP
dXRPZlN0cmVhbU1lc3NhZ2U6CisgICAgICAgIHJldHVybiAiUHJvY2Vzc091dE9mU3RyZWFtTWVz
c2FnZSI7CisgICAgY2FzZSBNZXNzYWdlTmFtZTo6U2V0U3RyZWFtRGVzdGluYXRpb25JRDoKKyAg
ICAgICAgcmV0dXJuICJTZXRTdHJlYW1EZXN0aW5hdGlvbklEIjsKICAgICBjYXNlIE1lc3NhZ2VO
YW1lOjpTeW5jTWVzc2FnZVJlcGx5OgogICAgICAgICByZXR1cm4gIlN5bmNNZXNzYWdlUmVwbHki
OwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNz
YWdlUmVwbHk6CkBAIC0yMjQsNiArMjI4LDggQEAgUmVjZWl2ZXJOYW1lIHJlY2VpdmVyTmFtZShN
ZXNzYWdlTmFtZSBtZXNzYWdlTmFtZSkKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6VGVz
dFdpdGhvdXRBdHRyaWJ1dGVzOwogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkluaXRpYWxpemVDb25u
ZWN0aW9uOgogICAgIGNhc2UgTWVzc2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZToKKyAgICBj
YXNlIE1lc3NhZ2VOYW1lOjpQcm9jZXNzT3V0T2ZTdHJlYW1NZXNzYWdlOgorICAgIGNhc2UgTWVz
c2FnZU5hbWU6OlNldFN0cmVhbURlc3RpbmF0aW9uSUQ6CiAgICAgY2FzZSBNZXNzYWdlTmFtZTo6
U3luY01lc3NhZ2VSZXBseToKICAgICAgICAgcmV0dXJuIFJlY2VpdmVyTmFtZTo6SVBDOwogICAg
IGNhc2UgTWVzc2FnZU5hbWU6OlRlc3RXaXRoU3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVw
bHk6CkBAIC00MDEsNiArNDA3LDEwIEBAIGJvb2wgaXNWYWxpZE1lc3NhZ2VOYW1lKE1lc3NhZ2VO
YW1lIG1lc3NhZ2VOYW1lKQogI2VuZGlmCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVz
c2FnZU5hbWU6OkxlZ2FjeVNlc3Npb25TdGF0ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKG1lc3NhZ2VOYW1lID09IElQQzo6TWVzc2FnZU5hbWU6OlByb2Nlc3NPdXRPZlN0cmVhbU1l
c3NhZ2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSBJUEM6
Ok1lc3NhZ2VOYW1lOjpTZXRTdHJlYW1EZXN0aW5hdGlvbklEKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICBpZiAobWVzc2FnZU5hbWUgPT0gSVBDOjpNZXNzYWdlTmFtZTo6U3luY01lc3NhZ2VS
ZXBseSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVz
LmggYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VOYW1lcy5oCmlu
ZGV4IGVmZWEyMzAyZDY4N2JlNGY1MjI2OTBmNzhhM2M2NGY2MzZlMzFmZDguLmEyMmJkMWNmZDdm
NzNiZTllYWIxY2JiYzBmZjBjNmVmMDZhMDY0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlTmFtZXMuaApAQCAtOTMsNiArOTMsOCBAQCBlbnVt
IGNsYXNzIE1lc3NhZ2VOYW1lIDogdWludDE2X3QgewogICAgICwgVGVzdFdpdGhvdXRBdHRyaWJ1
dGVzX1RvdWNoRXZlbnQKICAgICAsIEluaXRpYWxpemVDb25uZWN0aW9uCiAgICAgLCBMZWdhY3lT
ZXNzaW9uU3RhdGUKKyAgICAsIFByb2Nlc3NPdXRPZlN0cmVhbU1lc3NhZ2UKKyAgICAsIFNldFN0
cmVhbURlc3RpbmF0aW9uSUQKICAgICAsIFN5bmNNZXNzYWdlUmVwbHkKICAgICAsIFRlc3RXaXRo
U3VwZXJjbGFzc19UZXN0QXN5bmNNZXNzYWdlUmVwbHkKICAgICAsIFRlc3RXaXRoU3VwZXJjbGFz
c19UZXN0QXN5bmNNZXNzYWdlV2l0aENvbm5lY3Rpb25SZXBseQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW0ubWVzc2Fn
ZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmQwZjUyOGM2OWNkZWZkZGE5YzQ4Njc5MTM4YzYzOGI4YWMwY2Iz
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhTdHJlYW0ubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyNyBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
IyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRlc3RzIFN0cmVhbSByZWNlaXZlciBhdHRy
aWJ1dGUuCittZXNzYWdlcyAtPiBUZXN0V2l0aFN0cmVhbSBOb3RSZWZDb3VudGVkIFN0cmVhbSB7
CisgICAgdm9pZCBTZW5kU3RyaW5nKFN0cmluZyB1cmwpCisgICAgdm9pZCBTZW5kU3RyaW5nU3lu
Y2hyb25pemVkKFN0cmluZyB1cmwpIC0+IChpbnQ2NF90IHJldHVybikKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRo
U3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExNzBhYzg5YTI1ZjAzOTIxOWZl
NDE4MTA1YjJjMWQwNGFlMGM3ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyLm1lc3NhZ2VzLmluCkBAIC0w
LDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBU
ZXN0cyBTdHJlYW0gcmVjZWl2ZXIgYXR0cmlidXRlLgorbWVzc2FnZXMgLT4gVGVzdFdpdGhTdHJl
YW1CdWZmZXIgIHsKKyAgICB2b2lkIFNlbmRTdHJlYW1CdWZmZXIoSVBDOjpTdHJlYW1Db25uZWN0
aW9uQnVmZmVyIHN0cmVhbSkKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3Nh
Z2VSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzljOTI0MGE0ZWIxYWI1NTc0MDk2MDIyOTFkYzEy
NzMxOTg3ZjA1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVGVzdFdpdGhTdHJlYW1CdWZmZXIuaCIKKworI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNs
dWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5o
IgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXMuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3ZvaWQgVGVzdFdpdGhTdHJlYW1CdWZmZXI6OmRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpTZW5kU3Ry
ZWFtQnVmZmVyOjpuYW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2Vz
OjpUZXN0V2l0aFN0cmVhbUJ1ZmZlcjo6U2VuZFN0cmVhbUJ1ZmZlcj4oZGVjb2RlciwgdGhpcywg
JlRlc3RXaXRoU3RyZWFtQnVmZmVyOjpzZW5kU3RyZWFtQnVmZmVyKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisgICAgVU5VU0VEX1BBUkFN
KGRlY29kZXIpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
VGVzdFdpdGhTdHJlYW1CdWZmZXJNZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmEy
NGViZGQyMDBmMzM5MDQ3N2RmYWY3Y2Q4NTcxOTFiZDUzYjI4NwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1CdWZmZXJN
ZXNzYWdlcy5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisg
KiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgorI2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtQnVm
ZmVyTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBT
dHJlYW1Db25uZWN0aW9uQnVmZmVyOworfQorCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFtZXNw
YWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVy
TmFtZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5h
bWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyOworfQorCitjbGFzcyBTZW5kU3RyZWFtQnVmZmVyIHsK
K3B1YmxpYzoKKyAgICB1c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IElQQzo6U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciY+OworCisgICAgc3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFt
ZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RXaXRoU3RyZWFtQnVmZmVyX1NlbmRT
dHJlYW1CdWZmZXI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKKwor
ICAgIGV4cGxpY2l0IFNlbmRTdHJlYW1CdWZmZXIoY29uc3QgSVBDOjpTdHJlYW1Db25uZWN0aW9u
QnVmZmVyJiBzdHJlYW0pCisgICAgICAgIDogbV9hcmd1bWVudHMoc3RyZWFtKQorICAgIHsKKyAg
ICB9CisKKyAgICBjb25zdCBBcmd1bWVudHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHM7CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50
cyBtX2FyZ3VtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVy
Cit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1lc3NhZ2VzUmVwbGllcy5oIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbUJ1ZmZlck1l
c3NhZ2VzUmVwbGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZmEyYWQ3ZDUwNjMwMGYzY2NiMzkwZjE5NzI1
OWQ5MGU2OTNmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L3Rlc3RzL1Rlc3RXaXRoU3RyZWFtQnVmZmVyTWVzc2FnZXNSZXBsaWVzLmgKQEAgLTAsMCAr
MSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg
KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyAqIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyAqIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVz
c2FnZU5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworCituYW1lc3BhY2UgTWVz
c2FnZXMgeworbmFtZXNwYWNlIFRlc3RXaXRoU3RyZWFtQnVmZmVyIHsKKworCit9IC8vIG5hbWVz
cGFjZSBUZXN0V2l0aFN0cmVhbUJ1ZmZlcgorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1N
ZXNzYWdlUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9U
ZXN0V2l0aFN0cmVhbU1lc3NhZ2VSZWNlaXZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM5ODg1NWFkNTZl
OTUxOTk3YzlkMmFiM2Y4ODgwOTRjODg5MjMyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlUmVjZWl2ZXIu
Y3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVGVzdFdpdGhTdHJlYW0uaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCisjaW5jbHVkZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIK
KyNpbmNsdWRlICJUZXN0V2l0aFN0cmVhbU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFRlc3RXaXRoU3RyZWFt
OjpkaWRSZWNlaXZlU3RyZWFtTWVzc2FnZShJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGRlY29kZXIu
bWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6VGVzdFdpdGhTdHJlYW06OlNlbmRTdHJpbmc6Om5h
bWUoKSkgeworICAgICAgICBJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OlRlc3RXaXRoU3Ry
ZWFtOjpTZW5kU3RyaW5nPihkZWNvZGVyLCB0aGlzLCAmVGVzdFdpdGhTdHJlYW06OnNlbmRTdHJp
bmcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1l
KCkgPT0gTWVzc2FnZXM6OlRlc3RXaXRoU3RyZWFtOjpTZW5kU3RyaW5nU3luY2hyb25pemVkOjpu
YW1lKCkpIHsKKyAgICAgICAgSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpUZXN0V2l0aFN0
cmVhbTo6U2VuZFN0cmluZ1N5bmNocm9uaXplZD4oZGVjb2RlciwgdGhpcywgJlRlc3RXaXRoU3Ry
ZWFtOjpzZW5kU3RyaW5nU3luY2hyb25pemVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBVTlVTRURfUEFSQU0oZGVjb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJl
YW1NZXNzYWdlcy5oIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9UZXN0V2l0
aFN0cmVhbU1lc3NhZ2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBiZmViYWIyMzcyYzFmNjYwNWM1NTg5NDU5
MzhiZjFlNGU3YWFmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlcy5oCkBAIC0wLDAgKzEsODkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
KyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lc3NhZ2VOYW1lcy5oIgor
I2luY2x1ZGUgIlRlc3RXaXRoU3RyZWFtTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworCituYW1lc3BhY2UgTWVzc2FnZXMgeworbmFt
ZXNwYWNlIFRlc3RXaXRoU3RyZWFtIHsKKworc3RhdGljIGlubGluZSBJUEM6OlJlY2VpdmVyTmFt
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKCkKK3sKKyAgICByZXR1cm4gSVBDOjpSZWNlaXZlck5hbWU6
OlRlc3RXaXRoU3RyZWFtOworfQorCitjbGFzcyBTZW5kU3RyaW5nIHsKK3B1YmxpYzoKKyAgICB1
c2luZyBBcmd1bWVudHMgPSBzdGQ6OnR1cGxlPGNvbnN0IFN0cmluZyY+OworCisgICAgc3RhdGlj
IElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6OlRlc3RX
aXRoU3RyZWFtX1NlbmRTdHJpbmc7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBpc1N5bmMgPSBm
YWxzZTsKKworICAgIGV4cGxpY2l0IFNlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmwpCisgICAg
ICAgIDogbV9hcmd1bWVudHModXJsKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBBcmd1bWVu
dHMmIGFyZ3VtZW50cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hcmd1bWVudHM7
CisgICAgfQorCitwcml2YXRlOgorICAgIEFyZ3VtZW50cyBtX2FyZ3VtZW50czsKK307CisKK2Ns
YXNzIFNlbmRTdHJpbmdTeW5jaHJvbml6ZWQgeworcHVibGljOgorICAgIHVzaW5nIEFyZ3VtZW50
cyA9IHN0ZDo6dHVwbGU8Y29uc3QgU3RyaW5nJj47CisKKyAgICBzdGF0aWMgSVBDOjpNZXNzYWdl
TmFtZSBuYW1lKCkgeyByZXR1cm4gSVBDOjpNZXNzYWdlTmFtZTo6VGVzdFdpdGhTdHJlYW1fU2Vu
ZFN0cmluZ1N5bmNocm9uaXplZDsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIGlzU3luYyA9IHRy
dWU7CisKKyAgICB1c2luZyBSZXBseSA9IHN0ZDo6dHVwbGU8aW50NjRfdCY+OworICAgIHVzaW5n
IFJlcGx5QXJndW1lbnRzID0gc3RkOjp0dXBsZTxpbnQ2NF90PjsKKyAgICBleHBsaWNpdCBTZW5k
U3RyaW5nU3luY2hyb25pemVkKGNvbnN0IFN0cmluZyYgdXJsKQorICAgICAgICA6IG1fYXJndW1l
bnRzKHVybCkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgQXJndW1lbnRzJiBhcmd1bWVudHMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBBcmd1bWVudHMgbV9hcmd1bWVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2l0aFN0cmVhbQorfSAvLyBuYW1lc3BhY2UgTWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1NZXNzYWdlc1JlcGxp
ZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvVGVzdFdpdGhTdHJlYW1N
ZXNzYWdlc1JlcGxpZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmM1YTA3OGRlMDFlYzE0MzBmODk0ZjIwY2I5
YzJmOTE1NWU3Y2FiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC90ZXN0cy9UZXN0V2l0aFN0cmVhbU1lc3NhZ2VzUmVwbGllcy5oCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VO
YW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKworbmFtZXNwYWNlIE1lc3NhZ2Vz
IHsKK25hbWVzcGFjZSBUZXN0V2l0aFN0cmVhbSB7CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdp
dGhTdHJlYW0KK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBmOWJhNWRj
NzgyNGIxZTViMDNlNTNmOThiN2E3ZjhlNGRlZjIxYzY0Li40NTg5MjZmMjViZDZkNTE2MmE3NTlj
ZTBjNzNmOGVhMWViMTdkNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE1MCw2ICsxNTAsMTAgQEAgUGxh
dGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlck1hcC5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMv
TWVzc2FnZVNlbmRlci5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5j
cHAgQG5vLXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgQG5v
LXVuaWZ5CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgQG5vLXVuaWZ5
CitQbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgQG5vLXVuaWZ5CitQ
bGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBQbGF0Zm9y
bS9JUEMvU3RyaW5nUmVmZXJlbmNlLmNwcCBAbm8tdW5pZnkKIAogUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggYzMzMDc4MjViMjAwODZkZWQ0
Yzg2YzY0ODhjZTVkZDU3ZWMwYzM1OC4uODk1MjA4YzNiYzIyNmQ2ZmIxMjg2MWRhNDM3Y2RhMzgx
ZjQ4ZDYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA2Y2Q3OGExZThjNTgzYjYxM2Jm
NTI1NWIyOGQ0ZDc4YzQwYmM0M2I3Li5lNzk0YTMzZmE4M2QyYWE4ODY5MDVkYTliYzU5ZmZjMGQ1
MzAzYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVz
LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVm
ZXJlbmNlLmgiCisjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFt
ZXRlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5oCmluZGV4IDdhMzhkZTU1NjhjZDQ3ODc5NWNlYTU2YzMxMjI2MjBkNDVjNjU3M2MuLmZkNTFl
NWI5YjEyOGMyNzhmMTU2OWE3NThiODYwOTAzYTA2ZDM5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiUG9s
aWN5RGVjaXNpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDQwZTU5ODkwZTVjMmZkYWVmMjNjNjI0YzlmZGVkODYxOGJjM2IwYzEu
LjM4ZDAwMzIwZjU0NTAzMzJhZmRjYTkwN2RhYTUxMmJmODJmOTZiZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMzNSw2ICsxMzM1
LDE2IEBACiAJCTdCNDgzRjIwMjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0Yx
QzI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9OwogCQk3QjQ4
M0YyMTI1Q0REQTlDMDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjQ4M0YxRDI1Q0REQTlC
MDAxMjA0ODYgLyogTWVzc2FnZVJlY2VpdmVRdWV1ZU1hcC5jcHAgKi87IH07CiAJCTdCNDgzRjIy
MjVDRERBOUMwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I0ODNGMUUyNUNEREE5QjAwMTIwNDg2
IC8qIE1lc3NhZ2VSZWNlaXZlUXVldWVzLmggKi87IH07CisJCTdCNzMxMjNBMjVDQzg1MjUwMDNC
Mjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMTI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5oICovOyB9OworCQk3QjczMTIzQjI1Q0M4NTI1MDAzQjI3OTYgLyog
U3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMjI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZS5jcHAgKi87IH07CisJCTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAv
KiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjczMTIzMzI1Q0M4NTIzMDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbi5oICovOyB9OworCQk3QjczMTIzRDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1
ZmZlci5jcHAgKi87IH07CisJCTdCNzMxMjNFMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25u
ZWN0aW9uV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjczMTIzNTI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtR
dWV1ZS5oICovOyB9OworCQk3QjczMTIzRjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5j
cHAgKi87IH07CisJCTdCNzMxMjQwMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCNzMxMjM3MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCAq
LzsgfTsKKwkJN0I3MzEyNDEyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzMx
MjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi87IH07CisJ
CTdCNzMxMjQyMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3MzEyMzkyNUND
ODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi87IH07CisJCTdCQUIx
MTEwMjVERDAyQjMwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkFCMTEwRjI1
REQwMkIyMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oICovOyB9
OwogCQk3QzA2NUYyQzFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0
YVR5cGVzLmggKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbklu
Zm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMUJBMzNFMUE0
QTBFNjAwMDQzRTI0OSAvKiBBUElEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzFCQTMzQzFBNEEwRTYwMDA0M0UyNDkgLyogQVBJRGlj
dGlvbmFyeS5oICovOyB9OwpAQCAtNDU0NSw2ICs0NTU1LDE1IEBACiAJCTdCNDgzRjFEMjVDRERB
OUIwMDEyMDQ4NiAvKiBNZXNzYWdlUmVjZWl2ZVF1ZXVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VSZWNlaXZlUXVldWVNYXAuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjQ4M0YxRTI1Q0REQTlCMDAxMjA0ODYgLyogTWVzc2Fn
ZVJlY2VpdmVRdWV1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVzc2Fn
ZVJlY2VpdmVRdWV1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I2NEMwQjYy
NTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0I3MzEyMzEyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25C
dWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjczMTIzMjI1Q0M4NTIz
MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzMyNUNDODUyMzAwM0IyNzk2IC8qIFN0
cmVhbUNsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjczMTIzNDI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1Db25uZWN0aW9uQnVmZmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEyMzUyNUNDODUyNDAwM0Iy
Nzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QjczMTIzNjI1Q0M4NTI0MDAzQjI3OTYgLyogU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1D
bGllbnRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I3MzEy
MzcyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAv
KiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0I3MzEyMzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY1MjU0QUZERUEwMDZFRUI4
QyAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QjkwNDE2NjI1NEFGREVCMDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTA0MTY3MjU0QUZFMTcwMDZFRUI4QyAv
KiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00NTUyLDYgKzQ1NzEsNyBAQAogCQk3QjkwNDE2OTI1NEFGRUE3MDA2RUVCOEMgLyog
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkwNDE2
QTI1NEFGRUE3MDA2RUVCOEMgLyogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0I5MDQxNkQyNTUwMTA4QzAwNkVFQjhDIC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
RnVuY3Rpb25zR2VuZXJhdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
QUIxMTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JFNzI2NTcyNTc0
RjY3MjAwRTg1RDk4IC8qIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5l
cmF0ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
RTcyNjY4MjU3NjgwRUYwMEU4NUQ5OCAvKiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTENvY29hLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMQ29jb2EuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyog
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTg3LDEwICs3MDA3LDIwIEBACiAJCQkJ
MUEzRUVEMEQxNjFBNTM1MzAwQUVCNEY1IC8qIE1lc3NhZ2VSZWNlaXZlck1hcC5oICovLAogCQkJ
CTFBQUIwMzc3MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmNwcCAqLywKIAkJCQkx
QUFCMDM3ODE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oICovLAorCQkJCTdCQUIx
MTBGMjVERDAyQjIwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmgg
Ki8sCiAJCQkJMkRDMTgwMDFEOTBEREQxNUZDNjk5MUE5IC8qIFNoYXJlZEJ1ZmZlckNvcHkuY3Bw
ICovLAogCQkJCTVDQzVEQjkxMjE0ODhFMTYwMDZDQjhBOCAvKiBTaGFyZWRCdWZmZXJDb3B5Lmgg
Ki8sCiAJCQkJMkRDMTg1NUVEQkZCODUwQkEwQjZEMDZEIC8qIFNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuY3BwICovLAogCQkJCTJEQzE4ODFBQ0JDQUI1RDU3QzVDNkVGMCAvKiBTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmggKi8sCisJCQkJN0I3MzEyMzYyNUNDODUyNDAwM0IyNzk2IC8qIFN0
cmVhbUNsaWVudENvbm5lY3Rpb24uY3BwICovLAorCQkJCTdCNzMxMjMzMjVDQzg1MjMwMDNCMjc5
NiAvKiBTdHJlYW1DbGllbnRDb25uZWN0aW9uLmggKi8sCisJCQkJN0I3MzEyMzQyNUNDODUyNDAw
M0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwICovLAorCQkJCTdCNzMxMjMxMjVD
Qzg1MjMwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyLmggKi8sCisJCQkJN0I3MzEy
MzkyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggKi8sCisJCQkJ
N0I3MzEyMzIyNUNDODUyMzAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuY3Bw
ICovLAorCQkJCTdCNzMxMjM1MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJlYW1Db25uZWN0aW9uV29y
a1F1ZXVlLmggKi8sCisJCQkJN0I3MzEyMzcyNUNDODUyNDAwM0IyNzk2IC8qIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTdCNzMxMjM4MjVDQzg1MjQwMDNCMjc5NiAvKiBTdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmggKi8sCiAJCQkJMUFFMDBENjkxODMyN0MxMjAwMDg3REQ3IC8q
IFN0cmluZ1JlZmVyZW5jZS5jcHAgKi8sCiAJCQkJMUFFMDBENkExODMyN0MxMjAwMDg3REQ3IC8q
IFN0cmluZ1JlZmVyZW5jZS5oICovLAogCQkJKTsKQEAgLTEyMDE1LDYgKzEyMDQ1LDcgQEAKIAkJ
CQlCQzJEMDIxNzEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUI0QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94
RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMg
LyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0JBQjExMTAyNUREMDJCMzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU0RDA0MjFGMUQ3MkQwMDdFM0MzNiAvKiBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzFDMUMxOEM1NzExOTAwREJCOEQ0
IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBpbiBIZWFkZXJzICov
LApAQCAtMTIwNjQsNiArMTIwOTUsMTEgQEAKIAkJCQk5MzZCMDU5ODIzMDM5MDk3MDAyRkMwNkIg
LyogU3RvcmFnZU1hbmFnZXJTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNjhFRURGMjMwM0E5
RUQwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NjVGNEUwNjIzMEIyRTk1MDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzMxMjNDMjVDQzg1MjUwMDNCMjc5NiAvKiBTdHJl
YW1DbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjczMTIzQTI1Q0M4NTI1
MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
N0I3MzEyNDIyNUNDODUyNTAwM0IyNzk2IC8qIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3QjczMTIzRTI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I3MzEyNDEyNUNDODUyNTAwM0Iy
Nzk2IC8qIFN0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTAw
RDZDMTgzMjdDMTIwMDA4N0RENyAvKiBTdHJpbmdSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTI5NkJEODVEMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3RkQzMTg2MjJCMzUxNkMwMDhEMEU4QiAvKiBTdWJGcmFtZVNPQXV0aG9y
aXphdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTM4OTAsNiArMTM5MjYsMTAgQEAK
IAkJCQk5M0Q2Qjc4MjI1NENDQ0Y0MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzMzRERUQxNkRFOEY4ODAw
NkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzNjhFRURFMjMwM0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTIzRjI1Q0M4NTI1MDAzQjI3
OTYgLyogU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3Qjcz
MTIzRDI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk3QjczMTIzQjI1Q0M4NTI1MDAzQjI3OTYgLyogU3RyZWFtQ29ubmVjdGlv
bldvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjczMTI0MDI1Q0M4NTI1MDAzQjI3
OTYgLyogU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDky
QTc4MzIxMkI2QTcxMDBGNDkzRkQgLyogU3RyaW5nUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEMTFCNzUxMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMS1tbS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTJEMTFCNzUyMjEyNkEyODIwMDZGODg3OCAvKiBVbmlmaWVkU291
cmNlMS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkuY3BwCmluZGV4IGMwNTI5MjFlMDE3ZThjM2M2MjE0ODRlMTM5N2I4M2IzZmJmZmQxYjAu
LmY4OWVmYzQyNjAyY2E0YTc0M2U0MjZiNjdjYjhhNGI5MTI4NzQwMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApAQCAtNDksMTMgKzQ5LDE2IEBAIFJlZlB0
cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5PiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpjcmVhdGUoY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKSwgYXR0cmlidXRlcywgcmVuZGVyaW5nQmFja2VuZCkpOwogfQogCitzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBkZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjE7CisKIFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkoR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb25zdCBHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyIHJl
bmRlcmluZ0JhY2tlbmQpCiAgICAgOiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZShh
dHRyaWJ1dGVzKQogICAgICwgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbigmZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24pCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29u
bmVjdGlvbigpLCBkZWZhdWx0U3RyZWFtU2l6ZSkKIHsKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0
aW9uLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3Nh
Z2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Ci0gICAgY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKGF0dHJpYnV0ZXMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCByZW5kZXJpbmdC
YWNrZW5kKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHkpOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCwgbV9zdHJlYW1D
b25uZWN0aW9uLnN0cmVhbUJ1ZmZlcigpKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1l
c3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCiBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5Ojp+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSgpCkBAIC0xODQsNyAr
MTg3LDcgQEAgR0NHTGVudW0gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Z2V0RXJyb3Io
KQogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZXJyb3JXaGVuQ29udGV4dElzTG9zdCwgTk9f
RVJST1IpOwogfQogCi12b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0
ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcm
JiByZXF1ZXN0ZWRFeHRlbnNpb25zKQordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
Ojp3YXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUmJiBzZW1hcGhvcmUs
IFN0cmluZyYmIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyYmIHJlcXVlc3RlZEV4dGVuc2lv
bnMpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkz
LDYgKzE5Niw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6d2FzQ3JlYXRl
ZChib29sIGRpZFN1Y2NlZWQsIFN0cmluZyYmIGF2YWlsYWJsCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgQVNTRVJUKCFtX2RpZEluaXRpYWxpemUpOworICAgIG1fc3RyZWFtQ29ubmVjdGlv
bi5zZXRXYWtlVXBTZW1hcGhvcmUoV1RGTW92ZShzZW1hcGhvcmUpKTsKICAgICBtX2RpZEluaXRp
YWxpemUgPSB0cnVlOwogICAgIGluaXRpYWxpemUoYXZhaWxhYmxlRXh0ZW5zaW9ucywgcmVxdWVz
dGVkRXh0ZW5zaW9ucyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
CmluZGV4IDVjZTU3Njc2YjA5MDVhNjU3NDA0MmE5ZjU0MzhhNDcxZmI3ZWY5OTAuLjMzMmI0NDA1
ZmI2Yzc0MGIzZWQ0ZGJhNTg1Y2JhZDIxYjY0MDVhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oCkBAIC0yOSwxMSArMjksMTIgQEAKIAogI2luY2x1ZGUgIkdQVVBy
b2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiSVBDU2VtYXBob3JlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCi0jaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHku
aCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlN0
cmVhbUNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5oPgpAQCAtMzM1LDE5ICszMzYsMTgg
QEAgcHJvdGVjdGVkOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKICAgICB7Ci0gICAgICAgIGNvbm5lY3Rpb24o
KS5zZW5kKFdURk1vdmUobWVzc2FnZSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRv
VUludDY0KCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBtX3N0
cmVhbUNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBtX2dyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllciwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKICAgICB9CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KICAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3lu
Y1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBjb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNz
YWdlKSwgV1RGTW92ZShyZXBseSksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUlu
dDY0KCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgICAgIHJldHVybiBtX3N0cmVhbUNvbm5l
Y3Rpb24uc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIG1fZ3JhcGhp
Y3NDb250ZXh0R0xJZGVudGlmaWVyLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwogICAgIH0KICAgICBJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2dwdVByb2Nlc3ND
b25uZWN0aW9uLT5jb25uZWN0aW9uKCk7IH0KIAogcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlcyB0
byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIHdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJp
bmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25zKTsK
KyAgICB2b2lkIHdhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBJUEM6OlNlbWFwaG9yZSYmLCBT
dHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRFeHRlbnNpb25z
KTsKICAgICB2b2lkIHdhc0xvc3QoKTsKICAgICB2b2lkIHdhc0NoYW5nZWQoKTsKIApAQCAtMzYx
LDggKzM2MSw4IEBAIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb247CiAgICAgYm9vbCBtX2RpZEluaXRpYWxpemUgeyBmYWxzZSB9OwogICAg
IEdDR0xlbnVtIG1fZXJyb3JXaGVuQ29udGV4dElzTG9zdCA9IE5PX0VSUk9SOwotCiAgICAgR3Jh
cGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIHsg
R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgSVBDOjpTdHJl
YW1DbGllbnRDb25uZWN0aW9uIG1fc3RyZWFtQ29ubmVjdGlvbjsKIH07CiAKIC8vIFRoZSBHQ0dM
IHR5cGVzIG1hcCB0byBmb2xsb3dpbmcgV2ViS2l0IElQQyB0eXBlcy4gVGhlIGxpc3QgaXMgdXNl
ZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhN2M2NDEyYWM5NDZlMjU4
Y2UwMTM4YmM0N2JjMzg2MjE5NTAyMWQ3Li5mNDNlYzBhMmVhYTM4NGU0ZWRlOGRkNDQwZDllZmUw
MjhhY2I3YmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoV0VCR0wpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHkgTm90UmVmQ291bnRlZCB7Ci0gICAgdm9pZCBXYXNDcmVhdGVkKGJvb2wgZGlkU3VjY2Vl
ZCwgU3RyaW5nIGF2YWlsYWJsZUV4dGVuc2lvbnMsIFN0cmluZyByZXF1ZXN0YWJsZUV4dGVuc2lv
bnMpCisgICAgdm9pZCBXYXNDcmVhdGVkKGJvb2wgZGlkU3VjY2VlZCwgSVBDOjpTZW1hcGhvcmUg
c3RyZWFtV2FrZVVwU2VtYXBob3JlLCBTdHJpbmcgYXZhaWxhYmxlRXh0ZW5zaW9ucywgU3RyaW5n
IHJlcXVlc3RhYmxlRXh0ZW5zaW9ucykKICAgICB2b2lkIFdhc0xvc3QoKQogICAgIHZvaWQgV2Fz
Q2hhbmdlZCgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaApp
bmRleCA3YWFkN2RhMjA3MGRlODNkMTRjNzFkZDk4MjQ3NGFhZjEwNmE3ZGI1Li5mMTM0MWRjZDI3
NmQwYzEwMWU0NGJkZGExN2NlNDBiOGEzY2IzNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDTmV0d29yay5oCmluZGV4IGJiZTdmYzI2Y2Yz
MjM0NjY5NWU2MWZkMDFkNmEwYjIzMmRlMGQxODguLmE2MTFkYWJmNGViYjU2ZTdhNDI1OTRkZDdi
ZDNiYjBjODFhNWM4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENOZXR3b3JrLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ05ldHdvcmsuaApAQCAtMjYsNiArMjYsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTGli
V2ViUlRDU29ja2V0RmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYk1ETlNSZWdpc3Rlci5oIgpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNmNzE4NDM5
YzIwZjI3M2RjMzA0NDM1OTY2YzI2Nzk1NzJjYWVjZGIuLmJkMGI4NmIxMzQ1MzY4ZGVkNTkxYTg5
MmJjOTNhZGNjMTYyY2RiNTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wMi0wNSAgS2ltbW8gS2lubnVuZW4g
IDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIEdQVSBwcm9jZXNzIElQQyBz
aG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIGFzeW5jaHJvbm91cyBtZXNzYWdlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NjQxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83MjM0MDY1MT4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBH
YXJlbi4KKworICAgICAgICBNYXJrIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIG1lc3NhZ2UgcmVj
ZWl2ZXIgYXMgIlN0cmVhbSIsCisgICAgICAgIGEgbmV3IHZhcmlhbnQgb2YgcmVjZWl2ZXIuCisK
KyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIwMjEtMDItMjAgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyNzMxMTUuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRl
LWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKaW5kZXggZmU4
ZmE5YWU1MTc0MGJkYTYzZjUxNTNmZGE4ZjE2ZDdlNjJiNWZiZi4uMGZhZjJjZGZhMDlmNDc3YmZj
ZDVlNDIxNjgxOGMwY2VkOTVkZWMyNSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbApAQCAt
ODksNyArODksNyBAQCBjb250ZXh0X21lc3NhZ2VzX3RlbXBsYXRlID0gKAogICAgIHRlbXBsYXRl
X3ByZWFtYmxlCiAgICAgKyAiIiIjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoV0VC
R0wpCiAKLW1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQg
e3sKK21lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3Ry
ZWFtIHt7CiAgICAgdm9pZCBSZXNoYXBlKGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KQog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgUHJlcGFyZUZvckRpc3BsYXkoKSAtPiAoTWFj
aFNlbmRSaWdodCBkaXNwbGF5QnVmZmVyKSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFjNjI4OGJmMzE1
M2EyMDk4MDMzMGNkYzNlMzE2MzNiZTBhYWQ3MjIuLmFkOTZhNjcyYjk5NjIxYjQ0ZWI4Y2FkZTI3
MDc4OGZjM2IwMjNjYjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMi0xNyAgS2ltbW8g
S2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdMIEdQVSBwcm9j
ZXNzIElQQyBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIGFzeW5jaHJvbm91cyBtZXNzYWdl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NjQx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MjM0MDY1MT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBHZW9mZiBHYXJlbi4KKworICAgICAgICBNYXJrIGZldyB0ZXN0cyBhcyBub3QgdGltaW5nIG91
dCBub3cgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm90IHNvIHNsb3cuCisKKyAgICAgICAg
KiBncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIxLTAyLTE5ICBSb2IgQnVpcyAg
PHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBhc3BlY3QtcmF0aW8gb24gZmxl
eGJveCBpdGVtcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ZjUwZmRhZDZmOWY3ZTcxNjU4ZmI3YzMyMzBhNThkOTRmNTEzM2E0Ny4uYTQ1NDA2NDkxNjgzNTVm
NDg3NTIwMWRjNWFmMzhkZTZlMDY1YzEwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXBy
b2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zCkBAIC0zNSw4ICszNSwxMiBAQCBmYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJl
LWFjdGl2ZS1iaW5kLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvY2FudmFzL2NhbnZhcy1ibGVuZGlu
Zy1jb2xvci1vdmVyLWltYWdlLmh0bWwgWyBUaW1lb3V0IF0KIGZhc3QvY2FudmFzL3dlYmdsL2Nv
bnRleHQtdXBkYXRlLW9uLWRpc3BsYXktY29uZmlndXJhdGlvbi5odG1sIFsgVGltZW91dCBdCiBm
YXN0L2NhbnZhcy93ZWJnbC90ZXhJbWFnZTJELXZpZGVvLWZsaXBZLWZhbHNlLmh0bWwgWyBUaW1l
b3V0IF0KLWZhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgVGlt
ZW91dCBdCiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbGNvbnRleHRjaGFuZ2VkZXZlbnQuaHRtbCBb
IFRpbWVvdXQgXQorCitmYXN0L2NhbnZhcy93ZWJnbC91bmlmb3JtLXNhbXBsZXJzLXRlc3QuaHRt
bCBbIFNsb3cgXQord2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvYXR0cmlicy9nbC12ZXJ0ZXhhdHRy
aWJwb2ludGVyLmh0bWwgWyBTbG93IF0KK3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi9yZW5kZXJp
bmcvYmxpdGZyYW1lYnVmZmVyLWZpbHRlci1vdXRvZmJvdW5kcy5odG1sIFsgU2xvdyBdCisKIGZh
c3QvaW1hZ2VzL2FuaW1hdGVkLWltYWdlLW1wNC1jcmFzaC5odG1sIFsgVGltZW91dCBdCiBmYXN0
L2ltYWdlcy9hbmltYXRlZC1pbWFnZS1tcDQuaHRtbCBbIFRpbWVvdXQgXQogCkBAIC0xODAsNyAr
MTg0LDYgQEAgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1m
bG9hdC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0K
IHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9h
dC13aXRoLWNhbnZhcy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9l
eHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVy
ZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvbWFueS1kcmF3LWNhbGxzLmh0
bWwgWyBUaW1lb3V0IF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3N0YXRlL2dsLW9iamVjdC1n
ZXQtY2FsbHMuaHRtbCBbIFRpbWVvdXQgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVy
ZXMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1jYW52YXMtcmdiNTY1Lmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtY2FudmFzLXJnYmE0NDQ0Lmh0bWwgWyBGYWlsdXJlIF0KQEAgLTE5
NCwxMyArMTk3LDEyIEBAIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleC1pbWFn
ZS13ZWJnbC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJl
cy90ZXhwYXJhbWV0ZXItdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3Jt
YW5jZS90ZXh0dXJlcy90ZXh0dXJlLWFjdGl2ZS1iaW5kLTIuaHRtbCBbIEZhaWx1cmUgXQogd2Vi
Z2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1hY3RpdmUtYmluZC5odG1sIFsg
RmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS91bmlmb3Jtcy91bmlmb3JtLXNhbXBs
ZXJzLXRlc3QuaHRtbCBbIFRpbWVvdXQgXQord2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdW5pZm9y
bXMvdW5pZm9ybS1zYW1wbGVycy10ZXN0Lmh0bWwgWyBTbG93IF0KIHdlYmdsLzIuMC4wL2NvbmZv
cm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQtd2l0aC1jYW52YXMuaHRtbCBbIEZh
aWx1cmUgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1m
bG9hdC13aXRoLXZpZGVvLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLWNhbnZhcy5odG1sIFsgRmFp
bHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhh
bGYtZmxvYXQtd2l0aC12aWRlby5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3Jt
YW5jZS9yZWFkaW5nL3JlYWQtcGl4ZWxzLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQotd2ViZ2wvMi4w
LjAvY29uZm9ybWFuY2UvcmVuZGVyaW5nL21hbnktZHJhdy1jYWxscy5odG1sIFsgVGltZW91dCBd
CiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS9zdGF0ZS9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwg
WyBUaW1lb3V0IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgt
MmQtcmdiLXJnYi11bnNpZ25lZF9ieXRlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL2NhbnZhcy90ZXgtMmQtcmdiLXJnYi11bnNpZ25lZF9zaG9ydF81
XzZfNS5odG1sIFsgRmFpbHVyZSBdCkBAIC0yMjAsNyArMjIyLDcgQEAgd2ViZ2wvMi4wLjAvY29u
Zm9ybWFuY2UvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJnYi1yZ2ItdW5zaWduZWRfc2hvcnRfNV82
XzUuaHRtbAogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvdmlkZW8vdGV4LTJkLXJn
YmEtcmdiYS11bnNpZ25lZF9ieXRlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzIuMC4wL2NvbmZv
cm1hbmNlL3RleHR1cmVzL3ZpZGVvL3RleC0yZC1yZ2JhLXJnYmEtdW5zaWduZWRfc2hvcnRfNF80
XzRfNC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZS90ZXh0dXJlcy92
aWRlby90ZXgtMmQtcmdiYS1yZ2JhLXVuc2lnbmVkX3Nob3J0XzVfNV81XzEuaHRtbCBbIEZhaWx1
cmUgXQotd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdW5pZm9ybXMvdW5pZm9ybS1zYW1wbGVycy10
ZXN0Lmh0bWwgWyBUaW1lb3V0IF0KK3dlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3VuaWZvcm1zL3Vu
aWZvcm0tc2FtcGxlcnMtdGVzdC5odG1sIFsgU2xvdyBdCiB3ZWJnbC8yLjAuMC9jb25mb3JtYW5j
ZTIvcmVhZGluZy9yZWFkLXBpeGVscy1wYWNrLXBhcmFtZXRlcnMuaHRtbCBbIEZhaWx1cmUgXQog
d2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3N0YXRlL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbCBb
IFRpbWVvdXQgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UyL3RleHR1cmVzL2NhbnZhcy90ZXgt
MmQtcjExZl9nMTFmX2IxMGYtcmdiLWZsb2F0Lmh0bWwgWyBGYWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>